Trouver dernière ligne non vide pour réutiliser dans une formule

grenadi - Modifié par grenadi le 24/09/2013 à 16:57
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 - 24 sept. 2013 à 17:07
Bonjour,

Je débute en maro/VBA et j'essaie de recoller deux extract de base de données avec un recherche v. Jusqu'à là tout va bien, j'ai réussi à automatioser sur la première ligne.
Maintenant je voudrais "étirer" ce recherche V jusqu'à la dernière ligne non vide de mon fichier.
Etant donné que mes extract ne sont pas toujours basés sur le même scope je n'ai pas toujours le même nombre de ligne.
Je recherche un formule à mettre dans ma macro qui m'indique quel est la dernière ligne non vide afin de réutiliser cette inforamtion dans la formule d'extension de mon recherche v.
Ici j'étend de jusqu'à cp 1000. Si au passage vous aviez quelque chose de plus sympa que de séléctionner toute les colonne une à une je suis prenneuse.

Worksheets("1").Range("bd2:cp2").Copy Worksheets("1").Range("X12")

    Range("cp2").Activate
    ActiveWindow.ScrollColumn = 47
    ActiveWindow.ScrollColumn = 48
    ActiveWindow.ScrollColumn = 49
    ActiveWindow.ScrollColumn = 50
    ActiveWindow.ScrollColumn = 51
    ActiveWindow.ScrollColumn = 52
    ActiveWindow.ScrollColumn = 53
    ActiveWindow.ScrollColumn = 54
    ActiveWindow.ScrollColumn = 55
    ActiveWindow.ScrollColumn = 56
    ActiveWindow.ScrollColumn = 57
    ActiveWindow.ScrollColumn = 58
    ActiveWindow.ScrollColumn = 59
    ActiveWindow.ScrollColumn = 60
    ActiveWindow.ScrollColumn = 61
    ActiveWindow.ScrollColumn = 62
    ActiveWindow.ScrollColumn = 63
    ActiveWindow.ScrollColumn = 64
    ActiveWindow.ScrollColumn = 65
    ActiveWindow.ScrollColumn = 66
    ActiveWindow.ScrollColumn = 67
    ActiveWindow.ScrollColumn = 68
    ActiveWindow.ScrollColumn = 69
    ActiveWindow.ScrollColumn = 70
    ActiveWindow.ScrollColumn = 71
    ActiveWindow.ScrollColumn = 72
    ActiveWindow.ScrollColumn = 73
    ActiveWindow.ScrollColumn = 74
    ActiveWindow.ScrollColumn = 75
    ActiveWindow.ScrollColumn = 76
    ActiveWindow.ScrollColumn = 77
    ActiveWindow.ScrollColumn = 78
    ActiveWindow.ScrollColumn = 79
    ActiveWindow.ScrollColumn = 80
    Selection.AutoFill Destination:=Range("bd2:cp1000"), Type:=xlFillDefault
    Range("bd2:cp1000").Select
    Range("cp1000").Select
    ActiveWindow.SmallScroll Down:=-51
    Columns("bd:Cv").Select
    Range("Cv1").Activate


Merci

2 réponses

jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
Modifié par jordane45 le 24/09/2013 à 16:44
Bonjour,

Je t'invite à regarder ICI :
http://lmgtfy.com/?q=vba+derni%C3%A8re+cellule+non+vide

PS: Lors de tes prochains postes sur le forum, pense à utiliser la coloration syntaxique ( les balises de code..)

Ceci est un exemple de code !



PS2 : Sauf si ils sont nécessaires au fonctionnement de ta macro.. tu peux retirer les lignes :
ActiveWindow.ScrollColumn = 





Edit:
Ici j'étend de jusqu'à cp 1000. Si au passage vous aviez quelque chose de plus sympa que de séléctionner toute les colonne une à une je suis prenneuse.

Range("bd2:cp1000").Select



Cordialement,
Jordane
0
Bonjour,

Merci, je vais éditer tout de suite mon poste pour le code.

Justement j'ai déjà trouver des formules qui me dise qu'elle est ma dernière cellule non vide mais j'ai pas trouver/compris comment réutiliser cette information.
Là j'ai codé en dure que je vais jusqu'à cp 1000 dans ma ligne mais j'aimerai que ce soit dynamique et je ne sait pas comment remplacer mon cp1000 avec la valeur trouver.

Dans les réponse il y a la formule
LaDerniere = range("C1"). end(xldown)


Comment est ce que je peut utiliser l'information Laderniere dans mon :
Range("bd2:cp1000").Select


Ps: quand je parle de sélectionner toute les celulle une à une je parle de
Range("cp2").Activate 
ActiveWindow.ScrollColumn = 47 
ActiveWindow.ScrollColumn = 48
...... etc.

Qu'est ce que c'est censé donner si j'enlève tous les ActiveWindow.ScrollColumn juste:
Range("cp2").Activate 
= 47 
= 48
=...Etc


Merci pour votre patience
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
24 sept. 2013 à 17:07
Le fait de directement faire :
Range("A1:C1000").activate
'ou
Range("A1:C1000").activate 

Effectue l'activation / selection de ta plage de cellule.
Pas besoin de "scroller" ton écran jusquà la ligne qui t'interesse..

Tu peux aussi regarder du côté de :
Range("bd2").select
Selection.CurrentRegion.Select

Qui fera la selection de toutes tes cellules utilisées ( à condition qu'il n'y ai pas de ligne vide)

Sinon pour utiliser le code avec la dernière ligne tu peux écrire quelque chose du genre
derniereLigne=  Range("bd65536").End(xlUp).Row
Range("bd2:cp" & derniereLigne).select
0
Rejoignez-nous