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 :

Incrementation des colonnes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    technicien
    Inscrit en
    Septembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Septembre 2015
    Messages : 13
    Par défaut
    Bonjour a tous,

    Je suis totallement débutant en macro excel et je souhaiterais a partir d'une feuille de données creer plusieur graph, dont l'axe des x aurait toujours les meme valeurs. Je souhaiterais aussi que les graph aient pour titre le nom de l'échantillon et qu'ils soient affiché chacun dans une nouvelle feuille, qui elle meme aurait aussi le nom de l'echantillon. J'ai reussi a faire un graph, avec le bon titre et qui s'affiche dans une nouvelle feuille qui a elle meme le bon titre mais je n'arrive pas a incrementer la plage de la colonne des Y...

    Je met ci joint 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
    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
    Sub Macro1()
     
     
    Dim r As String
    Dim j As String
     
    Dim plage As String
     
     
     
     
     
    plage = "=Data!$C$6:$C$806"
     
     
     
     
    j = Range("C3")
     
     
     Range("F1").Select
        For i = 0 To Range("C1") - 1
     
     
             ThisWorkbook.Activate
             Application.ScreenUpdating = False
     
     
             Set gr = ThisWorkbook.Charts.Add
     
     
    With gr
     
        ActiveChart.ChartType = xlXYScatterLinesNoMarkers
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(1).XValues = "=Data!$B$6:$B$806"
        ActiveChart.SeriesCollection(1).Values = plage
     
     
     
     
     
    With ActiveChart
     
            .HasTitle = True
            .ChartTitle.Characters.Text = "Sample " + j
             ActiveSheet.Name = "Sample " + j
             j = j + 1
     
     
            End With
     
     
     
    End With
    Next i
    End Sub

    Dans cette macro je souhaiterai que le deuxieme graphe ai pour valeur en Y de D6 à D806, le 3eme graph de E6 à e806 et ainsi de suite pour les autres. J'espere que ce que je souhaite faire est comprehensible... En vous remerciant d'avance.

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    la seule idée qui me vient c'est qu'il va te falloir créer plage en code pour la rendre dynamique.

    seulement Chart aime les codes bien lourd comme : "=Data!$C$6:$C$806"

    donc il va te falloir gérer les colonnes en codes Ascii avec "Asc" et "Chr" fait F1 pour voir comment cela marche
    et pour concaténer utilise "&"



    Tu dis si tu y arrives .... ou pas

    A+

  3. #3
    Membre habitué
    Homme Profil pro
    technicien
    Inscrit en
    Septembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Septembre 2015
    Messages : 13
    Par défaut
    Bonjour Igloobel et merci de m'avoir repondu.

    Alors j'ai essayer le code suivant pour definir ma plage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveChart.SeriesCollection(1).Values = Range(Chr(65 + x) & 6, Chr(65 + x) & 806)
    mais ca ne fonctionne pas, ca me dis "erreur d'execution 13, incompatibilite de type"
    Est ce que ca viens du fait que j'utilise ActiveChart.SeriesCollection(1).Values ? Qu'est ce que je pourrai utiliser autrement? Merci

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonjour,


    il y as méprise ... Chr et Asc n'ont rien à faire la ... essai plutôt avec offset et la propriété Address de ton range :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gr.SeriesCollection(1).Values ="=Data!"range("Data!$B$6:$B$806").Offset(,i).Address

  5. #5
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bien sur bbil à parfaitement raison il faut utiliser "offset" c'est bien mieux et plus clair (Y a des fois c'est a se )

    j'avais répondu un peu vite

    donc a bbil je

  6. #6
    Membre habitué
    Homme Profil pro
    technicien
    Inscrit en
    Septembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Septembre 2015
    Messages : 13
    Par défaut
    Bonjour Bbil et Igloobel,

    Alors j'ai essayer ce que tu m'as dis Bbil mais il y a apparement une erreur de syntaxe que je ne parviens pas a trouver...
    Merci encore.

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonjour,


    il manque un & dans le code que je vous ais proposè


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gr.SeriesCollection(1).Values ="=Data!" & range("Data!$B$6:$B$806").Offset(,i).Address

  8. #8
    Membre habitué
    Homme Profil pro
    technicien
    Inscrit en
    Septembre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : technicien

    Informations forums :
    Inscription : Septembre 2015
    Messages : 13
    Par défaut
    Bonjour,
    J'ai rajouter ta ligne Theze mais ca inverse les données de X et Y et du coup l'incrémentation se fait sur les X. Du coup j'ai essayer ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .SeriesCollection(1).Values = Plage.Offset(, I + 1)
    Comme ça, ça incrémente bien les données en Y mais j'ai encore 2 problèmes:
    1, Sur tout mes graph, quand je regarde la valeur de la série des abscisses X il n'y a rien.
    2, Sur mon 2eme,4eme,6eme ect.. graph j'ai 2 courbes.

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

Discussions similaires

  1. [XL-2007] Incrementer des feuilles avec le nom des lignes d'une colonne + copie valeurs
    Par re dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/10/2010, 15h15
  2. [JTable] les noms des colonnes de s'affichent pas
    Par macben dans le forum Composants
    Réponses: 6
    Dernier message: 25/04/2008, 11h03
  3. DBGrid : enregister la position des colonnes
    Par Harry dans le forum Bases de données
    Réponses: 8
    Dernier message: 21/07/2004, 21h27
  4. [VB6] Datagrid afficher ou cacher des colonnes par code
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 06/02/2003, 17h19
  5. Dimensions des colonnes d'un TDBGrid
    Par osmose22 dans le forum C++Builder
    Réponses: 4
    Dernier message: 11/12/2002, 11h27

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