IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Mise en forme graphique nuage de points [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Par défaut Mise en forme graphique nuage de points
    Bonjour, je suis débutant en VBA sous Excel 2007 et je tente de faire une boucle pour ma macro.

    Pour ne pas à avoir à copier mon code 70 fois, je voudrais faire une boucle qui me permet de faire la même action 70 fois par exemple, mais toujours un groupe de cellules plus bas.

    Par exemple, la première série du graphique aura le groupe de cellule F7;G7;H7;I7, la deuxième série aura le groupe de cellule F8;G8;H8;I8, et ainsi de suite jusqu'à ce que je puisse me rendre à F77;G77;H77;I77

    Donc voilà, c'est dans le but de me construire un graphique de nuage de points automatiquement tout en lui donnant une mise en forme conditionnelle selon chacune des cellules de séries.

    Je ne sais pas si j'ai été assez clair, mais voici à quoi ressemble mon code jusqu'à maintenant.

    Merci de votre aide .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    'Création de la série 2 du nuage de points
     
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(2).Name = "='Sil_am_tous - Data'!$G$7"
        ActiveChart.SeriesCollection(2).XValues = "='Sil_am_tous - Data'!$H$7"
        ActiveChart.SeriesCollection(2).Values = "='Sil_am_tous - Data'!$I$7"
     
        ActiveChart.SeriesCollection(2).Select
     
        'si la cellule à gauche du titre de ma série est tel mot, alors fait ça, sinon fait ça
        If ActiveSheet.Range("F7") = "Commercialisé" Then
     
            With Selection
                .MarkerStyle = 8
                .MarkerSize = 10
                .MarkerForegroundColor = 16750848
                .MarkerBackgroundColor = 16750848
            End With
        ElseIf ActiveSheet.Range("F7") = "Concurrence" Then
             With Selection
                .MarkerStyle = 8
                .MarkerSize = 10
                .MarkerForegroundColor = 3
                .MarkerBackgroundColor = 3
            End With
        ElseIf ActiveSheet.Range("F7") = "Non commercialisé" Then
                With Selection
                .MarkerStyle = 8
                .MarkerSize = 10
                .MarkerForegroundColor = 39168
                .MarkerBackgroundColor = 39168
            End With
        Else
                With Selection
                .MarkerStyle = 8
                .MarkerSize = 10
                .MarkerForegroundColor = 1
                .MarkerBackgroundColor = 1
            End With
        End If
     
    'Création de la série 3 du nuage de points
     
        ActiveChart.ChartArea.Select
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(3).Name = "='Sil_am_tous - Data'!$G$8"
        ActiveChart.SeriesCollection(3).XValues = "='Sil_am_tous - Data'!$H$8"
        ActiveChart.SeriesCollection(3).Values = "='Sil_am_tous - Data'!$I$8"
     
        ActiveChart.SeriesCollection(3).Select
     
        'si la cellule à gauche du titre de ma série est tel mot, alors fait ça, sinon fait ça
         If ActiveSheet.Range("F8") = "Commercialisé" Then
     
            With Selection
                .MarkerStyle = 8
                .MarkerSize = 10
                .MarkerForegroundColor = 16750848
                .MarkerBackgroundColor = 16750848
            End With
        ElseIf ActiveSheet.Range("F8") = "Concurrence" Then
             With Selection
                .MarkerStyle = 8
                .MarkerSize = 10
                .MarkerForegroundColor = 3
                .MarkerBackgroundColor = 3
            End With
        ElseIf ActiveSheet.Range("F8") = "Non commercialisé" Then
                With Selection
                .MarkerStyle = 8
                .MarkerSize = 10
                .MarkerForegroundColor = 39168
                .MarkerBackgroundColor = 39168
            End With
        Else
                With Selection
                .MarkerStyle = 8
                .MarkerSize = 10
                .MarkerForegroundColor = 1
                .MarkerBackgroundColor = 1
            End With
        End If

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    Bonjour,

    Tout d'abord de 7 à 77 cela fait 71 points

    Ensuite je te propose de faire un sous programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        For i=7 to 77
             Titre=cells(i,6)
             Nom=cells(i,7)
             XVa=cells(i,8)
             Val=cells(i,9)
             Call Trace_série(Titre, Nom, XVa, Val)
        next
    et d'adapter le code de tracé du nuage en conséquence

    PPZ

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Par défaut
    Wow, merci beaucoup PPz78! Ça marche nickel. Grâce à toi, je sais faire des boucles et je comprends comment ça fonctionne enfin .

    Bon bon bon, voici à quoi ressemble maintenant mon code si ça peut aider d'autres programmeurs "newbie" comme moi dans le besoin .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    'Création des séries de 1 allant jusqu'au nombre de cellules non vides du nuage de points
     
            Nombre = Cells(3, 8)
     
        For i = 6 To Nombre
     
             Nom = Cells(i, 7)
             XVa = Cells(i, 8)
             Valeur = Cells(i, 9)
             ser = i - 5
     
     
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(ser).Name = Nom
        ActiveChart.SeriesCollection(ser).XValues = XVa
        ActiveChart.SeriesCollection(ser).Values = Valeur
     
        ActiveChart.SeriesCollection(ser).Select
     
     
        'si la cellule à gauche du titre de ma série est tel mot, alors fait ça, sinon fait ça
        If ActiveSheet.Range("J" & i) = "1" Then
     
            With Selection
                .MarkerStyle = 8
                .MarkerSize = 10
                .MarkerForegroundColor = 16750848
                .MarkerBackgroundColor = 16750848
            End With
        ElseIf ActiveSheet.Range("J" & i) = "2" Then
             With Selection
                .MarkerStyle = 8
                .MarkerSize = 10
                .MarkerForegroundColor = 5287936
                .MarkerBackgroundColor = 5287936
            End With
        ElseIf ActiveSheet.Range("J" & i) = "3" Then
            With Selection
                .MarkerStyle = 8
                .MarkerSize = 10
                .MarkerForegroundColor = 1
                .MarkerBackgroundColor = 1
            End With
        ElseIf ActiveSheet.Range("J" & i) = "4" Then
             With Selection
                .MarkerStyle = 8
                .MarkerSize = 10
                .MarkerForegroundColor = 66047
                .MarkerBackgroundColor = 66047
            End With
        ElseIf ActiveSheet.Range("J" & i) = "5" Then
            With Selection
                .MarkerStyle = 8
                .MarkerSize = 10
                .MarkerForegroundColor = 9843226
                .MarkerBackgroundColor = 9843226
            End With
        End If
        Next

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/09/2014, 01h01
  2. Réponses: 21
    Dernier message: 29/09/2011, 11h30
  3. Graphique à nuage de points
    Par Maelstorm dans le forum Excel
    Réponses: 1
    Dernier message: 03/04/2008, 20h14
  4. Graphique : Nuage de points
    Par Djohn dans le forum Excel
    Réponses: 2
    Dernier message: 26/09/2007, 10h53
  5. Mise en forme graphique
    Par petitours dans le forum Access
    Réponses: 1
    Dernier message: 15/05/2006, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo