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 :

Code VBA pour filtrer des valeurs dans un tcd


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 28
    Points : 14
    Points
    14
    Par défaut Code VBA pour filtrer des valeurs dans un tcd
    Bonjour

    Voilà, je cherche à mettre à jour des valeur dans un tableau à partir de données récupérer sur un tableau croisé dynamique situé sur un autre fichier.

    Mes données dans mon TCD sont filtrées par semaine, et du coup je souhaiterai pouvoir aller directement chercher les valeur qui coresponde à la semaine, en faisant entrer en compte une cellule sur mon fichier de départ ou le numéro de semaine est déjà renseigné.

    J'ai utilisé le l'enregistreur de macro qui me donne ce 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
    [Sub bilan_navette()
    '
    ' bilan_navette Macro
    '
     
    '
        Workbooks.Open Filename:= _
            "X:\Tableaux de bord\Litiges\Navettes\Tbord Navettes 2013.xlsm", Notify:= _
            False
        Sheets("Indicateur_Dimitri").Select
        Range("B8").Select
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache.Refresh
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("SEM"). _
            ClearAllFilters
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("SEM"). _
            CurrentPage = "S39"
        Range("C7").Select
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache.Refresh
        Windows("Version finale.xlsm").Activate
    End Sub
    Pour définir la semaine qui m'intéresse, j'ai pensé utilisé ce code à la ligne 16:
    Workbooks("Version Final.xmls").Worksheet("Suivi d'activité").Range("C2").Value ==> légale à la valeur de la cellule C2

    Mais cela ne marche pas.

    Est ce que quelqu'un aurait une idée ou une solution?

    Je débute en VBA donc merci de votre indulgence et patiente

  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,

    Workbooks("Version Final.xmls").Worksheet("Suivi d'activité").Range("C2").Value ==> légale à la valeur de la cellule C2
    Je n'ai pas compris; est-ce que tu peux expliciter ? Est-ce que le classeur "Version Final.xmls" est ouvert ?

    Mais cela ne marche pas.
    Qu'est-ce qui se passe ? une erreur ? laquelle ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    Oui ce classeur est ouvert et c'est dans la cellule C2 de l'onglet "suivi d'activité" que ce trouve la semaine sur laquelle je voudrais filtrer mon tcd.
    En fete en laissant le code d'origine avec "S39"en ligne 16, je viens bien filtrer dans mon tcd la semaine 39. Si je remplace par 38 cela le prend bien en compte et modifie le filtre.

    Moi je voudrais juste qu'à la place de "S39", la macro vienne prendre en compte le numero de semaine "Sxx" qui se trouve dans la cellule C2 de mon onglet suivi d'activité. Est ce que c'est un souci de variable?

    Le message marqué est:
    Erreur d'exécution "9", l'indice n'appartient pas à la sélection
    Merci pour ton aide

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 161
    Points : 155
    Points
    155
    Par défaut
    Bonjour,
    peut être comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       CurrentPage = sheets("suivi d'activité").cells(2,3)

  5. #5
    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 une erreur avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("SEM").CurrentPage = _
            Workbooks("Version Final.xmls").Worksheet("Suivi d'activité").Range("C2").Value
    et que tu as une erreur, c'est que la valeur de C2 est incorrecte. Quelle est-elle et est-ce que sa valeur existe dans les items de SEM ?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    Ma valeur en C2 c'est "S39", donc on la retrouve bien normalement dans mon tcd. Mais le fait qu'il y a une lettre et deux chiffre, il ne reconnait pas la valeur?

    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
    Sub bilan_navette()
    '
    ' bilan_navette Macro
    '
     
    '
     
        Workbooks.Open Filename:= _
            "X:\Tableaux de bord\Litiges\Navettes\Tbord Navettes 2013.xlsm", Notify:= _
            False, ReadOnly:=True
        Sheets("Indicateur_Dimitri").Select
        Range("B8").Select
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache.Refresh
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("SEM"). _
            ClearAllFilters
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("SEM"). _
            CurrentPage = Sheets("suivi d'activité").Cells(2, 4)
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache.Refresh
        Windows("Version finale.xlsm").Activate
     
    End Sub
    Toujour le meme message d'erreur.

  7. #7
    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
    "Cells(2, 4)", c'est D2, pas C2. Maintenant, tu ne mets pas le nom du classeur de la feuille "Sheets("suivi d'activité")' ?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    C'était fais exprès de mettre la cellule D2 dans le test. Je te ressaure il y a bien une valeur présente dans cette cellule. Ca ne marche toujorus 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
    Sub bilan_navette()
    '
    ' bilan_navette Macro
    '
     
    '
     
        Workbooks.Open Filename:= _
            "X:\Tableaux de bord\Litiges\Navettes\Tbord Navettes 2013.xlsm", Notify:= _
            False, ReadOnly:=True
     
        Sheets("Indicateur_Dimitri").Select
        Range("B8").Select
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache.Refresh
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("SEM"). _
            ClearAllFilters
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("SEM"). _
            CurrentPage = Cells(2, 4)
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache.Refresh
        Windows("Version finale.xlsm").Activate
    Je suis tombé sur ce code en cherchant un peu sur le forum:
    la requette est presque similaire à la mienne:
    http://www.developpez.net/forums/d11...filtre-resolu/

  9. #9
    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 tu peux mettre un classeur en pièce jointe ? Ca vient peut-être de la disposition du TCD.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    Ca va être compliqué mais j'ai une capture d'écran. En gros il faudrait que ma cellule en C2 sur mon fichier original soit égale à la cellule B1 de mon TCD


  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
    Oui, mais je préfère le fichier. Si tu ne peux pas mettre l'original en PJ, fais en un sans données confidentielles, et limité au seul TCD que tu pourras mettre en PJ.

Discussions similaires

  1. [VBA-E] Comparer des valeurs dans des cellules
    Par michel2662 dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 22/06/2017, 15h00
  2. Réponses: 7
    Dernier message: 10/03/2015, 14h00
  3. [Toutes versions] Macro ou code VBA pour effacer des caracteres et aller a la ligne dans un meme cellule
    Par ghisunit dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 07/04/2012, 15h29
  4. Réponses: 6
    Dernier message: 28/12/2007, 22h34
  5. [VBA-E] Lire des valeurs dans un fichier excel
    Par nicobox dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/05/2006, 15h40

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