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 :

[E-03] Exploiter un tableau croisé dynamique


Sujet :

Macros et VBA Excel

  1. #1
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut [E-03] Exploiter un tableau croisé dynamique
    Bonjour, j'ai plusieurs questions en ce qui concerne l'exploitation de tableaux croisés dynamiques.

    J'ai un tableau croisé dynamique dans lequel j'ai dans une colonne des équipements (machines) et dans l'autre le temps passé (temps d'intervention) sur chacune d'entre elle. Avec un bout de code vba, lors de la mise à jour du tableau croisé dynamique, je trie les temps par ordre décroissant, afin de voir les équipements sur lesquels on passe le plus de temps.

    1) Je voudrais que les 10 premiers équipements les plus pénalisants se mettent en couleur, mais je ne sais pas comment faire? Sachant que ce ne sont pas toujours les même, selon la période que l'on étudie, il faut donc que la mise en forme ne soit pas propre à un équipement, mais bien aux 10 premiers du TCD. Si un équipement au mois de janvier était dans les 10 premiers et donc était en couleur, si le mois suivant, il est en 12e position je ne veux plus qu'il soit en couleur.

    2) De la même manière, je voudrais pouvoir dans un autre tableau croisé dynamique faire de la mise en forme conditionnelle, c'est à dire mettre une ligne du TCD en couleur, si par exemple j'ai décidé (par code vba) que si un type d'intervention "X" apparaissait dans le TCD, je le mettait en jaune, si un autre type d'intervention "Y" apparaissait dans le TCD, je le mettais en Bleu... etc

    Parce que pour le moment j'ai mis par exemple le type d'intervention "X" en jaune, mais il se peut que selon la période étudié, celui ci n'apparaisse pas dans le TCD, et donc sur la prochaine période où il apparetra, il ne sera plus en jaune.

    Merci pour votre aide, j'espere avoir été clair.

  2. #2
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,
    comme tu le dis toi-même, ceci est à faire par code VBA, comme s'il s'agissait de cellules normales.

    1) Tu repères la première ligne data de ton Pivot et tu traites les 10 lignes.

    2) Même principe mais tu testes le contenu de la cellule avant.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  3. #3
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    1) Tu repères la première ligne data de ton Pivot et tu traites les 10 lignes.
    Le soucis, c'est que sa ne fonctionne pas ce système. J'ai mis le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Range("B31:C39").Select
        With Selection.Interior
            .ColorIndex = 40
            .Pattern = xlSolid
        End With
    Sa me met bien mes 10 première ligne en couleur. Le soucis, ce qui se passe c'est que ce ne sont pas toujours les 10 mêmes qui sont en tête et du coup, celui qui a été dans les 10 premiers et qui le mois d'après qui n'y est plus reste en couleur.

    Il n'y a pas moyen au lieu de cibler des cellules, de dire met les 10 premières ligne de ce tableau croisé dynamique en couleur et le reste du tableau en blanc? Sachant que le nombre d'équipements peut varier d'un mois sur l'autre?

  4. #4
    Membre habitué Avatar de Brunodm13
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 129
    Points : 143
    Points
    143
    Par défaut
    Bonsoir,

    Cela peut peut-être te convenir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("B31:C39").Interior.ColorIndex = 40
    Range("B40:C" & (Range("B31").End(xlDown).Row)).Interior.ColorIndex = xlNone
    Tu relances ce bout de code à chaque fois que tu fais une actualisation de ton TCD.

    Bruno

  5. #5
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Re et merci pour l'aide, mais j'ai encore une petite question:

    Je n'ai pas encore testé le bout de code, mais dans mon TCD, la ligne où j'ai mon total, je veux quelle reste en grise, je fait comment sachant qu'elle n'est pas toujours placée au même endroit?

    Merci

  6. #6
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    la ligne où j'ai mon total, je veux quelle reste en grise, je fait comment sachant qu'elle n'est pas toujours placée au même endroit?
    Bonjour,

    tu cherches cette ligne en partant du bas (end(xlup)) et tu remontes jusqu'à elle en testant ce que tu veux (Total.....). NB : c'est la dernière ligne.

    Et puis tu la colories.

    Rebelotte, comme tou le reste à la prochaine génération du pivot.

    Bonne journée.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  7. #7
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Peut tu me donner le type de code à utiliser, enfin je veux dire je n'ai jamais utilisé end xlup.

    Si tu peut m'envoyer le bout de code qui correspond à ce que je veux faire sans l'adapter à mon cas, mais avec un exemple général.

    Merci

  8. #8
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Salut Moilou2,

    pour retrouver la dernière ligne utilisée de la feuille "Pivot", en se basant sur la dernière cellule utilisée de la colonne A, voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        lrow = Sheets("Pivot").Range("A65535").End(xlUp).Row
    C'est normallement la ligne de ton total.
    Si ce n'est pas le cas, tu fais alors une boucle qui remonte jusqu'à ce que tu trouves, un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        For idx = lrow to 4 step - 1
          If Range("A" & idx).Value = "Total" Then
            Range("A" & idx & ":E" & idx).Select
                With Selection.Interior
                    .ColorIndex = 6
                    .Pattern = xlSolid
                End With
                Exit For
            End If
        Next idx
    je n'ai pas testé. A toi de vérifier si tu cherches Total, ou TOTAL... ou ...ou .
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  9. #9
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Ok merci beaucoup. je vais tester tout sa.

    Si maintenant je veux récupérer une valeur dans mon TCD en fonction d'un autre champ, je fait comment?

    Je m'explique, j'ai un TCD avec 2 colonnes comme suit:

    Technicien1 8h
    Technicien2 11h
    Technicien3 15h

    Et ainsi de suite, le nombre de techniciens peut varier selon les période sur lesquelles je lance mon TCD.

    Ma question est la suivante, comment je peut récupérer 11h, si avec un bout de code je lui demande de chercher dans mon TCD technicien2 et donc qu'il me récupère son nombre d'heures soit 11h.

    Et vise versa si je veux récupérer le nombre d'heures du technicien2...

    Merci

    Je pense qu'il faut faire une boucle et retenir la valeur dans une variable?

  10. #10
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    exactement.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  11. #11
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    C'est bien ce qui me s'emblait, mais je ne sais pas comment le traduire en code vba (comme tu peit le voir je suis débutant)...

    Peut tu m'indiquer la syntaxe à utiliser et je l'appliquerais à ma situation.

    Merci

  12. #12
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Re,
    c'est tout à fait similaire à ma réponse du 23/02/2009, 18h47.

    Vas-y, tu peux le faire.... seul.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  13. #13
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Donc il ne faut pas que j'ai des TCD qui soient les uns sur les autres???

    Il faut qu'ils soient tous côte à côte?

  14. #14
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Est ce que sa intéresse quelqu'un que je mette une explication plus détaillé sur un fichier word par exemple afin de mieux cibler ma demande parce que je crois que c'est plus complexe que se que vous pensez...

    Dites moi

  15. #15
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Bon j'ai mis un fichier joint je pense que se sera beaucoup plus simple.

    Merci pour l'aide
    Fichiers attachés Fichiers attachés

  16. #16
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    je voyais bien quelque chose comme sa, mais sa ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For Each cel In Range("b:b")
    If cel.Value = Dépannage Then
    Dépannage = ActiveCell.Offset(0, 1).Value
    Else
    End If
    Next

Discussions similaires

  1. Exploiter un tableau croisé dynamique
    Par onejock dans le forum Excel
    Réponses: 5
    Dernier message: 03/07/2008, 12h15
  2. filtrer tableau croisé dynamique sous excel
    Par kernel57 dans le forum Excel
    Réponses: 7
    Dernier message: 17/11/2006, 14h18
  3. Tableau croisé dynamique
    Par papy_tergnier dans le forum Access
    Réponses: 5
    Dernier message: 26/12/2005, 18h05
  4. tableau Croisé Dynamique
    Par Bjuice2 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/11/2005, 10h36
  5. tableau croisé dynamique sous delphi, comment ?
    Par Brice Yao dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/07/2005, 09h33

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