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 :

tableau croisé dynamique avec plage de sélection variable


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Points : 11
    Points
    11
    Par défaut tableau croisé dynamique avec plage de sélection variable
    Bonjour,

    Tout d'abord merci à ce forum d'exister, il m'a déjà pas mal "dépatouillé"

    Je suis en stage de fin d'études DUT gestion des entreprises et je travaille pour créer des outils de gestion informatisés et automatisés pour une EURL qui vient d'être créée. Je suis découvre donc les macros et VBA pour Excel, sur le tas, depuis 3 semaines...

    Là j'ai commencé à écrire une macro pour créer un tableau croisé dynamique en cliquant sur un bouton.

    Je suis passée par l'enregistrement automatique et j'ai commencé à modifier.
    La sélection de la plage de référence pour mon tableau peut varier.
    j'ai donc créé une InputBox qui me demande le N° de la dernière ligne à sélectionner (cette partie là fonctionne très bien)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    'détermine le N° de la dernière ligne à sélectionner avec une boîte de dialogue
    Dim ligne As String
    ligne = InputBox("N° de la dernière ligne à sélectionner ?", "sélection de l'ensemble des travaux du devis")
          'si clic sur "annuler", sort de la macro
    If ligne = vbNullString Then
    End
     
      Else
    'sinon sélectionne l'ensemble des Désignation,  u et Qte du devis
          Range("B10:D" & ligne).Select
    C'est ensuite que cela se corse.
    La partie de macro enregistrée est la suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     'crée un rapport de tableau croisé dynamique débutant en cellule "M2"
        ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
            "'Devis (2)'!R10C2:R27C4").CreatePivotTable TableDestination:= _
            "'[DevisFactures.xls]Devis (2)'!R2C13", TableName:= _
            "Tableau croisé dynamique2", DefaultVersion:=xlPivotTableVersion10
    Je coince au niveau de SourceData : La cellule de fin de mon tableau de sélection n'est pas R27C4 (j'ai mis du temps à comprendre que cela signifiait ligne 27 colonne4, soit "D27"...) mais quelque chose comme R "ligne" C4.

    Comment est-ce que j'écris ça ? (R&ligneC4 ça ne fonctionne pas)

    Merci d'avance pour votre aide.

    A bientôt
    Nat

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    Remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SourceData:= _
            "'Devis (2)'!R10C2:R27C4").
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SourceData:= _
        worksheets("Devis (2)").range("B10:D" & ligne ).Address(, , xlR1C1, True)).

    bonne soirée
    michel

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Merci à toi SilkyRoad, cela fonctionne impec.

    Une dernière question tout de même : à quoi correspond la fin du code que tu m'as donné ? le début c'est bon (ma feuille de travail, la sélection de mon tableau), mais la fin...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "woksheet(9).range("B10:D"&ligne).Address(, , xlR1C1, True)
    Avoir un code qui fonctionne c'est super, mais j'aime bien comprendre ce que j'écris sinon je ne peux pas réutiliser ces infos pour créer d'autres macros.

    Si tu as un peu de temps pour m'expliquer...

    Encore merci
    Nat

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    il permet de convertir l'adresse de la plage de cellules (par exemple A1:E5) en style R1C1 compatible avec le format nécessaire à la création du TCD par macro ([NomClasseur]Feuil1!R1C1:R5C4)


    bonne journée
    michel

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup pour ton aide rapide et précieuse.

    Bonne journée
    nat

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Pour info, j'ai eu un autre code qui fonctionne aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SourceData:= _
           "'Devis (2)'!R10C2:R" & ligne & "C4")
    Nat

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

Discussions similaires

  1. [XL-2003] Problème tableau croisé dynamique avec variable
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 22/05/2012, 18h27
  2. Création d'un tableau croisé dynamique avec base données variable
    Par div20 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/01/2012, 23h43
  3. Créer un tableau croisé dynamique avec C#
    Par GreatDeveloperOnizuka dans le forum C#
    Réponses: 2
    Dernier message: 10/07/2009, 09h34
  4. Tableau croisé dynamique avec critère
    Par gege87270 dans le forum Macros et VBA Excel
    Réponses: 35
    Dernier message: 12/06/2008, 14h22
  5. [VBA] excel croisé dynamique et plage de données variables
    Par totoche dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 04/01/2006, 18h14

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