Collage spécial dans la première ligne vide d'une autre feuille

Résolu
julien paget -  
 Julien paget -
Bonjour,

Etant debutant dans le VBA, J hesite entre balancer l ordi par la fenetre ou me prendre avec son chargeur.

Je vous explique.

J ai creer une macro qui copie une selection precise de la feuille 2 pour la copier dans la feuille 4 en lui otant les formules etc. Ca c est bon. Maintenant j aimerais lui faire comprendre qu elle doit coller cette selection dans la ligne vide suivante. A l heure actuelle elle le copie uniquement dans la cellule active.
Comment lui faire comprendre qu elle doit copier dans la ligne vide du tableau de destination.

Voilà le code de ma macro.

Ou rajouter la selection de ligne vide du tableau et surtout quel est le code pour cette operation...



Private Sub Commandbutyon21_Click ()

Sheets ("listing").select
 Range ("b3:e32").select
 Application.CutCooyMode = False
 Sélection.Copy
 Sheets("Archivage").Select
 Sélection.pastespecial Paste=xlPastValues, Operation: =False, Transpose:=False

End sub.


3 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

Pour trouver la première ligne vide de la colonne C de la feuille "Archivage" (par exemple) :

Dim maLigne As Long
With Sheets("Archivage")
  If .Range("C1") <> "" Then
    maLigne = .Range("C" & Rows.Count).End(xlUp).Row + 1
  Else
    maLigne = 1
  End If
End With


Après, pour copier coller, pas besoin de Sélection :
Sheets ("listing").select
 Range ("b3:e32").select
 Application.CutCooyMode = False
 Sélection.Copy

S'écrit plus simplement :
Sheets("listing").Range("B3:E32").Copy


Ce qui te donne un code du genre :
Dim maLigne As Long
With Sheets("Archivage")
  If .Range("A1") <> "" Then
    maLigne = .Range("A" & Rows.Count).End(xlUp).Row + 1
  Else
    maLigne = 1
  End If
  Sheets("listing").Range("B3:E32").Copy
  .Range("A" & maLigne).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Transpose:=False
End With


PS : évite d'écrire avec des moufles ;-).
Le code donné dans ton message comporte :
  • des espaces inutiles
    • Sheets ("listing")
    • Range ("b3:e32")
    • Operation: =False
  • des accents inutiles : Sélection
  • des fautes de frappe :
    • pastespecial => manque les majuscules
    • Paste=xlPastValues ==> manque les : et un e : Paste:=xlPasteValues
0