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 :

Graph - Selection Discontinue [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Par défaut Graph - Selection Discontinue
    Bonjour ,
    Je souhaite faire une macro sous Excel avec VBA pour faire un Graph.
    J'ai un problème dans la selection de ma plage de données.
    Dans la colonne A j'ai des identifiants.
    Dans la colonne D j'ai mes valeurs.
    Je souhaite faire une selection non continue de mes valeurs.
    Mais en passant par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(x,y),Cells(z,t))
    je fais quelque chose de continu. ("DX:DZ")
    Et avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Range(Cells(x,y)),Range(Cells(z,t)))
    j'ai une erreur.
    Question supplémentaire : Comment initialiser mes Range à une valeur nulle (sans leur mettre une cellule) ?

    Voici mon bout de 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub GraphPie()
     'Selectionner la plage de reconnaissance
     Dim Valeurs As Range
     Dim Etiquette As Range
     
     Set Valeurs = Range("D1")
     Set Etiquette = Range("A1")
     
      MotSpe = "ETAT"
      Table_Ref = Array("Alex", "Toto", "Robert", "Michel", "Raoul", "Rufus", "Ken")
      For Each Cell In Range("A1:A40")
         For Each TblVal In Table_Ref
             If ((InStr(TblVal, CStr(Cell.Value)) = 1) And (InStr(MotSpe, CStr(Cell.Value)) = 0)) Then
                   Etiquette = Union(Etiquette, Range(Cell)) '<- Mon Probleme
                  Valeurs = Union(Valeurs, Range(Cell(Cell.Row, 4))) '<- Mon Probleme
     
            End If
        Next TblVal
      Next Cell
     
     Valeurs.Select 
     mysheetname = ActiveSheet.Name
     Charts.Add
      ActiveChart.ChartWizard _
        Source:=Sheets(mysheetname).Range(Valeurs), _
        Gallery:=xlLine, Format:=4, PlotBy:=xlRows, _
        CategoryLabels:=1, SeriesLabels:=1, HasLegend:=1, _
        Title:="", CategoryTitle:="", _
        ValueTitle:="", ExtraTitle:=""
     
    End Sub
    Je n'ai pas trouvé cette demande sur le forum. Veuillez m'excusez si vous y avez déjà repondu.

    Merci.

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Essaie quelque chose 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
    28
    29
    Sub GraphLine()
    Dim Valeurs As Range, Etiquette As Range, c As Range
    Dim Table_Ref As Variant
    Dim MotSpe As String
    Dim Grf As ChartObject
     
     
    MotSpe = "ETAT"
    Table_Ref = Array("Alex", "Toto", "Robert", "Michel", "Raoul", "Rufus", "Ken")
    With Sheets("Feuil1")
       Set Valeurs = .Range("D1")
       Set Etiquette = .Range("A1")
       For Each c In .Range("A1:A40")
          If InStr(MotSpe, CStr(c.Value)) = 0 Then
             If InStr(Join(Table_Ref, "__"), c.Value) > 0 Then
                Set Etiquette = Union(Etiquette, c)
                Set Valeurs = Union(Valeurs, c.Offset(0, 3))
            End If
          End If
       Next c
       Set Grf = .ChartObjects.Add(100, 0, 400, 200)
    End With
    With Grf.Chart
       .ChartType = xlLine
       .SetSourceData Valeurs
       .SeriesCollection(1).XValues = Etiquette
    End With
    Set Grf = Nothing
    End Sub

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Par défaut
    1 - Merci d'avoir remis en forme ma question.
    2 - Ca marche comme je le souhaite.
    3 - Je note qu'il est plus simple de faire un seul string :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Join(Table_Ref, "__")
    plutôt que de faire un tableau.

    4- Par contre comment initialiser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       Set Valeurs = .Range("D1")
       Set Etiquette = .Range("A1")
    à des valeurs nulles qui ne seraient pas des valeurs contenues dans une celulle xl. I.e au départ aucune séléction. Est il nécessaire sous VBA d'initialiser nos valeurs à qqchose ?

    En tout cas merci.
    Cordialement. S.

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Tu as définis Etiquette et Valeurs comme étant des variables objet
    initialement elle sont vides (Nothing)
    à un objet range on ne peut affecter qu'un range
    Regarde ici la différence avec le code précédent
    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
    Sub GraphLine()
    Dim Plage As Range, Valeurs As Range, Etiquette As Range, c As Range
    Dim Table_Ref As Variant
    Dim MotSpe As String
    Dim Grf As ChartObject
     
    MotSpe = "ETAT"
    Table_Ref = Array("Alex", "Toto", "Robert", "Michel", "Raoul", "Rufus", "Ken")
    With Sheets("Feuil1")
       Set Plage = .Range("A1:A40")
       For Each c In Plage
          If InStr(MotSpe, CStr(c.Value)) = 0 Then
             If InStr(Join(Table_Ref, "__"), c.Value) > 0 Then
                If Etiquette Is Nothing Then
                   Set Etiquette = c
                   Set Valeurs = c.Offset(0, 3)
                Else
                   Set Etiquette = Union(Etiquette, c)
                   Set Valeurs = Union(Valeurs, c.Offset(0, 3))
                End If
             End If
          End If
       Next c
       Set Plage = Nothing
       Set Grf = .ChartObjects.Add(100, 0, 400, 200)
    End With
    With Grf.Chart
       .ChartType = xlLine
       .SetSourceData Valeurs
       .SeriesCollection(1).XValues = Etiquette
    End With
    Set Grf = Nothing
    Set Etiquette = Nothing
    Set Valeurs = Nothing
    End Sub

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Par défaut
    Parfait, merci pour l'information.
    Je vais potasser un peu VBA avant de vous poser de nouvelles questions.

    Je coche mon problème comme résolu.

    Cordialement
    S.

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

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 17h26
  2. Classe pour la création d'un graphe xy
    Par Bob dans le forum MFC
    Réponses: 24
    Dernier message: 03/12/2009, 17h20
  3. selection de point dans un graph
    Par psycoma dans le forum Interfaces Graphiques
    Réponses: 6
    Dernier message: 05/09/2008, 15h56
  4. [AJAX] Erreur de raisonnement : double select plus graph en AJAX
    Par MortyDeath dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 21/11/2007, 15h23
  5. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44

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