VBA ne veut pas exécuter un code qu'il a produit lui-même

  • Initiateur de la discussion Initiateur de la discussion Aloha
  • 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 !

Aloha

XLDnaute Accro
Bonjour,

J'ai enregistré une macro et en voulant l'exécuter, VBA se heurte à: Range("A1:J100").Select

Le contexte:

Sheets("XY").Select
Range("A1:J100").Select
Selection.ClearContents

Où peut résider ce problème quelque peu étonnant?

Bonne journée

Aloha
 
Re : VBA ne veut pas exécuter un code qu'il a produit lui-même

Bonjour à tous,

A noter que les "select" ou "activate" sont rarement utiles en vba... on pourrait coder ainsi :
Code:
Sheets("XY").Range("A1:J100").ClearContents
bon après midi
@+
 
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").

A+

Aloha
 
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

Aloha
 
Re : VBA ne veut pas exécuter un code qu'il a produit lui-même

Re,

j'ai modifié:
o_WBK2 .Sheets("XY").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
o_WBK2 .Sheets("ZZZ").Activate

mais malheureusement cela ne change rien ni au rouge ni au type d'erreur.

Aloha
 
Re : VBA ne veut pas exécuter un code qu'il a produit lui-même

Décidément, il va me tuer ce mal au ventre ...

Tu as un espace entre o_WBK2 et .Sheets.
Enlève le sur les deux lignes, et ça devrait aller beaucoup mieux.

Encore désolé ...
 
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!

Bonne journée

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

bonne journée
@+
 
Re : VBA ne veut pas exécuter un code qu'il a produit lui-même

Bonjour Pierrot,

Merci beaucoup! C'était cela le maillon manquant et le code fonctionne à présent!

Chapeau à tous ceux qui se sont penchés sur mon petit problème!

Bonne journée et au prochain petit problème!

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

N
Réponses
4
Affichages
796
Nicoww
N
D
Réponses
24
Affichages
5 K
D
L
Réponses
1
Affichages
986
C
Réponses
10
Affichages
2 K
chris1234
C
B
Réponses
9
Affichages
2 K
Biork
B
H
Réponses
6
Affichages
4 K
Helios67
H
T
Réponses
2
Affichages
17 K
G
Retour