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
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
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 SubDans 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 SubAmicalement
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 SubAmicalement
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.