VBA : sélectionner la dernière cellule d'une colonne
ludo333
-
Mike-31 Messages postés 19571 Date d'inscription Statut Contributeur Dernière intervention -
Mike-31 Messages postés 19571 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'aimerais créer un code VBA qui copie/colle toutes les valeurs de la colonne A pour les mettre dans la colonne C, puis qui copie/colle toutes les valeurs de la colonne B pour les mettre en-dessous de la dernière valeur de la colonne C.
En fait, la formule en soi n'est pas très compliquée, mais il me manque juste la formule qui puisse sélectionner la dernière cellule d'une colonne qui est pourvue d'une valeur. Comme ça je peux imbriquer les valeurs de deux colonnes dans une seule.
Merci d'avance !
J'aimerais créer un code VBA qui copie/colle toutes les valeurs de la colonne A pour les mettre dans la colonne C, puis qui copie/colle toutes les valeurs de la colonne B pour les mettre en-dessous de la dernière valeur de la colonne C.
En fait, la formule en soi n'est pas très compliquée, mais il me manque juste la formule qui puisse sélectionner la dernière cellule d'une colonne qui est pourvue d'une valeur. Comme ça je peux imbriquer les valeurs de deux colonnes dans une seule.
Merci d'avance !
A voir également:
- Vba dernière cellule non vide d'une colonne
- Dernière version ccleaner gratuit français - Télécharger - Nettoyage
- Déplacer une colonne excel - Guide
- Trier une colonne excel - Guide
- Comment supprimer une page vide sur word - Guide
- Colonne word - Guide
2 réponses
Bonjour,
plusieurs possibilités, exemple tu veux copier colonne A à partir de la cellule A2 à la dernière cellule non vide
Range(Range("A2"), Range("A65000").End(xlUp)).Select
ou encore
Range([A2], [A65000].End(xlUp)).Select
ou sans passer par select ce qui est mieux
Range(Range("A2"), Range("A65000").End(xlUp)).Copy
Range([A2], [A65000].End(xlUp)).Copy
plusieurs possibilités, exemple tu veux copier colonne A à partir de la cellule A2 à la dernière cellule non vide
Range(Range("A2"), Range("A65000").End(xlUp)).Select
ou encore
Range([A2], [A65000].End(xlUp)).Select
ou sans passer par select ce qui est mieux
Range(Range("A2"), Range("A65000").End(xlUp)).Copy
Range([A2], [A65000].End(xlUp)).Copy
Re,
regarde comme cela pour copier les valeurs de la colonne A puis colonne B à la suite colonne C
Range(Range("A2"), Range("A65000").End(xlUp)).Copy
Range("C65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Range(Range("B2"), Range("B65000").End(xlUp)).Copy
Range("C65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Plus technique tu peux faire sans passer par Select en deux ligne de code
et encore plus court
mais tu n'as aucune protection pour éviter de copier plusieurs fois les même données
regarde comme cela pour copier les valeurs de la colonne A puis colonne B à la suite colonne C
Range(Range("A2"), Range("A65000").End(xlUp)).Copy
Range("C65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Range(Range("B2"), Range("B65000").End(xlUp)).Copy
Range("C65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Plus technique tu peux faire sans passer par Select en deux ligne de code
Range(Range("A2"), Range("A65000").End(xlUp)).Copy Destination:=Range("C65000").End(xlUp).Offset(1, 0)
Range(Range("B2"), Range("B65000").End(xlUp)).Copy Destination:=Range("C65000").End(xlUp).Offset(1, 0)
et encore plus court
Range([A2], [A65000].End(xlUp)).Copy Destination:=[C65000].End(xlUp).Offset(1, 0)
Range([B2], [B65000].End(xlUp)).Copy Destination:=[C65000].End(xlUp).Offset(1, 0)
mais tu n'as aucune protection pour éviter de copier plusieurs fois les même données
En gros j'avais essayé ça :
Range("B2:B100").Select
Selection.Copy
Range("C65000").End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Mais ça ne marche parce que la copie de la colonne B s'annule une fois qu'on sélectionne d'autres cellules...
As-tu une solution ?
Range(Range("B2"), Range("B1000").End(xlUp)).Copy
Range("C65000").End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
ça marche comme ça :)