Vba range dernière cellule visible

Résolu/Fermé
Martin - 14 mars 2012 à 14:21
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 14 mars 2012 à 17:47
Bonjour,

j'aimerais savoir comment écrire en vba la dernière cellule visible d'une colonne afin de faire un copie automatique de tables dans un autre fichier à partir d'un bouton de commande.

Par exemple, j'aimerais copier le range C:3 jusqu'à la derniere cellule utilisée de la colonne C, et la copier dans mon deuxième fichier dans la colonne D.

J'ai ceci :
Tabl = Sheets("Feuille1").Range("C65536").End(xlUp)

mais il prend en compte la cellule utillisée de la ligne C, mais il ne vois pas les autres jusqu'à C:3.

Aussi, si je filtre les données de ma colonnes (par exemple C14, C17:C19, C26 sont masqués) est-ce qu'il est possible qu'il ne copie pas ces cellules ? Copier seulement les cellules visibles disons...

Merci beaucoup de votre aide :D

3 réponses

eljojo_e Messages postés 1155 Date d'inscription lundi 10 mai 2010 Statut Membre Dernière intervention 14 octobre 2022 152
Modifié par eljojo_e le 14/03/2012 à 15:10
Bonjour,

insère ca dans ton code

dim a,b
dim a c as single

a = X
b = XX

'X étant le numéro de la ligne où se situ ta dernière cellule remplie
'XX étant le numéro de la ligne max de ton fichier (de mémoire 65536 je crois)

b = range("c" & x).value ' si ta colonne est C

for c = a to b

range("c" & c).value ) b

next


Cordialement,
0
Bonjour,

Merci de ton information !

Dans le cas ou ma derniere cellule remplie serait variable a chaque colonne que je veux copier, est-ce qu'il y a un moyen de dire de copier a partir de c3 jusqua la derniere remplie sans avoir à lui donner la ligne exacte ?

par exemple x=premiere ligne utilisée
et xx=dernière ligne utilisée ?

Cordialement

Martin
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
14 mars 2012 à 17:47
Bonjour a vous deux

'pour la dernière ligne de la colonne C
D_L_C = Range("C" & Rows.Count).End(xlUp).Row
'Plage a copier (les cellules masquees ne sont pas copiees)
Range("C3:C" & D_L_C).Copy Range("D12") 'mettre votre destination

Bonne suite
0