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 :

Création graphique VBA [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 97
    Par défaut Création graphique VBA
    Bonjour,

    Je dispose d'une macro qui me créer un graphique en fonction d'une base de données mais le problème et que par la suite je masque mes cellules et par défaut lors de la création du graphique la case " Afficher les lignes masquées" n'est pas cochés Comment écrire dans le code vba afin que la case soit cocher lors de sa création ?

    Je voudrais savoir comment mettre mon graphique transparent c'est à dire sans fond de couleur ?

    Voici mon code

    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
    Dim Grf As ChartObject
    Dim Sh As Worksheet
     
    Set Sh = Sheets("ASP")
    'On supprime tous les graphiques
    For Each Grf In Sh.ChartObjects
        Grf.Delete
    Next Grf
    'On crée notre graphique
    Set Grf = Sh.ChartObjects.Add(140, 10, 500, 300)
    With Grf.Chart
        .ChartType = xlLineMarkers
        .SeriesCollection.NewSeries
        With .SeriesCollection(1)
            .Values = Sh.Range("D2:D" & [A65536].End(xlUp).Row)
            .XValues = Sh.Range("B2:B" & [A65536].End(xlUp).Row)
        End With
    End With
    Set Grf = Nothing
    Set Sh = Nothing
    Cordialement

  2. #2
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 97
    Par défaut
    J'ai trouvé comment resoudre mon problème pour les données masquées mais pour la transparence du graph de plus je voudrais aussi pouvoir placer ce graph a un en droit bien précis j'ai essayé avec un bout de code mais je n'ai pas réussi:


    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
    Dim Grf As ChartObject
    Dim Sh As Worksheet
     
    Set Sh = Sheets("ASP")
    'On supprime tous les graphiques
    For Each Grf In Sh.ChartObjects
    Grf.Delete
    Next Grf
    'On crée notre graphique
    Set Grf = Sh.ChartObjects.Add(140, 10, 500, 300)
    With ActiveSheet.ChartObjects(1)
    .Left = Range("F5:O40").Left
    .Top = Range("F5:O40").Top
    .Width = Range("F5:O40").Width
    .Height = Range("F5:O40").Height
    End With
    With Grf.Chart
    .ChartType = xlLineMarkers
    .SeriesCollection.NewSeries
    With .SeriesCollection(1)
    .Values = Sh.Range("D2:D" & [A65536].End(xlUp).Row)
    .XValues = Sh.Range("B2:B" & [A65536].End(xlUp).Row)
    End With
    .PlotVisibleOnly = False
    End With
    Set Grf = Nothing
    Set Sh = Nothing

  3. #3
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'copie dans la feuille 5
        ActiveSheet.ChartObjects("Graph").Activate
        ActiveChart.Parent.Cut
        Sheets("Feuil5").Select
        Range("F27").Select' tu selectionne la ou tu veux mettre le coin gauche 
        ActiveSheet.Paste
    en mode salle , c'est pas terible un copier coller mais bon ca marche lol, si t'es pressé bin prend ca

  4. #4
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 97
    Par défaut
    Merci pour ta réponse mais j'ai vu que dans ton code tu avais nommée le graphique graph ça a une importance ? car moi je n'ai pas déclarer de nom a mon graph

  5. #5
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'copie dans la feuille 5
        ActiveSheet.ChartObjects("Graph").Activate
        ActiveChart.Parent.Cut
        Sheets("Feuil5").Select
        Range("F27").Select' tu selectionne la ou tu veux mettre le coin gauche 
        ActiveSheet.Paste
    Oui tu vois l'endroi ou tu nome tes celulles? si tu clic sur ton graphique tu vera le nom de ton graphique et tu mùet le meme nom
    Attention c'est pas beau comme code ce que je t'ai passé mais je suis comme toi je decouvre un peu les graphiques cette semaine donc ca ca marche c'est deja pas mal en attendant qu on te donne mieux , ou que je prenne le temps de regarder , car il y a un parametre quand tu crais un graphique , cherche sur l'aide vba , car quand tu ajoute un graphique , un des paramettrre correspond au placement sur la feuille , il me semble .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With ActiveSheet.shapes("Graphique 1")
    .Left = Range("E1").Left
    .Top = Range("E1").Top
    End With
    Voici il le positionne en E1 et ca marche j'ai testé, le shape c'est ta zonne de graphique comme quand tu ajoute un grpahique sans donnéres

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 97
    Par défaut
    jJe l'ai écrit comme ceci mais ça ne fonctionne pas:

    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
    Sheets("Feuil1").Range("A1:A1000").AdvancedFilter Action:=xlFilterCopy, _
    CopyToRange:=Range("A1"), Unique:=True
     
    Dim Grf As ChartObject
     Dim Sh As Worksheet
     
     Set Sh = Sheets("ASP")
     'On supprime tous les graphiques
     For Each Grf In Sh.ChartObjects
         Grf.Delete
     Next Grf
     'On crée notre graphique
     Set Grf = Sh.ChartObjects("Reaction Time").Add(140, 10, 500, 300)
     With ActiveSheet.Shapes("Graphique 1")
    .Left = Range("F5").Left
    .Top = Range("F5").Top
    End With
     With Grf.Chart
         .ChartType = xlLineMarkers
         .SeriesCollection.NewSeries
         With .SeriesCollection(1)
             .Values = Sh.Range("D2:D" & [A65536].End(xlUp).Row)
             .XValues = Sh.Range("B2:B" & [A65536].End(xlUp).Row)
         End With
    .PlotVisibleOnly = False
     End With
     Set Grf = Nothing
     Set Sh = Nothing
     
    End Sub
    Pardon comme ceci:

    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
    Dim Grf As ChartObject
     Dim Sh As Worksheet
     
     Set Sh = Sheets("ASP")
     'On supprime tous les graphiques
     For Each Grf In Sh.ChartObjects
         Grf.Delete
     Next Grf
     'On crée notre graphique
     Set Grf = Sh.ChartObjects("Reaction Time").Add(140, 10, 500, 300)
     With ActiveSheet.Shapes("Reaction Time")
    .Left = Range("F5").Left
    .Top = Range("F5").Top
    End With
     With Grf.Chart
         .ChartType = xlLineMarkers
         .SeriesCollection.NewSeries
         With .SeriesCollection(1)
             .Values = Sh.Range("D2:D" & [A65536].End(xlUp).Row)
             .XValues = Sh.Range("B2:B" & [A65536].End(xlUp).Row)
         End With
    .PlotVisibleOnly = False
     End With
     Set Grf = Nothing
     Set Sh = Nothing
     
    End Sub

  7. #7
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 97
    Par défaut
    J'ai trouvé mon erreur:

    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
    Sub Reaction_ASP()
    '****************************************************
       ' Activation de la feuille " ASP "
        Sheets("ASP").Activate
    '****************************************************
     
    Sheets("Feuil1").Range("A1:A1000").AdvancedFilter Action:=xlFilterCopy, _
    CopyToRange:=Range("A1"), Unique:=True
     
    Dim Grf As ChartObject
     Dim Sh As Worksheet
     
     Set Sh = Sheets("ASP")
     'On supprime tous les graphiques
     For Each Grf In Sh.ChartObjects
         Grf.Delete
     Next Grf
     'On crée notre graphique
     Set Grf = Sh.ChartObjects.Add(140, 10, 500, 300)
     Grf.Name = "Reaction Time"
     With ActiveSheet.Shapes("Reaction Time")
    .Left = Range("F5").Left
    .Top = Range("F5").Top
    End With
     With Grf.Chart
         .ChartType = xlLineMarkers
         .SeriesCollection.NewSeries
         With .SeriesCollection(1)
             .Values = Sh.Range("D2:D" & [A65536].End(xlUp).Row)
             .XValues = Sh.Range("B2:B" & [A65536].End(xlUp).Row)
         End With
    .PlotVisibleOnly = False
     End With
     Set Grf = Nothing
     Set Sh = Nothing
     
    End Sub

  8. #8
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut
    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
    Sub test3()
     
    Dim Grf As ChartObject
     Dim Sh As Worksheet
      Set Sh = ThisWorkbook.Sheets("ASP")
     'On supprime tous les graphiques
     For Each Grf In Sh.ChartObjects
         Grf.Delete
     Next Grf
     'On crée notre graphique
     Set Grf = Sh.ChartObjects.Add(140, 10, 500, 300)
     
     With Grf.Chart
         .ChartType = xlLineMarkers
         .SeriesCollection.NewSeries
         With .SeriesCollection(1)
             .Values = Sh.Range("D2:D" & [A65536].End(xlUp).Row)
             .XValues = Sh.Range("B2:B" & [A65536].End(xlUp).Row)
         End With
    .PlotVisibleOnly = False
     End With
     Set Grf = Nothing
     Set Sh = Nothing
     
    End Sub
    Dans le add en fait tu le positionne deja l'unite c'est le point .... j'en sait pas pâs plus lol left, top, width, height

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

Discussions similaires

  1. création graphique vba
    Par soer1 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/07/2012, 21h12
  2. [XL-2007] création graphique VBA
    Par gaston64 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 31/05/2011, 12h27
  3. VBA: création graphique en nuages de points (Excel 2007)
    Par renard2007 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/02/2010, 21h49
  4. création graphique par VBA
    Par Toad08 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/02/2008, 13h02
  5. [VBA-E] Création Graphique dans une boucle
    Par Currahee dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/06/2006, 10h32

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