VBA Excel 2004 pour Mac

  • Initiateur de la discussion Initiateur de la discussion JLB
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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

😉
 
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.

😉
 
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
 
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 ?


😉
 
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
 
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

😉
 
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.
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour