VBA : sélectionner la dernière cellule d'une colonne

ludo333 -  
Mike-31 Messages postés 18405 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 !

2 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
    0
    1. ludo333
       
      Salut merci pour la formule. Le problème, c'est qu'une fois que j'ai sélectionné la dernière cellule de la colonne, je ne peux plus coller quelque chose qui vient d'une autre colonne, car ça annulerait la sélection !

      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 ?
      0
    2. ludo333
       
      Ah c'est bon, j'ai réussi grâce à ta 2ème formule !

      Range(Range("B2"), Range("B1000").End(xlUp)).Copy

      Range("C65000").End(xlUp).Select
      ActiveCell.Offset(1, 0).Select
      ActiveSheet.Paste

      ça marche comme ça :)
      0
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
    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
    0