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

julien paget - 16 févr. 2017 à 12:09 - Dernière réponse :  Julien paget
- 17 févr. 2017 à 12:01
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.


Afficher la suite 

6 réponses

Répondre au sujet
pijaku 12206 Messages postés jeudi 15 mai 2008Date d'inscriptionModérateurStatut 13 septembre 2017 Dernière intervention - 16 févr. 2017 à 12:25
0
Utile
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
Commenter la réponse de pijaku
Julien paget - 17 févr. 2017 à 11:13
0
Utile
3
Bonjour,

J'ai testé ton code et c'est pas vraiment ce dont j'ai besoin.

En fait je voudrais qu'à chaque que je clique sur le bouton "Archivage", le sélection "B3:E22" de la page "Listing" vienne s’incrémenter a la suite de l'existant dans la feuille "Archivage".

du coup la première fois ça concerne les lignes 1 à 20 puis la seconde fois les ligne 21 à 40 et ainsi de suite .

je crois que je vais abandonner....
j'en peux plus des Range Select etc etc
pijaku 12206 Messages postés jeudi 15 mai 2008Date d'inscriptionModérateurStatut 13 septembre 2017 Dernière intervention - 17 févr. 2017 à 11:46
Bonjour,

'ai testé ton code et c'est pas vraiment ce dont j'ai besoin.

En fait je voudrais qu'à chaque que je clique sur le bouton "Archivage", le sélection "B3:E22" de la page "Listing" vienne s’incrémenter a la suite de l'existant dans la feuille "Archivage".

du coup la première fois ça concerne les lignes 1 à 20 puis la seconde fois les ligne 21 à 40 et ainsi de suite .

C'est TRES EXACTEMENT ce que fais ce code :
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
Julien paget > pijaku 12206 Messages postés jeudi 15 mai 2008Date d'inscriptionModérateurStatut 13 septembre 2017 Dernière intervention - 17 févr. 2017 à 11:54
En voyant ta réponse sure de toi je me suis dit que j avais très certainement fait une mauvaise manip.
Du coup j ai inséré un nouveau module
.
Je copie colle le code
Ca fonctionne carrément plus du tout

Message d erreur :
Erreur de compilation
Instruction incorrecte à l'extérieur d une procédure
Je pige plus rien
pijaku 12206 Messages postés jeudi 15 mai 2008Date d'inscriptionModérateurStatut 13 septembre 2017 Dernière intervention > Julien paget - 17 févr. 2017 à 11:59
Private Sub Commandbutton21_Click ()

End sub

Ne te dis rien?
Non?
Un petit effort car ce sera ma dernière réponse...
Commenter la réponse de Julien paget
Julien paget - 17 févr. 2017 à 12:01
0
Utile
Stop arrêtez tout !!!!
CA MARCHE merci mon bon seigneur!!!
Je vous serai éternellement reconnaissant!!!

Encore merci!
Commenter la réponse de Julien paget