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éer plusieurs graphiques tout en effaçant les données


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 22
    Points : 9
    Points
    9
    Par défaut Créer plusieurs graphiques tout en effaçant les données
    Bonjour,

    Je viens vers vous car j'ai des graphiques à créer mais la méthode est encore un peu floue.
    Disons que j'ai 3 turbines avec des données que je traite à l'aide d'une macro, dont l'étape finale est la création d'un graphique par turbine (ça c'est fonctionnel) :

    Turbine 1 --> Graphique 1
    Turbine 2 --> Graphique 2
    Turbine 3 --> Graphique 3

    Initialement, mes données sont sur une feuille unique. Idéalement, j'aimerai créer tous les graphiques sur une autre feuille mais je sais pas si c'est possible, dans la mesure où une fois le graphique 1 tracé, je supprime toutes les données sur la feuille pour pouvoir tracer le graphique 2.

    Est-il possible de créer le Graphique 1, garder ce graphique tout en effacant les données qui permettent de le créer, tracer Graphique 2 ... etc pour au final n'avoir que les 3 graphiques ?

    Il n'y a rien de technique pour l'instant, mais c'est une première étape

    Merci d'avance !

  2. #2
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Est-il possible de créer le Graphique 1, garder ce graphique tout en effacant les données qui permettent de le créer, tracer Graphique 2 ... etc pour au final n'avoir que les 3 graphiques ?
    Oui c'est possible.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    Trsè bien, je vais essayer de trouver comment faire, j'ai pas réussi jusqu'ici
    Merci

  4. #4
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Il n'y a rien de technique pour l'instant, mais c'est une première étape
    On pourra t'aider si tu nous montre comment tu crée le graphique 1.

    Ci-après un graphique crée en Feuil2, les données sont en Feuil1 (Plage A1:B20)

    Après création du graphique ainsi, il sera désormais indépendant de la plage de données initiale.

    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
    Sub CreatGraph()
    Dim TbX As Variant, TbY As Variant
    Dim Ch As ChartObject
     
    Application.ScreenUpdating = False
     
    Set Ch = Worksheets("Feuil2").ChartObjects.Add(100, 20, 300, 200)
    With Worksheets("Feuil1")
        TbX = .Range("A1:A20")
        TbY = .Range("B1:B20")
    End With
    With Ch.Chart
        .ChartType = xlXYScatterLines
        With .SeriesCollection.NewSeries
            .XValues = TbX
            .Values = TbY
        End With
    End With
    Set Ch = Nothing
    End Sub

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    Bonsoir,

    Merci de ta réponse
    J'ai réussi à figer mon graphique, mais de manière un peu moins sophistiquée que toi, à savoir que je me suis servi en partie de l'éditeur de macro ...

    Voilà comment j'arrive à obtenir mon graphique indépendant de mes données (située sur la plage K1:K25) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        Range("K1:K25").Select
        ActiveSheet.Shapes.AddChart.Select
        ActiveChart.SetSourceData Source:=Range("Feuil1!$K$1:$K$25")
        ActiveChart.ChartType = xlXYScatterSmooth
        With ActiveChart
        For p = 1 To .SeriesCollection.Count
        With .SeriesCollection(p)
            .Values = .Values
            .XValues = .XValues
            .Name = .Name
        End With
        Next p
        End With
    Je vais essayer de travailler et d'améliorer mon code grâce au tiens sans toutefois recopier bêtement, ce n'est pas le but

    Par contre j'ai un souci pour copier mes données d'une feuille à une autre.
    Au départ j'ai juste une feuille (Feuil1), sur laquelle il y a mes données dont je veux copier mettons la colonne B sur "Feuil2" pour la traiter et obtenir mon graphique.

    J'ai écrit le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Transfert()
    '
    ' Transfert Macro
     
    ActiveWorkbook.Sheets.Add
    ActiveSheet.Name = "Feuil2"
    Sheets("Feuil2").Move After:=Sheets("Feuil1")
     
    Worksheets("Feuil1").Range("B1", [B30000].End(xlUp)).Copy Sheets("Feuil2").Range("A1")
     
    End Sub
    Mais quand j'exécute, j'ai la dernière ligne en jaune avec le message "Erreur d'exécution 1004 : Erreur définie par l'application ou par l'objet"
    Je ne comprends pas d'où cela provient, une idée ?

    Encore merci d'avance

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    Bonsoir,

    J'ai repéré d'où provient l'erreur et je l'ai résolue de manière bizarre. Cela provient de "[B30000].End(xlUp)".
    En effet, si j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Transfert()
    '
    ' Transfert Macro
    Dim k As Long
     
    k = Range("B1", [B6000].End(xlUp)).Count
     
    ActiveWorkbook.Sheets.Add
    ActiveSheet.Name = "Feuil2"
    Sheets("Feuil2").Move After:=Sheets("Feuil1")
     
    Worksheets("Feuil1").Range("B1:B" & k).Copy Sheets("Feuil2").Range("A1")
     
    End Sub
    Ca marche !
    Je ne comprends pas pourquoi ça fonctionne en passant par une variable qui récupère le nombre de ligne, j'utilise End(xlUp) dans toutes mes macros sans que ça pose problème.
    Si vous avez une idée, je suis perplexe

    Merci à vous !

  7. #7
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Worksheets("Feuil1")
        k = .Cells(.Rows.Count, "B").End(xlUp).Row
        .Range("B1:B" & k).Copy Worksheets("Feuil2").Range("A1")
    End With
    Par contre le code Transfert te mène directement vers le mur concernant l'ajout d'une nouvelle feuille que tu nomme Feuil2.
    Il faut au préalable vérifier que Feuil2 n'existe pas dans le classeur.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    Oui tu as raison, j'y ai pensé aussi mais pour l'instant j'essaie de faire fonctionner mon code en supprimant Feuil2 à chaque essai
    Je n'ai peut-être pas la bonne démarche, mais je tente d'obtenir le résultat que je veux, et après j'optimise ... Ça me rassure

    Mais je vais tester l'existence de Feuil2, sinon ça va planter 1 fois sur 2 (cette macro sera utilisée par d'autres personnes qui n'auront pas codé la macro donc vaut mieux que ça fonctionne bien).

    Merci

    Edit : En fait c'est pas grand chose à ajouter, je le fais de suite

Discussions similaires

  1. Créer un graphique tout simple en Perl
    Par norachaouia dans le forum Modules
    Réponses: 6
    Dernier message: 01/10/2010, 09h02
  2. Réponses: 3
    Dernier message: 20/05/2009, 09h12
  3. Réponses: 2
    Dernier message: 15/09/2008, 23h12
  4. Réponses: 3
    Dernier message: 04/07/2008, 16h10
  5. créer plusieurs graphiques sur la meme feuille
    Par DIDIDIDA dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 08/04/2008, 09h53

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