Macro pour coller à la suite.
Résolu
François87
-
François87 -
François87 -
Bonjour,
Dans un classeur excel avec un première feuille pour rentrer des données, en validant, ces données doivent être copiées sur une autre feuille à la suite des données précédentes.
J'essaye de réaliser une macro qui quand je clique sur "valider", copie les cellules voulues dans une autre feuille mais dans la ligne suivante à chaque fois.
J'ai essayé avec ce code :
Sub essai()
Dim wb As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set wb = ThisWorkbook
Set ws1 = wb.Worksheets("DATA INPUT")
Set ws2 = wb.Worksheets("Nuité, PLat, Dessert")
ws2.Range("b1").End(xlDown).Offset(1, 0) = ws1.Range("b8")
ws2.Range("c1").End(xlDown).Offset(1, 0) = ws1.Range("b9")
ws2.Range("d1").End(xlDown).Offset(1, 0) = ws1.Range("b10")
ws2.Range("k1").End(xlDown).Offset(1, 0) = ws1.Range("b15")
ws2.Range("l1").End(xlDown).Offset(1, 0) = ws1.Range("b19")
End Sub
Mais à chaque fois il écrase les données précédemment validées.
D'avance merci pour vos conseils.
PS : Comment faut-il faire pour mettre le classeur en pièce jointe, ce serait plus simple.
Dans un classeur excel avec un première feuille pour rentrer des données, en validant, ces données doivent être copiées sur une autre feuille à la suite des données précédentes.
J'essaye de réaliser une macro qui quand je clique sur "valider", copie les cellules voulues dans une autre feuille mais dans la ligne suivante à chaque fois.
J'ai essayé avec ce code :
Sub essai()
Dim wb As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set wb = ThisWorkbook
Set ws1 = wb.Worksheets("DATA INPUT")
Set ws2 = wb.Worksheets("Nuité, PLat, Dessert")
ws2.Range("b1").End(xlDown).Offset(1, 0) = ws1.Range("b8")
ws2.Range("c1").End(xlDown).Offset(1, 0) = ws1.Range("b9")
ws2.Range("d1").End(xlDown).Offset(1, 0) = ws1.Range("b10")
ws2.Range("k1").End(xlDown).Offset(1, 0) = ws1.Range("b15")
ws2.Range("l1").End(xlDown).Offset(1, 0) = ws1.Range("b19")
End Sub
Mais à chaque fois il écrase les données précédemment validées.
D'avance merci pour vos conseils.
PS : Comment faut-il faire pour mettre le classeur en pièce jointe, ce serait plus simple.
A voir également:
- Macro pour coller à la suite.
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Style d'écriture a copier coller - Guide
- Historique copier coller - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Copier coller pdf - Guide
1 réponse
Bonjour
pour les messages suivant
1/
pour joindre une pièce
mettre le classeur sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
et faire un clic droit sur le lien proposé puis "copier l'adresse du lien" et coller dans le message de réponse
2/
mettre tes codes entre les balises <> du bouton à droite en haut du message. Merci d'avance
With ws2 lig = .Cells.Find("*", , , , , xlPrevious).Row + 1 .Cells(lig, "B") = ws1.Range("B8") '.... la suite End With
pour les messages suivant
1/
pour joindre une pièce
mettre le classeur sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
et faire un clic droit sur le lien proposé puis "copier l'adresse du lien" et coller dans le message de réponse
2/
mettre tes codes entre les balises <> du bouton à droite en haut du message. Merci d'avance
Tout d'abord merci de votre réponse rapide. J'ai modifié ma macro en suivant vos conseils et cela me donne :
Mais cela ne fonctionne pas car le collage se fait en dessous de mon tableau et décalé sur chaque colonne..
Veuillez trouver ci-joint le classeur sur lequel je travail :
http://cjoint.com/?ALqj2Dv4Kcl
D'avance merci pour vos conseils.
François
Salut michel,
Excusez l'incruste...
Il est tout à fait normal que ça te décale tes données puisque pour chaque colonne tu recalcules la dernière ligne saisie. L'exemple de michel concernait une seule donnée, il suffit de mettre les autres dessous dans le même bloc with sans recalculer le numéro de la ligne :
ça devrait le faire...
D'avance merci
lig = Range("A1").End(xlDown).Row + 1
A la condition expresse que toutes les cellules soient "remplies"...