none
MACRO - Création d'un nuage de points avec des couleurs differentes RRS feed

  • Question

  • Bonjour,

    En fait je viens vers vous pour que vous m'aidiez. Comme vous pouvez le voir sur les liens joints.

     

    [URL="http://www.hebergementimages.com/image-807dc640c3b91e32544a943a44d20fd9_MAcro.JPG.html"][IMG]http://www.hebergementimages.com/images/807dc640c3b91e32544a943a44d20fd9_MAcro.JPG[/IMG][/URL]

     

    [URL="http://www.hebergementimages.com/image-5f9b7930d0a771861c54462df1dff7f0_MAcro1.JPG.html"][IMG]http://www.hebergementimages.com/images/5f9b7930d0a771861c54462df1dff7f0_MAcro1.JPG[/IMG][/URL]


    Sur la feuil2 du fichier, j'ai deux colonnes:

    - la colonne A qui contient des noms
    - la colonne B qui contient des valeurs

    En fait je veux créer 2 graphes (en nuages de points) à afficher sur la feuil3 correspondants aux valeurs de la colonne B. Par exemple pour le premier graphe, on considère les valeurs comprises entre la ligne 4 et la ligne 12, le second les valeurs entre la la ligne 14 et la ligne 22.
    Mais il ya une conditionnelle pour ce nuage de points: les points associés à la valeur "toto" de la colonne A doivent etre affichés en rouge et les points associés à la valeur "tata" de la colonne A doivent etre affichés en bleu.

    Je veux que dès que je cliques sur le bouton "Importer" de la feuille 'import' que macro me trace les deux graphes.

    L'axe des abscisses de chaque nuage de points sera juste de la forme 1, 2, 3, 4....etc

    Je suis débutant en VBA et j'ai un mal fou à y arriver.

    Merci d'avance.

    jeudi 20 janvier 2011 09:06

Réponses

  • Bonjour,

     

    Tout d’abord, vous devez appliquer un « Sort » sur les données pour les grouper : premièrement les « tata » et ensuite les « toto ».

     

    Ensuite, démarrez l’enregistrement d’une macro et commencez à créer le graphe de façon manuelle. Ajoutez deux séries de données, les « tata » et les « toto », pour avoir deux couleurs différents de points. Quand vous avez fini la création du graphique, fermez l’enregistrement de la macro et vérifiez le code VBA généré. Vous devriez avoir quelque chose comme ça :

     

    Sub Macro1()
    '
    ' Macro1 Macro
    '
    '
      ActiveSheet.Shapes.AddChart.Select
      ActiveChart.ChartType = xlXYScatter
      ActiveChart.SeriesCollection.NewSeries
      ActiveChart.SeriesCollection(1).Name = "=""s1"""
      ActiveChart.SeriesCollection(1).XValues = "=Sheet1!$A$3:$A$8"
      ActiveChart.SeriesCollection(1).Values = "=Sheet1!$B$3:$B$8"
      ActiveChart.SeriesCollection.NewSeries
      ActiveChart.SeriesCollection(2).Name = "=""s2"""
      ActiveChart.SeriesCollection(2).XValues = "=Sheet1!$A$9:$A$14"
      ActiveChart.SeriesCollection(2).Values = "=Sheet1!$B$9:$B$14"
      ActiveChart.SeriesCollection(2).Values
    End Sub
    

     

     

    Vous pouvez utiliser ce code dans la méthode lancée par votre bouton, pour générer le graphe automatiquement.

     

    Si votre projet demande que vos données ne soient pas triées, ou si le nombre de points est variable, ça implique une procédure plus détaillée (vérifier combien des valeurs existent sur la page pour « toto » et pour « tata », copier les données dans un autre endroit dans la page, les trier et créer le graphe en tenant compte de nombre de « totos » et de « tatas ».

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, SharePoint, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

     
    Suivez MSDN sur Twitter 

    • Marqué comme réponse Alex Petrescu mercredi 26 janvier 2011 15:38
    jeudi 20 janvier 2011 12:08

Toutes les réponses

  • Bonjour,

     

    Tout d’abord, vous devez appliquer un « Sort » sur les données pour les grouper : premièrement les « tata » et ensuite les « toto ».

     

    Ensuite, démarrez l’enregistrement d’une macro et commencez à créer le graphe de façon manuelle. Ajoutez deux séries de données, les « tata » et les « toto », pour avoir deux couleurs différents de points. Quand vous avez fini la création du graphique, fermez l’enregistrement de la macro et vérifiez le code VBA généré. Vous devriez avoir quelque chose comme ça :

     

    Sub Macro1()
    '
    ' Macro1 Macro
    '
    '
      ActiveSheet.Shapes.AddChart.Select
      ActiveChart.ChartType = xlXYScatter
      ActiveChart.SeriesCollection.NewSeries
      ActiveChart.SeriesCollection(1).Name = "=""s1"""
      ActiveChart.SeriesCollection(1).XValues = "=Sheet1!$A$3:$A$8"
      ActiveChart.SeriesCollection(1).Values = "=Sheet1!$B$3:$B$8"
      ActiveChart.SeriesCollection.NewSeries
      ActiveChart.SeriesCollection(2).Name = "=""s2"""
      ActiveChart.SeriesCollection(2).XValues = "=Sheet1!$A$9:$A$14"
      ActiveChart.SeriesCollection(2).Values = "=Sheet1!$B$9:$B$14"
      ActiveChart.SeriesCollection(2).Values
    End Sub
    

     

     

    Vous pouvez utiliser ce code dans la méthode lancée par votre bouton, pour générer le graphe automatiquement.

     

    Si votre projet demande que vos données ne soient pas triées, ou si le nombre de points est variable, ça implique une procédure plus détaillée (vérifier combien des valeurs existent sur la page pour « toto » et pour « tata », copier les données dans un autre endroit dans la page, les trier et créer le graphe en tenant compte de nombre de « totos » et de « tatas ».

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, SharePoint, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

     
    Suivez MSDN sur Twitter 

    • Marqué comme réponse Alex Petrescu mercredi 26 janvier 2011 15:38
    jeudi 20 janvier 2011 12:08
  • Est ce que vous pouvez me donner le code pour faire le "Sort" que vous avez proposez ou m'expliquer l'intérêt si possible pour que je comprenne.

     

    Merci

    jeudi 20 janvier 2011 12:47
  • Bonjour,

     

    Voici le code pour le tri :

    Range("A1:B11").Select
      ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
      ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A1"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Range("A1:B11")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
      End With
    

     

     

     

    Je vous rappelle que si vous avez des problèmes avec le code VBA, il suffit d’enregistrer un macro et de faire les opérations à la main. Le code VBA sera généré automatiquement dans le macro et vous pourrez l’étudier pour voir comment ça marche.

     

    Si vous avez besoin de plusieurs clarifications, n’hésitez pas de revenir sur ce thread.

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, SharePoint, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

     
    Suivez MSDN sur Twitter 

    mardi 25 janvier 2011 14:56