Copier une plage et la coller via une macro
Résolu
senecartour
Messages postés
324
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je vous sollicite car je suis bloqué sur un code de Macro (en même temps, je ne suis pas un expert dans les macros, je suis entrain d'apprendre petit à petit).
J'ai un tableau dans la feuil1 dont la taille varie eu fur et à mesure. Je souhaite créer une macro qui permet de sélectionner toute la plage de données, c'est-à-dire jusqu'à la dernière ligne et dernière colonne renseignée.
Et cette plage sera copier dans la feuil2 au à partir de la cellule B2.
J'ai essayé de définir ma plage en choisissant des bornes, mais la macro est planquée sur une ligne et je n'arrive pas détecter l'origine de l'erreur.
Je vous joins le lien de mon fichier:https://www.cjoint.com/c/DJirEEaX7xn
NB : Je ne souhaite pas utiliser la fonction CurrentRegion pour copier ma plage.
Merci d'avance pour votre aide !
Je vous sollicite car je suis bloqué sur un code de Macro (en même temps, je ne suis pas un expert dans les macros, je suis entrain d'apprendre petit à petit).
J'ai un tableau dans la feuil1 dont la taille varie eu fur et à mesure. Je souhaite créer une macro qui permet de sélectionner toute la plage de données, c'est-à-dire jusqu'à la dernière ligne et dernière colonne renseignée.
Et cette plage sera copier dans la feuil2 au à partir de la cellule B2.
J'ai essayé de définir ma plage en choisissant des bornes, mais la macro est planquée sur une ligne et je n'arrive pas détecter l'origine de l'erreur.
Je vous joins le lien de mon fichier:https://www.cjoint.com/c/DJirEEaX7xn
NB : Je ne souhaite pas utiliser la fonction CurrentRegion pour copier ma plage.
Merci d'avance pour votre aide !
A voir également:
- Copier une plage et la coller via une macro
- Comment copier une vidéo youtube - Guide
- Historique copier coller - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
4 réponses
Maurice,
Ton code marche bien. Mais j'aimerais avoir le résultat avec ma méthode (cf. sujet).
Serait-il possible d'utiliser ma méthode pour y arriver?
En parallèle, c'est quoi la signification des ,,,,, dans vos macros?
ex.: dans (Nlig = Cells.Find("*", , , , , xlPrevious).Row)
J'aimerais comprendre la signification des ,,,,,,,,
En effet, votre méthode est intéressant et ça pourrait me servir dans l'avenir!
Merci pour votre aide!
Ton code marche bien. Mais j'aimerais avoir le résultat avec ma méthode (cf. sujet).
Serait-il possible d'utiliser ma méthode pour y arriver?
En parallèle, c'est quoi la signification des ,,,,, dans vos macros?
ex.: dans (Nlig = Cells.Find("*", , , , , xlPrevious).Row)
J'aimerais comprendre la signification des ,,,,,,,,
En effet, votre méthode est intéressant et ça pourrait me servir dans l'avenir!
Merci pour votre aide!
Bonjour,
Range("B") n'est pas une référence valide.
Range("B2") oui, columns(2) oui.
eric
Range("B") n'est pas une référence valide.
Range("B2") oui, columns(2) oui.
eric
Bonjour Ecri,
J'ai corrigé la référence Range("B2").
En lançant la macro, elle ne planque pas mais c'est une seule cellule est est copiée au lieu toute la plage. Je te joins le code de ma macro:
________________________________________________________________________________
Sub test()
Dim ilignecourante, icolonnnecourante, lignefin, colonnefin As Long
ilignecourante = 2
icolonnecourante = 2
lignefin = Sheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Row
colonnefin = Sheets("Feuil1").Range("B2").End(xlToRight).Column
Do While Sheets("Feuil1").Range("B" & ilignecourante) <> ""
For ilignecourante = 2 To colonnefin
Sheets("Feuil1").Cells(ilignecourante, icolonnecourante).Select
Next
Loop
Selection.Copy Destination:=Sheets("Feuil2").Range("B2")
End Sub
----------------------------------------------------------------------------------------------------------------------------------------------------
Merci pour ton aide!
J'ai corrigé la référence Range("B2").
En lançant la macro, elle ne planque pas mais c'est une seule cellule est est copiée au lieu toute la plage. Je te joins le code de ma macro:
________________________________________________________________________________
Sub test()
Dim ilignecourante, icolonnnecourante, lignefin, colonnefin As Long
ilignecourante = 2
icolonnecourante = 2
lignefin = Sheets("Feuil1").Range("B" & Rows.Count).End(xlUp).Row
colonnefin = Sheets("Feuil1").Range("B2").End(xlToRight).Column
Do While Sheets("Feuil1").Range("B" & ilignecourante) <> ""
For ilignecourante = 2 To colonnefin
Sheets("Feuil1").Cells(ilignecourante, icolonnecourante).Select
Next
Loop
Selection.Copy Destination:=Sheets("Feuil2").Range("B2")
End Sub
----------------------------------------------------------------------------------------------------------------------------------------------------
Merci pour ton aide!
Bonjour Eiiic,
Je ne reproche rien à la méthode de maurice qui me servira sans doute dans l'avenir.
Seulement, je souhaiterais appliquer ma méthode que j'avais commencée.
J'ai essayé de corriger le code mais la macro tourne tourne en boucle et rien n'est copié.
voir: https://www.cjoint.com/c/DJjlM1tdjh0
Pourriez-vous, s'il vous plait, m'aider à résoudre le problème?
Merci d'avance
Je ne reproche rien à la méthode de maurice qui me servira sans doute dans l'avenir.
Seulement, je souhaiterais appliquer ma méthode que j'avais commencée.
J'ai essayé de corriger le code mais la macro tourne tourne en boucle et rien n'est copié.
voir: https://www.cjoint.com/c/DJjlM1tdjh0
Pourriez-vous, s'il vous plait, m'aider à résoudre le problème?
Merci d'avance
Bonjour,
Si, qq chose est copié, mais toujours au même endroit : Sheets("Feuil2").Range("B2")
D'ailleurs on se demande pourquoi tu le fais une 2nde fois en sortie du next.
Pour déboguer faire en pas à pas avec F8.
A chaque do while regarde la valeur de ilignecourante.
En approchant le curseur dessus un popup apparait. Ou bien tu double-cliques dessus et tu fais glisser le nom (ou une expression complète si tu veux) dans la fenêtre espion (menu affichage si tu ne l'as pas).
https://www.commentcamarche.net/contents/1381-debogage
eric
Si, qq chose est copié, mais toujours au même endroit : Sheets("Feuil2").Range("B2")
D'ailleurs on se demande pourquoi tu le fais une 2nde fois en sortie du next.
Pour déboguer faire en pas à pas avec F8.
A chaque do while regarde la valeur de ilignecourante.
En approchant le curseur dessus un popup apparait. Ou bien tu double-cliques dessus et tu fais glisser le nom (ou une expression complète si tu veux) dans la fenêtre espion (menu affichage si tu ne l'as pas).
https://www.commentcamarche.net/contents/1381-debogage
eric
Bonjour
pour copier une Plage
Sub Test()
Feuil1.Select
Nlig = Cells.Find("*", , , , , xlPrevious).Row
Col = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
Range(Cells(2, 2), Cells(Nlig, Col)).Copy
Feuil2.Range("B2").PasteSpecial xlPasteValues
Application.CutCopyMode = False
End Sub
A+
Maurice
pour copier une Plage
Sub Test()
Feuil1.Select
Nlig = Cells.Find("*", , , , , xlPrevious).Row
Col = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
Range(Cells(2, 2), Cells(Nlig, Col)).Copy
Feuil2.Range("B2").PasteSpecial xlPasteValues
Application.CutCopyMode = False
End Sub
A+
Maurice
Bonsoir
regarde sur le site
https://forums.commentcamarche.net/forum/affich-37622001-vba-detection-de-cellule-vide-ligne-colonnne
A+
Maurice
regarde sur le site
https://forums.commentcamarche.net/forum/affich-37622001-vba-detection-de-cellule-vide-ligne-colonnne
A+
Maurice