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 :

creation dun graph dynamique dans la propre feuille avec les données de la feuille


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Points : 216
    Points
    216
    Par défaut creation dun graph dynamique dans la propre feuille avec les données de la feuille
    bonjour,
    voici un nouveau problème, pouvez vous m aider?
    Je voudrais créer une macro qui quand je clic sur un bouton apparaisse un graphique dynamique croisé sur la feuille avec les données de la propre feuille ou je me trouve et disparait avec un clic droit de ma souris.
    J ai créé cette macro avec l enregistreur de macro mais là il créait une feuille.
    je précise chaque feuille porte un nom différent. Merci d avance.

    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
    Sub GrafDynamicCroisé()
    '
    ' GrafDynamicCroisé Macro
    '
     
    'selection de la cellule du tableau
     
        Range("A18").Select
        'ajout d une feuille
        Sheets.Add
        'creation du gdc
     
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Tableau43", Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:="Feuil3!L1C1", TableName:="Tableau croisé dynamique2", _
            DefaultVersion:=xlPivotTableVersion12
        'selection de la feuille creer
        Sheets("Feuil3").Select
        'selection ou creer le tableau
        Cells(1, 1).Select
        'style du tableau
     
        ActiveSheet.Shapes.AddChart.Select
        ActiveChart.SetSourceData Source:=Range("Feuil3!$A$1:$C$18")
        ActiveChart.ChartType = xlColumnClustered
        ActiveChart.ChartStyle = 42
        ActiveChart.ClearToMatchStyle
        'selectionne les champs necessaire
     
        ActiveSheet.PivotTables("Tableau croisé dynamique2").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique2").PivotFields("PREL 2006"), _
            "Somme de PREL 2006", xlSum
        ActiveSheet.PivotTables("Tableau croisé dynamique2").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique2").PivotFields("PREL total 2007"), _
            "Somme de PREL total 2007", xlSum
        ActiveSheet.PivotTables("Tableau croisé dynamique2").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique2").PivotFields("PREL Total 2008"), _
            "Somme de PREL Total 2008", xlSum
        ActiveSheet.PivotTables("Tableau croisé dynamique2").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique2").PivotFields("Total ch demande 2009"), _
            "Somme de Total ch demande 2009", xlSum
        ActiveSheet.PivotTables("Tableau croisé dynamique2").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique2").PivotFields("ATT Logique"), _
            "Somme de ATT Logique", xlSum
    End Sub

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Points : 216
    Points
    216
    Par défaut
    bonjour,
    j ai commencé je veux juste savoir si je suis sur la bonne voie. Et je vais essayer d avancer par étape.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'selection du tableau concerné (les données concernées par le graphique)
        Range("A18").Select
        Selection.CurrentRegion
       ' declaration de la feuille active
       MaFeuille = ActiveSheet.Name
        'selection de la source de donnée(sourcedata),version du graphique(version)
        'destination du graphique (MaFeuille.cells) Nom du tableau ( tableau croisé...+nom de la feuille)
        ActiveSheet.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
            Selection.CurrentRegion, Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:=MaFeuille.Cells(15, 47), TableName:="Tableau croisé dynamique" & MaFeuille, _
            DefaultVersion:=xlPivotTableVersion12
    Ensuite je dois selectionner les colonnes concernées.
    Merci pour les conseils

  3. #3
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Salut
    Sans meme mettre ton code dans excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A18").Select
        Selection.CurrentRegion
    Tu dois avoir une erreur de compilation ici sur la 2eme ligne.
    Tu ne dois pas cherher a selectionner les données, il faut les pointé quand tu en a besoin c tout

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaFeuille = ActiveSheet.Name
    Ici donne plutot le nom de la sheet et pointe directement sur elle et pas sur son nom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Mafeuille as worksheet
    Mafeuille = sheets("Toto")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.PivotCaches...
    Pourquoi recommencé a utiliser ActiveSheet, tu as créé Mafeuille pour pointer sur la feuille en question

    a++
    Qwaz

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Points : 216
    Points
    216
    Par défaut
    Bonsoir,
    J'ai du mal a faire la différence entre sélectionner et pointer (?).
    Puis peux tu m expliquer un peu avec des metaphore (pour bien comprendre) la fonction Dim...as
    je pensais Range("A18) select et currentregion allez sélectionner le tableau contenant les données
    et je pensais que activesheet.name était nécessaire puisque je vais utiliser la même macro dans plus de 80 feuilles portant des noms différents.
    Et active sheet je pense que c'est la feuille active.
    Je suis vraiment désolé je suis un débutant. Mais je pense que j'evolue enfin je crois.

    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
    ' GrafDynamicCroisé Macro
    '
    'selection du tableau concerné (les données concernées par le graphique)
        Dim MaFeuille As Worksheet
     
        Range("A18").Select
     
       ' declaration de la feuille active
       MaFeuille = ActiveSheet.Name
        'selection de la source de donnée(sourcedata),version du graphique(version)
        'destination du graphique (MaFeuille.cells) Nom du tableau ( tableau croisé...+nom de la feuille)
       PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
            Selection.CurrentRegion, Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:=MaFeuille.Cells(15, 47), TableName:="Tableau croisé dynamique" & MaFeuille, _
            DefaultVersion:=xlPivotTableVersion12

  5. #5
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Salut
    si ta formule doit être utilisé sur plusieurs feuilles, c'est en effet une solution que d'utiliser activesheet, je vais y revenir, je vais d'abord t'expliquer le reste

    Sélectionner et pointer :
    Alors, imaginons que tu clique sur la case B2, puis dans un code tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    range("A1").Select
    Selection.value = "Coucou"
    Ici excel déplace sa zone de sélection sur la cellule A1, B2 n'est donc plus sélectionné.
    Si par contre tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").Value = "Coucou"
    Ici tu "pointes" (c'est moi qui utilise ce terme tu le trouvera pas dans es livre)sur le range("A1") mais excel ne change pas la cellule sélectionnée, celle ci reste B2.
    Ainsi tu obtiens un même résultat, Coucou noté dans A1, mais le code est plus rapide et de plus l'utilisateur retrouve exactement le tableau comme il était avant le lancement de la macro (excepté Coucou noté dans A1 bien sur), la case sélectionnée reste la même.

    Pour Currentregion, en effet currentregion te permet de pointé ou de sélectionner la zone qui contient les donnée au plus juste. Par contre l'utilisation que tu en fais n'es pas bonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("A18").Currentregion.select
    Permet de sélectionner cette région, mais il n'est pas la peine de sélectionner pour utiliser, ainsi tu peux l'utiliser de la façon suivante:

    2 cas, soit tu n'as besoin de t'en survires qu'une fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    Range("A18").CurrentRegion,...
    Comme tu l'as fais a juste titre ici, mais avec range("18") devant et non pas sélection

    Soit, a plusieur endroit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    with Range("A18").CurrentRegion
      .warptexte = true 'active le retour a la ligne automatique
      .interiore.colorindex = 56 'passe la zone en couleur
    End With
    Dans les 2 cas Currentregion représente bien des cellules (objet Range), Range étant une ou plusieurs cellules.

    L'utilisation de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim MaFeuille As Worksheet
    Worksheet c'est la meme chose que Sheet, sauf que pour une declaration de variable on est obligé d'utiliser WorkSheet.
    Mafeuille représente donc un objet sheet, mais pour l'instant sans contenu, c'est une coquille vide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set MaFeuille = ActiveSheet
    Ici on rempli la coquille, désormais Mafeuille et la sheet active au moment de l'exécution de cette ligne, sont exactement la même chose, ce qui veut dire que si au cours de la macro tu venais a changer d'onglet, activesheet pointerait ce nouvelle onglet et Mafeuille pointerait toujours l'onglet d'avant (celui actif au moment de l'execution de la ligne de code).Pour créer ce lien, il faudra utiliser Set ... = ... .

    Ceci est utiles pour ne pas avoir a manipuler des chaines très longue dans ta macro. Si par exemple au cours de ta macro tu devais avoir a interagir souvent avec la cellule A1 de la feuil1 et la cellule A6 de la feuil2, il conviendrait de faire ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim A1Feuil1 as Range 'j'ai choisi A1Feuil1 comme nom car il est explicite,mais tu peux mettre ce que tu veux bien sur
    Dim A6Feuil2 as Range
     
    Set A1Feuil1 = Sheets("Feuil1").range("A1")
    Set A6Feuil1 = Sheets("Feuil2").range("A6")

    Activesheet est en effet la feuille active, au même titre qu'ActiveCell représente la cellule active.

    Ceci dis, tu me dis devoir utiliser la même macro dans plusieurs bouton, ce qui en effet justifie l'utilisation de activesheet, mais pas de activecell.
    Un autre solution mais un peut plus couteuse en temps serait de passer le nom de la feuille en paramètre a la fonction, mais ce serait alourdir pour rien, mieux vaut dans ton cas utiliser ActiveSheet, après tout il existe alors autant s'en servir.

    voila je pense avoir répondu a toutes tes questions n'hésites pas si tu as encore des points d'ombres, mais n'oublies pas non plus qu'il existe des cours et Tutoriels qui sont la pour ça
    a++
    Qwaz

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Points : 216
    Points
    216
    Par défaut
    Merci beaucoup pour tes explications.

    La macro est exécutée avec les donnes internes à la feuille ou se trouve ce bouton. Cette feuille est générée par une autre macro qui duplique une feuille avec des données particulières à la feuille. C'est à dire sur une feuille maquette je rentre une donnée (dans mon cas ce sont des massifs forestiers massif A01, B02,...) ensuite une macro va créer une feuille qui portera le nom du massif et dans lequel va avoir une liste des propriétaire avec différents chiffres spécifiques au massif sélectionné.
    dans la maquette va se trouver un bouton qui va créer un graphique. ce graphique sera spécifique au massif de la feuille créer. quand je serai sur la feuille massif A01 je veux que la macro créer le graphique des données du massif A01 (si ça t intéresse c'est pour connaitre l'évolution des population de chevreuils enfin je ne suis pas la pour te raconter ma vie mais comprendre les macro et c'est passionnant). bon revenons a notre macro! j ai fait des modifications et devine ...ben ca ne marche 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
    31
    32
    33
    34
    35
    36
    selection du tableau concerné (les données concernées par le graphique)
        Dim MaFeuille As Worksheet
            'Dim MaFeuille As Range
            'Range("A18").CurrentRegion.Select
            'Set MaFeuille = ActiveSheet.Range("A18")
          Set MaFeuille = ActiveSheet
       ' declaration de la feuille active
     
        'selection de la source de donnée(sourcedata),version du graphique(version)
        'destination du graphique (MaFeuille.cells) Nom du tableau ( tableau croisé...+nom de la feuille)
       PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
         Range("A18").CurrentRegion.Select, Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:=MaFeuille, TableName:="Tableau croisé dynamique" & MaFeuille, _
            DefaultVersion:=xlPivotTableVersion12
     
    'selectionne les champs necessaire
     
        i = "Tableau croisé dynamique" & MaFeuille
     
        ActiveSheet.PivotTables(i).AddDataField ActiveSheet. _
            PivotTables(i).PivotFields("PREL 2006"), _
            "Somme de PREL 2006", xlSum
        ActiveSheet.PivotTables(i).AddDataField ActiveSheet. _
            PivotTables(i).PivotFields("PREL total 2007"), _
            "Somme de PREL total 2007", xlSum
        ActiveSheet.PivotTables(i).AddDataField ActiveSheet. _
            PivotTables(i).PivotFields("PREL Total 2008"), _
            "Somme de PREL Total 2008", xlSum
        ActiveSheet.PivotTables(i).AddDataField ActiveSheet. _
            PivotTables(i).PivotFields("Total ch demande 2009"), _
            "Somme de Total ch demande 2009", xlSum
        ActiveSheet.PivotTables(i).AddDataField ActiveSheet. _
            PivotTables(i).PivotFields("ATT Logique"), _
            "Somme de ATT Logique", xlSum
     
    sub end

  7. #7
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    SAlut
    Pourquoi avoir mis range("A18").Currentregion.Select ? le select est en trop relit le poste d'avant.
    Essai de joindre un fichier avec quelque données pour que je puisse faire des tests
    A++
    Qwaz

  8. #8
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Points : 216
    Points
    216
    Par défaut
    Bonjour Qwazerty, belle journée ensoleillée! (j espere que mon cerveau va en profiter )

    voila je te joins mon projet,

    Dans l onglet E04, j ai mis le type de graphique dynamic croisé et son emplacement souhaité. si tu veux créer un onglet tu vas dans l onglet liste et ecrit un massif ( A04 par exemple) et clic sur le bouton avec un chevreuil ainsi tu as créer un onglet A04 avec la liste des propriétaire de ce massif et leurs données.

    Voici le dernier 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
    Sub GrafDynamicCroisé()
    '
    ' GrafDynamicCroisé Macro
    '
    'selection du tableau concerné (les données concernées par le graphique)
        Dim MaFeuille As Worksheet
            'Dim MaFeuille As Range
            'Range("A18").CurrentRegion.Select
            'Set MaFeuille = ActiveSheet.Range("A18")
          Set MaFeuille = ActiveSheet
       ' declaration de la feuille active
     
        'selection de la source de donnée(sourcedata),version du graphique(version)
        'destination du graphique (MaFeuille.cells) Nom du tableau ( tableau croisé...+nom de la feuille)
       PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
         CurrentRegion, Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:=MaFeuille, TableName:="Tableau croisé dynamique" & MaFeuille, _
            DefaultVersion:=xlPivotTableVersion12
     
        'selection ou creer le tableau
        'Cells(1, 1).Select
        'style du tableau
     
        ActiveSheet.Shapes.AddChart.Select
        ActiveChart.SetSourceData Source:=Range("$A$1:$C$18")
        ActiveChart.ChartType = xlColumnClustered
        ActiveChart.ChartStyle = 42
        ActiveChart.ClearToMatchStyle
     
        'selectionne les champs necessaire
     
        i = "Tableau croisé dynamique" & MaFeuille
     
        ActiveSheet.PivotTables(i).AddDataField ActiveSheet. _
            PivotTables(i).PivotFields("PREL 2006"), _
            "Somme de PREL 2006", xlSum
        ActiveSheet.PivotTables(i).AddDataField ActiveSheet. _
            PivotTables(i).PivotFields("PREL total 2007"), _
            "Somme de PREL total 2007", xlSum
        ActiveSheet.PivotTables(i).AddDataField ActiveSheet. _
            PivotTables(i).PivotFields("PREL Total 2008"), _
            "Somme de PREL Total 2008", xlSum
        ActiveSheet.PivotTables(i).AddDataField ActiveSheet. _
            PivotTables(i).PivotFields("Total ch demande 2009"), _
            "Somme de Total ch demande 2009", xlSum
        ActiveSheet.PivotTables(i).AddDataField ActiveSheet. _
            PivotTables(i).PivotFields("ATT Logique"), _
            "Somme de ATT Logique", xlSum
     
        ' suppression du graphic avec clic droit sur le grafic
     
    End Sub
    Merci

  9. #9
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    Salut
    C'était juste le Select qui était en trop, il faut garder le rang("A18").
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
         rang("A18").CurrentRegion, Version:=
    Pour ce qui est du reste je vais avoir du mal, je connais très très mal les TCD et de plus ceux que tu utilise (excel2007) ne sont pas compatible avec mon excel 2003, je m'y serais intéressé un peu mais la ...
    J'espère que des spécialistes du TCD 2007 vont passer dans le coin... désolé

    Coté formule un conseil pour l'aspect visuel
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ESTERREUR(BF3/F3);"";BF3/F3)
    de cette facon pas de Div/0# partout

    Coté code
    Reprend les select en les supprimant, ça allégera ton code.

    Sans faire exprès j'ai créer un massif n'appartenant a personne, ça crée une fiche avec la totalité de la base. Normale?

    Pour le reste il y a beaucoup de code, donc pas facile de tout regarder et comprendre, donc si le code tourne comme tu le souhaites... laisses le ainsi, si tu as des résultats qui te conviennent pas pointes les du doigt.

    Pour Current region il serait mieux de faire ceci a la place
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       'Plutot que d'utiliser Currentregion
       Dim MonTableau As Range
       With MaFeuille
            Set MonTableau = .Range("A18", .Cells(Rows.Count, "A").End(xlUp).Offset(0, .Cells(17, Columns.Count).End(xlToLeft).Column))
       End With
    ce code pointe sur le tableau de valeurs
    Par contre je n'ai pas put l'intégrer dans la formule suivante, qui m'a tout l'aire d'avoir de fort problème de viabilité tel que tu l'as conçu, il va falloir te pencher sur l'aide excel, sur les tutos, cours et google.

    A++
    Qwaz

  10. #10
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Points : 216
    Points
    216
    Par défaut
    Merci beaucoup

    déjà les div n existe plus sur mes tableau grâce a toi. Alors merci.

    mais je n ai toujours pas mon graphique. mais je te promet j'en lis et relis des bouquins comme je te le disais il y a 3/4 semaines je ne savais pas ce qu'était une macro. Mais une bonne nouvelle c'est que j aime et trouve ça passionnant.

    Bon mon code ne marche toujours pas donc je le recolle on ne sait jamais.
    Je fouille encore et si je trouve je le mettrais sur ce site. Desfois que d autres personnes veulent se genre de chose.

    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
    Sub GrafDynamicCroisé()
    '
    ' GrafDynamicCroisé Macro
    '
    'selection du tableau concerné (les données concernées par le graphique)
        Dim MaFeuille As Worksheet
          Dim MonTableau As Range
            'Set MaFeuille = ActiveSheet.Range("A18")
          Set MaFeuille = ActiveSheet
       ' declaration de la feuille active
     
       With MaFeuille
            Set MonTableau = Range("A18", .Cells(Rows.Count, "A").End(xlUp).Offset(0, .Cells(17, Columns.Count).End(xlToLeft).Column))
       End With
     
        'selection de la source de donnée(sourcedata),version du graphique(version)
        'destination du graphique (MaFeuille.cells) Nom du tableau ( tableau croisé...+nom de la feuille)
       PivotCaches.Add(SourceType:=xlDatabase, SourceData:=MonTableau, Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:=MaFeuille, TableName:="Tableau croisé dynamique" & "MaFeuille", _
            DefaultVersion:=xlPivotTableVersion12
     
        'selection ou creer le tableau
        'Cells(1, 1).Select
        'style du tableau
     
        ActiveSheet.Shapes.AddChart.Select
        ActiveChart.SetSourceData Source:=Range("$A$1:$C$18")
        ActiveChart.ChartType = xlColumnClustered
        ActiveChart.ChartStyle = 42
        ActiveChart.ClearToMatchStyle
     
        'selectionne les champs necessaire
     
        i = "Tableau croisé dynamique" & MaFeuille
     
        ActiveSheet.PivotTables(i).AddDataField ActiveSheet. _
            PivotTables(i).PivotFields("PREL 2006"), _
            "Somme de PREL 2006", xlSum
        ActiveSheet.PivotTables(i).AddDataField ActiveSheet. _
            PivotTables(i).PivotFields("PREL total 2007"), _
            "Somme de PREL total 2007", xlSum
        ActiveSheet.PivotTables(i).AddDataField ActiveSheet. _
            PivotTables(i).PivotFields("PREL Total 2008"), _
            "Somme de PREL Total 2008", xlSum
        ActiveSheet.PivotTables(i).AddDataField ActiveSheet. _
            PivotTables(i).PivotFields("Total ch demande 2009"), _
            "Somme de Total ch demande 2009", xlSum
        ActiveSheet.PivotTables(i).AddDataField ActiveSheet. _
            PivotTables(i).PivotFields("ATT Logique"), _
            "Somme de ATT Logique", xlSum
     
        ' suppression du graphic avec clic droit sur le grafic
     
    End Sub
    Et excuse moi. c'est quoi qui avoir de fort problème de fiabilité? Ce code ou ceux que j ai fabriqué.

    et merci encore tu es très sympathique et je commence a apprendre plein de chose.

Discussions similaires

  1. [XL-2010] Alimenter une listbox avec les données d'une feuille par ordre décroissant
    Par lavineur dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/03/2015, 13h56
  2. [XL-2010] Remplir un userform avec les donnés d'une feuille.
    Par celthi dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 14/12/2014, 19h11
  3. [C#] graphes dynamique dans une Forms Windows
    Par mastronic dans le forum Débuter
    Réponses: 1
    Dernier message: 23/05/2013, 00h29
  4. Remplir des labels avec les données d'une feuille
    Par Liloo14 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/11/2012, 13h52
  5. Réponses: 5
    Dernier message: 01/06/2006, 16h18

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