Macros non utilisables d'Excel 2003 à Excel 2007

Bonjour,

Un de mes utilisateurs vient de migrer d'Excel 2000/2003 à Excel 2007, son problème est qu'il ne peut plus utiliser les macros qui avaient été crées sous l'ancienne version d'Excel. Quand il veut exécuter une macro dans un de ses tableau cela lui marque "Impossible d'exécuter la macro xxx. Il est possible qu'elle ne soit pas disponible dans ce classeur ou que toutes les macros soient désactivées".

Dans le centre de confidentialité, j'ai activé les macros automatiquement, mais cela ne change rien au problème.

Comment se fait-il qu'en passant d'une version à l'autre cela bloque les macros ? et comment remédier à ce problème ?

Merci d'avance.

Bonjour

Avec le fichier, quelqu'un pourrais peut-etre essayer de l'adapter, d'apres ce que j'ai entendu, les modification à faire sont parfois minimes

Cordialement

Bonsoir forum,

Vérifie que les fichiers n'ont pas été déplacés (changement de répertoire ou autres)

- Fait

Outil/Macro/Macros

ce qui te liste toutes les macros,

et regarde l'adresse complète de la macro,

si l'adresse ressemble à un C:/..................xls, tu n'as plus qu'à réinitialiser tes boutons avec

les bonnes adresses.

Rien est perdu.

Bonne soirée

Claude.

dubois a écrit :

Bonsoir forum,

Vérifie que les fichiers n'ont pas été déplacés (changement de répertoire ou autres)

- Fait

Outil/Macro/Macros

ce qui te liste toutes les macros,

et regarde l'adresse complète de la macro,

si l'adresse ressemble à un C:/..................xls, tu n'as plus qu'à réinitialiser tes boutons avec

les bonnes adresses.

Rien est perdu.

Bonne soirée

Claude.

je suis en version 2007 d'excel, et donc ce ne sont pas les mêmes menus, j'ai fait "afficher les macros" donc je vois bien les macros mais je ne vois pas d'adresse complète... C'est vraiment une galère ce problème...

Bon j'ai réussi à activer ces macros... mais j'ai une erreur qui bloque le traitement de la feuille : "erreur d'exécution '1004' : impossible de lire la propriété PivotFields de la classe PivotTable."

savez vous quel est le problème dans le code ?

Je vous met le code :

Sub tableau()
'
' tableau Macro
' Macro enregistrée le 26/08/2005 par mcguilbon
'

'
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "CalculModulation2!R1C1:R65535C12").CreatePivotTable TableDestination:="", _
        TableName:="Tableau croisé dynamique1"
    ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
    ActiveSheet.Cells(3, 1).Select
    ActiveSheet.PivotTables("Tableau croisé dynamique1").SmallGrid = False
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("SEMAINE" _
        )
        .Orientation = xlColumnField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "MATRICULE")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("NOM")
        .Orientation = xlRowField
        .Position = 2
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "HEURE EFF")
        .Orientation = xlRowField
        .Position = 3
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("THEO")
        .Orientation = xlRowField
        .Position = 4
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("H EFF")
        .Orientation = xlDataField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("ABS")
        .Orientation = xlDataField
        .Position = 2
    End With
    Range("E5").Select
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("NB H EFF"). _
        Function = xlSum
    Range("E6").Select
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("NB ABS"). _
        Function = xlSum
    Range("C5").Select
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("HEURE EFF"). _
        Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
        False, False)
    Range("B5").Select
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("NOM"). _
        Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
        False, False)
    Range("A5").Select
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("MATRICULE"). _
        Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
        False, False)
    Range("H9").Select
    ActiveSheet.PivotTables("Tableau croisé dynamique1").RowGrand = False
    Columns("B:B").ColumnWidth = 19.14
    Columns("A:A").ColumnWidth = 6.86
    Columns("D:D").ColumnWidth = 7.14
    Columns("D:D").ColumnWidth = 6
    Columns("C:C").ColumnWidth = 8
    Sheets("Feuil4").Select
    Sheets("Feuil4").Name = "modul"
    Range("F27").Select
End Sub

Dans VBA laprtie de code en erreur est celle ci :

ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("NB H EFF"). _

Function = xlSum

Merci de votre aide

Bonjour,

C'est certainement le FUNCTION.... qui te pose problème. C'est un champ calculé ?

Le mieux est de placer ton fichier car les macros avec un TCD ne sont pas toujours faciles à optimiser sans analyser sur un fichier.

A te relire

Dan

Nad-Dan a écrit :

Bonjour,

C'est certainement le FUNCTION.... qui te pose problème. C'est un champ calculé ?

Le mieux est de placer ton fichier car les macros avec un TCD ne sont pas toujours faciles à optimiser sans analyser sur un fichier.

A te relire

Dan

oui c'est un champs calculé, je précise que ce code fonctionne parfaitement sous Excel 2000/2003, et que c'est au passage en 2007 que j'ai tous ces problèmes.

Le problème est que les fichiers sont trop lourds pour pouvoir les mettre ici...

Comment faire....

re,

Je n'ai pas besoin de toute la base de données. Supprime des lignes de ton fichier et laisse moi le TCD (ou un tableau montrant le résultat du TCD) et une base de données minimum.

A te relire

Dan

Quelques explications :

Le fichier extract2.xls (fichier principal avec 2 feuilles) : calculmodulation2 (feuille où sont les macros) et la feuille 080209 (c'est un exemple du résultat que j'attends, et qui fonctionne sous excel2000)

Le fichier extract3.xls (fichier de données qui est appelé par la macro du fichier extract2.xls).

En résumé : cliquer sur "extraction" dans le fichier extract2.xls (feuille calculmodulation2), cela ouvre le fichier extract3.xls. Ensuite cliquer sur "mise en forme tableau" et cela doit ouvrir une autre feuille dans extract2.xls sur le même modèle que la feuille exemple 080209.

Mon soucis intervient avec Excel 2007 quand je clique sur la macro "mise en forme tableau"

Merci beaucoup de votre aide

Re,

La macro est presque terminée mais pourrais-tu me dire quel nom tu veux donner à la feuille contenant le TCD et d'où tu le prends.

A te relire

Dan

Nad-Dan a écrit :

Re,

Merci de ton fichier.

La macro est presque terminée mais pourrais-tu me dire quel nom tu veux donner à la feuille contenant le TCD et d'où tu le prends.

A te relire

Dan

Merci pour le travail ! en fait ce sont des données extraites dans le fichier extract3.xls provenant d'une base access, pour le nom c'est comme tu veux (même feuil1 ça va).

re,

Change le code de ta macro par celui-ci dessous puis attribue le à ton bouton :

Sub tableau()
'Macro dan pour gsans le 27/02/09 - XL Pratique
Dim db As Range

Set db = ThisWorkbook.ActiveSheet.Range("A1:L" & Range("C" & Rows.Count).End(xlUp).Row)
Application.ScreenUpdating = False
ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:=db, TableDestination:="", _
    TableName:="TCD"
With ActiveSheet.PivotTables("TCD")
    .SmallGrid = False
    .PivotFields("SEMAINE").Orientation = xlColumnField
    With .PivotFields("MATRICULE")
        .Orientation = xlRowField
        .Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
        False, False)
    End With
    With .PivotFields("NOM")
        .Orientation = xlRowField
        .Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
        False, False)
    End With
    With .PivotFields("HEURE EFF")
        .Orientation = xlRowField
        .Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
        False, False)
    End With
    .PivotFields("THEO").Orientation = xlRowField
    .PivotFields("H EFF").Orientation = xlDataField
    .PivotFields("ABS").Orientation = xlDataField
    .PivotSelect "", xlDataAndLabel
    Selection.Columns.AutoFit
End With
Application.CommandBars("PivotTable").Visible = False
End Sub

Amicalement

Dan

Nad-Dan a écrit :

re,

Change le code de ta macro par celui-ci dessous puis attribue le à ton bouton :

Sub tableau()
'Macro dan pour gsans le 27/02/09 - XL Pratique
Dim db As Range

Set db = ThisWorkbook.ActiveSheet.Range("A1:L" & Range("C" & Rows.Count).End(xlUp).Row)
Application.ScreenUpdating = False
ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:=db, TableDestination:="", _
    TableName:="TCD"
With ActiveSheet.PivotTables("TCD")
    .SmallGrid = False
    .PivotFields("SEMAINE").Orientation = xlColumnField
    With .PivotFields("MATRICULE")
        .Orientation = xlRowField
        .Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
        False, False)
    End With
    With .PivotFields("NOM")
        .Orientation = xlRowField
        .Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
        False, False)
    End With
    With .PivotFields("HEURE EFF")
        .Orientation = xlRowField
        .Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
        False, False)
    End With
    .PivotFields("THEO").Orientation = xlRowField
    .PivotFields("H EFF").Orientation = xlDataField
    .PivotFields("ABS").Orientation = xlDataField
    .PivotSelect "", xlDataAndLabel
    Selection.Columns.AutoFit
End With
Application.CommandBars("PivotTable").Visible = False
End Sub

Amicalement

Dan

Je viens de tester la macro avec la personne qui utilise ces fichiers, c'est parfait !

Merci encore pour ton travail.

Amicalement

Greg

re,

OK. Sache que certaines macros peuvent être amélirorée dans ton fichier.

N'oublie pas de mettre RESOLU sur le fil en utilisant la liste déroulante en bas à gauche de la fenêtre de ton premier message

Merci de ta participation.

Amicalement

Dan

Nad-Dan a écrit :

re,

OK. Sache que certaines macros peuvent être amélirorée dans ton fichier.

N'oublie pas de mettre RESOLU sur le fil en utilisant la liste déroulante en bas à gauche de la fenêtre de ton premier message

Merci de ta participation.

Amicalement

Dan

Ok merci bien Dan, à une prochaine

Salut Dan! J'ai le même problème c'est à dire avec "erreur d'exécution '1004' : impossible de lire la propriété PivotFields de la classe PivotTable."

Mon fichier a été réalisé sur Excel 2000 et je migre vers Excel 2007.

Pourrais tu m'aider?

Je t'envoie le code par MP car j'aimerais qu'il reste privée.

Merci d'avance.

Rechercher des sujets similaires à "macros utilisables 2003 2007"