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 :

Superposition de plusieurs graphes dans un seul [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 102
    Points : 89
    Points
    89
    Par défaut Superposition de plusieurs graphes dans un seul
    Bonjour à tous ,

    je suis bloqué dans la phase finale de ma MACRO VBA que je viens de construire avec plein d'aide de votre part et spécialement celui de 'Mercatog' ,

    bref;

    mon probléme se base sur la résolution d'un autre que je viens de postuler sur la création d'un graphe or ce dernier ne se mis plus à jour , Or moi je veux à chaque fois le graphe change il se met à jour dans la feuille synthése.

    le code que j'ai mis pour la création du graphique est comme suit :

    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
     
     
    Sub CommandButton1_Click()
    'déclaration des varriables
    Dim LastLig As Long
    Dim A As Variant
    Application.ScreenUpdating = False
    A = Application.GetOpenFilename("Text Files (*.txt), *.txt")
    If A = False Then
    'msg box négatif
        MsgBox " Aucun fichier n'a été selectionné"
    Else
    'suppression de mes graphique existant sur la feuille
    For Each Legraph In ActiveSheet.ChartObjects
        Legraph.Delete
    Next
    'importer deux colonne d'auprés un fichier text séparer en virgules
        Workbooks.OpenText Filename:=A, Origin:=xlMSDOS, StartRow:=1, _
            DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, Comma:=False, _
            Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
            Array(3, 1), Array(4, 1), Array(5, 1)), TrailingMinusNumbers:=True
        With ActiveWorkbook
            With .Worksheets(1)
                LastLig = .Cells(.Rows.Count, "C").End(xlUp).Row
                .Range("C5:D" & LastLig).Copy _
                    ThisWorkbook.ActiveSheet.Range("A3")
            End With
            .Close False
        End With
     
    'traçer mon graphique dont l'axe des x est mis dans la colonne A à partir de la troixiéme ligne et celui des Y dans la colonne B à partire de la 3éme ligne aussi
     
    Dim LastLiga As Long
    Dim x, Y
     
    Application.ScreenUpdating = False
    With ActiveSheet                       'A adapter
        LastLiga = .Cells(.Rows.Count, 1).End(xlUp).Row
        x = .Range("A3:A" & LastLig)
        Y = .Range("B3:B" & LastLig)
        With .ChartObjects.Add(200, 53, 670, 360).Chart
            .ChartType = xlLine
            With .SeriesCollection.NewSeries
                .XValues = x
                .Values = Y
     
     
     
            End With
        End With
        End With
     
    End If
     
    'nommer mon graphe du méme nom de celui de la feuille 
     
    ActiveSheet.ChartObjects(1).Name = ActiveSheet.Name
     
    Exit Sub
    End Sub
    je veux que mon graphique soit mis à jour à chaque fois je change la valeur des cellules; et superposer tous les graphes(des feuilles nommée graphique , Graphique(1) graphique(2) ) dans un seul dans la derniére feuille nommé 'synthése'

    RQ : puis je refraichir mon classeur avant la fin du programme puisque le programme se bloque dans la phase finale un bon moment et je le fais tourner à travers la fermeture et ensuite annuler la fermeture du classeur .


    Merci bien pour votre aide .

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    je veux que mon graphique soit mis à jour à chaque fois je change la valeur des cellules; et superposer tous les graphes(des feuilles nommée graphique , Graphique(1) graphique(2) ) dans un seul dans la derniére feuille nommé 'synthése'
    Est-ce que tu veux réellement les superposer ? Les axes des premiers graphiques risquent de ne pas être visibles alors que les échelles ne seront pas nécessairement les mêmes.

    je veux que mon graphique soit mis à jour à chaque fois je change la valeur des cellules; et superposer tous les graphes(des feuilles nommée graphique , Graphique(1) graphique(2) ) dans un seul dans la derniére feuille nommé 'synthése'
    Tu peux le programmer (dans une boucle, par exemple), mais tu ne peux pas le faire manuellement.

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 102
    Points : 89
    Points
    89
    Par défaut
    reBonjour Daniel;

    merci de bine voir le CODe joint dessous , il sont claire les comentaire.

    On ce qui concerne la superposition je pense que les axe seront automatiquement ajuster en echelle commun des deux.

    Pour la mise à jour le programme que j'ai fais donné par un collégue sur le forum trace le graphe sans se reférer au cellules de donné je veux dire sans relié les cellules au graphe de façon continue par une formule par exemple comme c'est le cas pour la methode manuelle, sinon je ne sais pas coment faire ni boucle ni autre :'( ..

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Est-ce que ça ne serait pas plus simple de faire un seul graphique sur la feuille synthèse avec les séries des trois graphiques ? Pas de risque d'avoir la même couleur pour différentes séries, échelle unique etc. ?

    Pour la mise à jour le programme que j'ai fais donné par un collégue sur le forum trace le graphe sans se reférer au cellules de donné je veux dire sans relié les cellules au graphe de façon continue par une formule par exemple comme c'est le cas pour la methode manuelle, sinon je ne sais pas coment faire ni boucle ni autre :'( ..
    Est-ce que tu pourrais poster la macro, ce n'est pas facile de se faire une idée.

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 102
    Points : 89
    Points
    89
    Par défaut macro
    Rebonjour;

    J'ai pas pu importer tous le fichier et je ne sais pas la raison,

    tu trouveras ci-joint le fichier text que j'importe ; et un imp ecran du fichier contenatn la MACRO avec une labelle expliquant le boutton de la macro ;

    sinon j'ai pas de probléme si je met les série dasn le graphe de synthése je seule probléme qui se pose c'est que les série sont varriable et j'en est à chaque fois un nombre de feuils dupliqué contenat un graphe chacune ;

    ( le graphe est nommé ele méme nom que celui de la feuile )
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Tu veux dire que le nombre de graphiques est variable ? ça peut s'arranger. D'autre part, il y a un vrai problème avec l'axe des X. Si les valeurs ne sont pas identiques pour tous les graphiques, il n'y a pas moyen de faire un seul graphique ni de superposer les graphiques.

  7. #7
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 102
    Points : 89
    Points
    89
    Par défaut
    Je pense le contraire puisqu'il sont issu de la méme source et donc l'axe des x de tous les graphes est de la méme nature de valeurs , e pense que c'est possible ;
    bon oublie la superposition ..

    et verrant avec le probléme de la mise à jour automatique de mes graphe on fonction des cellules de donnée X et Y.

    et celui du bloquage de la macro que lorsque j'appuis sur fermer puis je choisis annuler la fermeture ..

    merci

  8. #8
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    et celui du bloquage de la macro que lorsque j'appuis sur fermer puis je choisis annuler la fermeture
    Sans la macro, je ne peux rien faire. Mets-la dans un fichier texte et met-la en pièce jointe.
    Je regarde pour la mise à jour automatique.

  9. #9
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 102
    Points : 89
    Points
    89
    Par défaut
    La macro ne se joint plus .. je té mis le code de la macro et l"impression ecran du fichier et le fichier text contennat les point à récupérer ., tu peut avoir une idée avec ces fichier joint en dessous dans mes précédent message.

    Le probléme est essetiellement dans cett partie du code , mon graphe qui se crée récupére les donnée et non pas le contenue des cellule .. or quand j'ouvre la propriété des série je en trouve plus les références des cellules

    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
     
    Dim LastLiga As Long
    Dim x, Y
     
    Application.ScreenUpdating = False
    With ActiveSheet                       
        LastLiga = .Cells(.Rows.Count, 1).End(xlUp).Row
        x = .Range("A3:A" & LastLig)
        Y = .Range("B3:B" & LastLig)
        With .ChartObjects.Add(200, 53, 670, 360).Chart
            .ChartType = xlLine
            With .SeriesCollection.NewSeries
                .XValues = x
                .Values = Y
            End With
    MERCi Pour ton temps DANIEL

  10. #10
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Pour cette macro, j'ai supposé que les feuilles contenant un graphique avaient un nom commençaient par "Graphique". Si tu changes une valeur en colonne A ou B, le graphique se met à jour.

    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
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        Dim Ligne As Long, X, Y
        If Left(Sh.Name, 9) = "Graphique" Then
            With Sh.ChartObjects(1).Chart.SeriesCollection(1)
                If Target.Column = 1 And Target.Row > 2 And Target.Row <= _
                    Sh.Cells(Sh.Rows.Count, 1).End(xlUp).Row Then
                    Ligne = Target.Row - 2
                    X = .XValues
                    X(Ligne) = Target.Value
                    .XValues = X
                ElseIf Target.Column = 2 And Target.Row > 2 And Target.Row <= _
                    Sh.Cells(Sh.Rows.Count, 2).End(xlUp).Row Then
                    Ligne = Target.Row - 2
                    Y = .Values
                    Y(Ligne) = Target.Value
                    .Values = Y
                End If
            End With
        End If
    End Sub

  11. #11
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Deux choses :

    1. Tu dois mettre la macro dans le module "ThisWorkbook".
    2. Si, au lieu de mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        X = .Range("A3:A" & LastLig)
        Y = .Range("B3:B" & LastLig)
        With .ChartObjects.Add(200, 53, 670, 360).Chart
            .ChartType = xlLine
            With .SeriesCollection.NewSeries
                .XValues = X
                .Values = Y
    tu mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        With .ChartObjects.Add(200, 53, 670, 360).Chart
            .ChartType = xlLine
            With .SeriesCollection.NewSeries
                .XValues = ActiveSheet.Range("A3:A" & LastLig)
                .Values = ActiveSheet.Range("B3:B" & LastLig)
    La mise à jour se fait automatiquement. Ou j'ai mal compris ?

  12. #12
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 102
    Points : 89
    Points
    89
    Par défaut
    çà fonctionne parfaitement merci Daniel;

    il me reste juste une question : coment faire exectuter la macro sans avoir recour à un bouton ; çà veux dire qu'elle s'execute une fois la feuille est activé ou le fichier excel ouvert.

  13. #13
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Si tu as mis la macro dans le module "ThisWorkbook", quand tu vas changer une valeur des colonnes A ou B d'une feuille dont le nom commence par "Graphique", la macro va se déclencher automatiquement. Si tu ne comprends pas ce que j'écris, dis-le.

  14. #14
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 102
    Points : 89
    Points
    89
    Par défaut
    OéOé çà marche çà marche!!!! parfais chef tous mon respect à toi Daneil et merci bcp pour ton soutien té le top !;

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

Discussions similaires

  1. lire/ecrire plusieurs graphes dans un seul fichier avec Networkx
    Par mohsenuss91 dans le forum Général Python
    Réponses: 3
    Dernier message: 15/02/2015, 18h02
  2. [WD15] Imprimer plusieurs graphes dans un seul état
    Par tatam dans le forum WinDev
    Réponses: 1
    Dernier message: 10/05/2010, 09h24
  3. plusieurs tables dans une seule table
    Par scully2501 dans le forum Access
    Réponses: 1
    Dernier message: 10/10/2005, 09h19
  4. regrouper plusieurs champ dans un seul en requete
    Par Nicko29 dans le forum Access
    Réponses: 12
    Dernier message: 07/09/2005, 18h29
  5. plusieurs enregistrements dans une seul ligne
    Par Celelibi dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/01/2005, 15h55

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