je suis perdu ! code VBA

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

T

Thor

Guest
Bonjour !

nouveau sur ce forum, je decouvre VBA sous excel et je suis un oeu largué !

en effet j'ai enregistré une macro assez simple grace à l'enregistreur.
la voici:

Sub toto1()
'
' toto1 Macro
' Macro enregistrée le 16/01/2005 par dt
'
' Touche de raccourci du clavier: Ctrl+a
'
Rows("4:4").Select
Selection.Copy
Sheets("Feuil2").Select
Rows("9:9").Select
ActiveSheet.Paste
Range("C15").Select
End Sub

j'ai fait un copier coller de cette routine dans le code d'un bouton dans une autre feuille de calcul excel:

Private Sub CommandButton4_Click()
Rows("4:4").Select
Selection.Copy
Sheets("Feuil2").Select
Sheets("feuil2").Activate
Rows("9").Select
ActiveSheet.Paste
Range("C15").Select

End Sub

et lorsque je clique sur le bouton j'obtiens un magnifique message d'erreur sur la ligne Rows("9").Select !!

je ne comprends pas !
est ce quelqu'un peut m'aider !

merci

Thor
 
Merci Salim,

je viens d'essayer, j'ai ecrit:

Private Sub CommandButton4_Click()
Rows("4:4").Select
Selection.Copy
Sheets("Feuil2").Select
Sheets("feuil2").Activate
Rows("9:9").Select
ActiveSheet.Paste
Range("C15").Select

End Sub

et j'obtiens la meme erreur !! sur la ligne

Rows("9:9").Select

Si tu as d'autres idées !!

Thor
 
Re Thor

tu peux essayer comme ceci
Rows("4:4").Copy Destination:=Worksheets("feuil2").Range("9:9")
normalement cela devrait aller je crois que cela viens du fait que le code soit placer dans une procédure privée Private Sub CommandButton4_Click() de la feuille 1 qui provoque cette erreur donc il faut spécifier la destination pour que cela fonctionne . en attendant l'intervention des masters du Forum s'ils passent par ici pour confirmer ou infirmer cette hypothèse.

salim
 
Re :
Exactement. Une Private Sub de Feuil1 ne peut pas contrôler Feuil2.
C'est pourquoi il est préférable de faire appel à Toto1 qui elle peut faire tout ce qu'elle veut...
Mais bien sur en ce qui concerne le collage l'adressage directe est Top.
Mais la question était pourquoi je ne peux pas sélectionner une ligne...
A+
 
Bonjour

Merci à tous pour vos suggestions !
Galopin, j'ai essayé comme tu le suggeres et cela ne marche pas mieux.
Salim, j'ai essayé, Cela fonctionne !!! SUPER !
Mais !
lorsque je fais :

Private Sub CommandButton4_Click()
For i = 1 To 5
Rows("i:i").Copy Destination:=Worksheets("feuil2").Range("i+1:i+1")
Next i

cela ne passe pas !

Merci pour votre aide !

Thor
 
Bonsoir Thor,galopin01, et le Forum

Thor je pense que ça ne fonctionne pas parceque tu utilises la mauvaise propriété de l'objet Range en l'occurence la propriété Rows "j'espère ne pas avoir dit trop de bêtises LOL ;-), je te propose d'essayer avec la propriété Cells du même objet comme ceci:

Private Sub CommandButton1_Click()
Dim Bcle As Byte
   For Bcle = 4 To 9 'represente les lignes 4 à 9
      Sheets(1).Cells(Bcle, 1).Copy (Sheets("Feuil2").Cells(Bcle + 1, 1))
   Next
End Sub

Tiens nous au courant ;-)
salim
 
Re tout le monde

Oui, galopin01 en appelant la sub ça marche aussi bien, sinon pour rendre caduque ma précédente intervention voici un code qui fonctionne avec la propriété Rows, en plus j'avais oublié que Thor voulait copier toute la ligne avec cette procedure c'est chôse faite ;-).

Private Sub CommandButton1_Click()
Dim Bcle As Byte
For Bcle = 4 To 9 'represente les lignes 4 à 9
Sheets(1).Rows(Bcle).Copy (Sheets("Feuil2").Rows(Bcle + 1))
Next
End Sub

salim.
 
Oui,
L'avantage de toto1 est qu'on peut le bricoler à volonté, elle peut intervenir à volonté sur n'importe quelle feuille même s'il est indispensable de sélectionner.
C'est pourquoi il est préférable de laisser le moins de chose possible dans les modules de feuilles, l'idéal serait juste des Call...

Le revers de la médaille c'est que la macro devient visible depuis le menu Outils macro du classeur, mais de 2 maux il faut choisir le moindre.
Ca reste à mon avis une bonne habitude à prendre
A+
 
Bonjour le fil,

Je passe par ici par hasard (par Toutatis. Arf !)

Je reprends la ligne de Thor qui ne fonctionne pas :

"Rows("i:i").Copy Destination:=Worksheets("feuil2").Range("i+1:i+1")"

C'est normal.
Si tu repasses par là, essaie :
Rows("i:i").Copy Destination:=Worksheets("feuil2").Range(i+1 & ":" i+1)


Abel.
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
549
Réponses
17
Affichages
1 K
Réponses
1
Affichages
498
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
862
Retour