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 :

Compatibilité 2007 -> 2003


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Par défaut Compatibilité 2007 -> 2003
    Bonjour,

    J'ai créé une macro plutôt simple sous Excel 2007 pour la mettre à disposition de personnes qui utilisent Excel 2003.
    Malheureusement, ils ont une erreur '438' (Propriété ou méthode non gérée par cet objet), et je n'ai pas accès à Excel 2003 pour voir d'où vient l'erreur...
    Pouvez-vous m'aider trouver le soucis ?

    Ma macro supprime les données existantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets(1).Select
    Cells.Select
    Selection.Delete Shift:=xlUp
    Puis dé-fusionne des cellules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets(2).Select
    Range("A6:D6").Select
    Selection.UnMerge
    Elle cherche la fin du tableau de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim ligne_fin As Integer
    ligne_fin = 26
    While Cells(ligne_fin, 1).Value <> "Number"
        ligne_fin = ligne_fin + 1
    Wend
    Et crée un tableau pivot (macro enregistrée) :
    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
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Données!R25C1:R4008C8", Version:=xlPivotTableVersion10).CreatePivotTable _
        TableDestination:="Reporting!R3C1", TableName:="Tableau croisé dynamique1", _
        DefaultVersion:=xlPivotTableVersion10
    Sheets("Reporting").Select
    Cells(3, 1).Select
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Number")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Signature")
        .Orientation = xlPageField
        .Position = 1
    End With
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Signature"). _
        CurrentPage = "(All)"
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Signature"). _
        EnableMultiplePageItems = True
    ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique1").PivotFields("Signature"), _
        "Nombre de Signature", xlCount
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Actor role")
        .Orientation = xlColumnField
        .Position = 1
    End With
     
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Signature")
        .Orientation = xlPageField
        .Position = 1
    End With
    Enfin, elle sélectionne une cellule :
    Je n'ai jamais fait de VBA sous Excel 2003, mais je ne pensais pas que c'était vraiment différent. Je suis bien curieux de savoir en quoi ca diffère...

    Merci d'avance !

  2. #2
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Ils peuvent te dire sur quelle ligne ça plante ?

    Je suis sous Excel 2003, je vais regarder. Microsoft aime bien rajouter des propriété ou des options dans les méthodes. J'ai eu pas mal de problème car ici, beaucoup de gens utilisent encore Excel 2000 !!!

    Au niveau du PivotCaches, je n'ai pas de méthode Create mais une méthode Add avec les paramètres SourceType et SourceData.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Par défaut
    Je ne m'attendais pas à une réponse si rapide !

    Je ne peux malheureusement pas dire où ca plante, parce que je n'ai pas accès à Excel 2003 (ca serait trop facile), et que les personnes qui utilisent cette macro ne comprennent rien du tout aux macros, alors demander qu'ils ouvrent le debuggeur est asez utopique.

    Je vais cependant creuser la piste de la méthode Add de PivotCaches.
    Merci pour ca ZebreLoup !
    Je ne maitrise pas les objets PivotCaches, j'avais fait cette partie de macro directement avec l'enregistreur et un peu de nettoyage...

    Ps : sur 2007, la méthode Add n'existe pas... Il me faudra donc faire deux macros, selon la version d'Excel utilisée.

  4. #4
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Si tu veux, dis moi ce que tu as comme colonnes et ce que tu veux faire comme TCD. Je peux le faire aussi à l'enregistreur de macro sous mon 2003 et t'envoyer ce que ça donne.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Par défaut
    Alors j'ai un tableau de la forme suivante (je te mets les vrais noms d'en-têtes pour que ca colle avec la macro que j'ai posté plus haut) :

    Colonne A : Number -> en étiquette de ligne

    Colonne C : Actor Role -> en etiquette de colonne
    Colonne D : Signature -> en filtre du tableau, et le "Nombre de signatures" en valeurs du tableau pivot.

    La macro enregistrée fait :
    - Créer tableau pivot des colonnes A à H, lignes 25 à la variable ligne (disons 100), dans un onglet existant
    - Mettre les étiquettes de ligne (Col A) et de colonne (Col C), puis les valeurs (Col D) et le filtre (encore Col D).

    Merci encore pour ton aide !!

  6. #6
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Un code qui devrait passer sous 2003. En espérant qu'il passe aussi sous 2007...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim pvc As PivotCache
    Dim pvt As PivotTable
    Set pvc = ActiveWorkbook.PivotCaches.Add(xlDatabase, "Données!R25C1:R4008C8")
    Set pvt = pvc.CreatePivotTable("Reporting!R3C1", "TCD2")
     
    pvt.PivotFields("Number").Orientation = xlRowField
    pvt.PivotFields("Actor Role").Orientation = xlColumnField
    pvt.PivotFields("Signature").Orientation = xlPageField
    pvt.PivotFields("Signature").Orientation = xlDataField
    pvt.DataFields(1).Function = xlCount

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Par défaut
    Super ZebreLoup, je te remercie pour ton aide.
    Avec quelques modifs légères, ma macro marche désormais sous Excel 2003 et 2007.
    Parfait !!

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

Discussions similaires

  1. [PPT-2007] Compatibilité entre PPT 2003/2007
    Par maxime115 dans le forum VBA PowerPoint
    Réponses: 4
    Dernier message: 19/10/2011, 13h50
  2. [VBA/Excel] References Compatibilite Office 2007 ==> Office 2003
    Par daniel_gre dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/09/2008, 19h03
  3. Compatibilité macros outlook 2003 et 2007 ?
    Par ledev95 dans le forum Outlook
    Réponses: 2
    Dernier message: 07/08/2008, 17h06
  4. Compatibilité VBA office 2003 en 2007
    Par C-E.B dans le forum Microsoft Office
    Réponses: 2
    Dernier message: 24/01/2008, 15h08
  5. compatibilité VB6 ACCESS 2003
    Par ZDAZZ dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 14/02/2007, 18h16

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