VBA Excel 2004 pour Mac

JLB

XLDnaute Nouveau
Bonjour
C'est la première fois que je travaille sur un MAC. J'ai un programme VBA que j'ai développé sous PC, puis porté sous Excel 2002 pour MAC. Jusqu'ici, pas de problème (ou presque pas!). Par contre sous Excel 2004, j'ai une erreur '1004' 'La méthode Copy de la classe Range a échoué' sur l'une des commandes de mon programme. Pour tester, j'ai écrit la macro suivante :
Sub Essai()
ActiveSheet.range('A1:A3').Copy
End sub
A l'exécution de ma seule commande, j'ai la même erreur.
Quelqu'un pourrait-il m'éclairer?
D'avance merci à tous
 

Dan

XLDnaute Barbatruc
Bonjour,

J'ai déjà aussi remarqué certains pb avec la combinaison d'instruction avec Copy sous MAC.

SI tu as fait un copier-coller venant d'une autre appli, efface tout et recopie complètement la macro au clavier. Sinon essaie donc ceci à la place :

Code:
Sub Essai()
ActiveSheet.range('A1:A3').Select
Selection.copy
End sub

Je ferai un test ce soir sur ta procédure afin de voir si j'ai exactement le même pb et te tiendrai au courant sur ce fil.

Si pb n'hésite pas

;)
 

Dan

XLDnaute Barbatruc
Re,

Juste une bête question, lorsque tu exécutes le pas à pas via F8, a feuille activée est bien celle dans laquelle tu veux copier tes infos ?
Si non, essaie ceci :
- Ferme VBA
- vas dans menu / excel / outils / macro / macro
- dans la fenêtre sélectionne ta macro ESSAI puis fais exécuter

Si cela ne vas pas, est-ce que tu peux envoyer ton fichier simplifié ici avec cette macro et la feuille concernée.

;)
 

JLB

XLDnaute Nouveau
C'était pas une bête question! mais oui, la feuille est bien activée. J'ai essayé ce que tu m'as indiqué et cela m'a ouvert une piste.
J'ai refait un test dont le détail est ci-dessous, et je ne comprends vraiment pas le pourquoi de la chose.

Mon code (très simple est une unique macro contenue dans un WorkBook nommé 'Classeur1' composé de 3 feuilles 'Feuil1', 'Feuil2' et 'Feuil3'.

Sub Macro1()
WorkBooks('Classeur1').WorkSheets('Feuil1').activate
ActiveSheet.Range('A1:A3').Copy ActiveSheet.Range('B1')
End Sub

C'est une macro de test! C'est la seule de mon projet (Classeur1) A/ Cette macro lancée depuis Excel (Outil, Macro, Macros, Macro1, Exécuter) fonctionne parfaitement.
B/ Cette macro lancée depuis l'éditeur VBA ...
B1/ Exécuter Sub/Userform
Ou
B2/ Outils, Macros, Macro1, Exécuter

... rend l'erreur: Erreur d'exécution '1004' La méthode Copy de la classe Range a échoué.
???

Nota1 : J'ai fait ce test car j'ai l'erreur 1004 (idem ci-devant) lors de l'exécution d'un projet très conséquent (5 modules et de nombreux Userforms) qui contient à un endroit une commande Copy.
Nota2 : Ce projet fonctionne sous Excel 2001 vs MAC (MAC OS 9)

Merci de ton aide
 

Dan

XLDnaute Barbatruc
Bonsoir,

Assez bizarement ta macro TEST focntionne bien chez moi dans un nouveau fichier que j'ai créé.

Vérifie les options cochées dans VBA vai menu / Outils / références.
Chez moi j'ai les 5 premières cochées. :

- VBA for application
- Microsoft excel 11
- OLE Automation
- Microsoft form 2.0
- Microsoft office 11

Et toi ?


;)
 

JLB

XLDnaute Nouveau
Bonsoir,

Désolé de n'avoir pas répondu ce jour. En fait je communique depuis la maison ou depuis le bureau et je n'ai pas toujours le MAC avec moi.
Par ailleurs, je n'ai pas (encore) de connexion Internet sur le Mac.

Je t'enverrai mon fichier demain si je trouve un instant (je suis charrette en ce moment à cause de ce problème de Mac...) et j'essaierai ta commande demain et te tiens au courant en fin de journée.
Merci de ton aide
Cordialement
 

Dan

XLDnaute Barbatruc
Ok, JLB pas de souci. Je viendrai voir demain soir.

Mais j'ai essayé en recopiant ta macro et la je n'ai aucun souci. Bizarre donc que tu en aies un. C'est comme si, le classeur gardait quelque chose en mémoire. Pour cette raison j'aimerais tout de même avoir ton fichier pour controler chez moi aussi sous MAC.

Bonne soirée

;)
 

JLB

XLDnaute Nouveau
Bonjour Dan

Quatre choses qu'il me semble bon de préciser :
1 - Mon classeur (et donc la macro qu'il contient) a été créé sous MAC OS. Ce n'est donc pas un transfert depuis PC
2 - Si je fais ma recopie en plusieurs étapes dans le genre :
ActiveSheet.range('A1:A3').copy
ActiveSheet.Range('B1').select
... etc, je planterai en erreur 1004 sur l'ordre Copy. J'avais déjà essayé. Donc, j'essaierai la syntaxe que tu m'as indiquée, mais j'y crois pas.
3 - J'ai essayé aussi en adressant ma plage de cellule de la façon suivante :
WorkBooks('Classeur1').WorkSheets('Feuil1').range('A1:A3').copy
.. et c'est le même problème
4 - J'ai essayé en chargeant des valeurs dans A1, A2 et A3 (activeSheet.range('A1') = 'AAA') avant d'en faire la copie... et c'est OK. Je ne pense pas que mon problème soit donc l'adressage de l'objet Range mais plutôt la méthode copy

Je t'enverrai néanmoins le fichier.
Bonne journée.
 

JeanMarie

XLDnaute Barbatruc
Bonjour

Si tu as placé sur des feuilles de calcul, des objets issus de la barre 'boîte à outils contrôle', le problème peut venir de ces objets.
Les contrôles activeX n'étant pas supportés, cela met une certaine pagaille de l'exécution du code.

Pour que l'aide de Dan, ou la mienne (pas trop le temps en ce moment) soit la plus efficace, je te conseille de poster ton fichier.

@+Jean-Marie
 

Discussions similaires

Réponses
3
Affichages
414