Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
VBA ne veut pas exécuter un code qu'il a produit lui-même
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 !
Re : VBA ne veut pas exécuter un code qu'il a produit lui-même
Bonjour,
Merci beaucoup pour les nombreuses réponses.
La proposition de Pierrot a résolu ce problème.
Cependant, "Activate" me pose problème à un autre endroit du code:
Private Sub CommandButton1_Click()
Sheets("XY").Range("A1:J100").ClearContents
Workbooks("XXX.xls").Activate
Range("B3:J100").Copy
Windows("YYY.xls").Activate
Sheets("XY").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("ZZZ").Select
End Sub
Workbooks("XXX.xls").Activate ne fonctionne pas, ce qui a comme conséquence que la copie est faite dans la feuille où j'ai le bouton déclenchant la macro, au lieu de la faire dans le Workbooks("XXX.xls").
Re : VBA ne veut pas exécuter un code qu'il a produit lui-même
Ah, tu travailles sur plusieurs classeurs ...
Dans ce cas, il vaut mieux éviter de jouer avec les Activate.
Définis plutôt une variable de type Workbook, que tu affectes ainsi:
Code:
Dim o_WBK as Workbook
Set o_WBK = Workbooks(.....)
A partir de là, tu n'as plus qu'à jouer avec ton objet. Dans ton code, ça donnerait:
Code:
Private Sub CommandButton1_Click()
Sheets("XY").Range("A1:J100").ClearContents
Dim o_WBK as Workbook
Set o_WBK = Workbooks("XXX.xls")
o_WBK.Range("B3:J100").Copy
Dim o_WBK2 as Workbook
Set o_WBK2 = Workbooks("YYY.xls")
WBK2 .Sheets("XY").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
WBK2 .Sheets("ZZZ").Activate
End Sub
Re : VBA ne veut pas exécuter un code qu'il a produit lui-même
Re,
lorsque je transpose le code dans mon fichier, la partie suivante:
WBK2 .Sheets("XY").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
se met tout de suite en rouge et j'ai une erreur de compilation
Re : VBA ne veut pas exécuter un code qu'il a produit lui-même
Bonjour,
Je t'en prie! Tu n'as vraiment aucune raison de t'excuser pour ce petit lapsus.
Cependant, hélas, Excel a trouvé un nouveau pépin: il affiche une erreur d'exécution 438: "Propriété ou méthode non gérée par cet objet" et se bloque à la ligne o_WBK.Range("B3:J100").Copy.
Désolé de t'incommoder encore avec cela.
Ce que je trouve tout de même extrêmement bizarre, c'est que Excel ne sait pas exécuter un code qu'il a produit lui-même par l'enregistreur de macros!
Re : VBA ne veut pas exécuter un code qu'il a produit lui-même
Bonjour à tous,
il faut rajouter le nom de la feuille :
Code:
o_WBK.Sheets("NomFeuille").Range("B3:J100").Copy.
une petite précision, pour un code placé dans un module standard, les actions sont effectuées dans le classeur actif et sur la feuille active, lorsque les objets "sheets" et "workbooks" ne sont pas spécifiés...
- 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