XL 2010 Macro sélectionner plage jusqu'à l'avant dernière ligne ???

Lvc

XLDnaute Nouveau
Hello

Je recherche à créer une macro pour sélectionner dans un tableau toutes les cellules des colonnes A à Q
jusqu'à l'avant dernière ligne òu il y a des valeurs.

Pourquoi : pour ensuite continuer une macro qui copiera toute les données issues de fonctions et ne collera plus que les valeur pour alléger mon fichier ( cette dernière partie ça devrait aller mais c'est la première qui me bloque depuis ce matin.

Quelqu'un peut-il m'aider svp ???

Merci d'avance

Vincent
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour le fil, bonjour le forum,

Plusieurs façons de procéder, entre autres :
1- Si la colonne A (à adapter) ne comporte pas de trou, donc il n'y a aucune cellule vide entre la première et la dernière. On part du haut et on descend :

VB:
Dim LI As Long
LI=Cells(1, "A").end(xlDown).Row -1

2- Si la colonne A (à adapter) a des trous, donc si il y a au moins une cellule vide entre la première et la dernière. On part du bas et on remonte :
VB:
Dim LI As Long
LI=Cells(Application.Rows.Count, "A").end(xlUp).Row -1
C'est celle que j'utilise le plus souvent mais à condition qu'il n'y ait aucune données dans la colonne A en dessous de ton tableau...

Comme l'a dit PAF, le -1 permet de déterminer l'avant dernière...
 

Lvc

XLDnaute Nouveau
Hello, désolé pour mon absence, une mauvaise grippe à soigner mais me revoilà.

Je vous remercie toutes et tous pour vos réponses, toutefois je me permets de repréciser ma demande :
Ce que ce veux c'est créer une macro pour atteinte une sélection de colonnes et de lignes non vides
comme ci-dessous, mais ne pas sélectionner la dernière ligne.
J'ai essayé d'inclure le critère ".Row -1" mais cela ne fonctionne pas, où dois-je le placer ?, cela est-il possible d'utiliser ".Row -1" dans cette macro ??


Merci d'avance pour votre aide :)


Vincent
__________________________________________________________________________________________________
Sub Dernière_Ligne_T_Syspro()

Sheets("Syspro").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour le fil, bonjour le forum,

Je reprends ton premier post. Si ton tableau commence en A1 (à adapter) :

VB:
Sub Macro1()
Dim O As Worksheet
Dim PL As Range

Set O = Sheets("Syspro")
Set PL = O.Range("A1").CurrentRegion
Set PL = PL.Resize(PL.Rows.Count - 1, PL.Columns.Count)
PL.Select
End Sub
 

Paf

XLDnaute Barbatruc
re bonjour à tous,

une autre façon:
VB:
...
'En décomposant
DerniereLigne = Range("A" & Rows.Count).End(xlUp).Row 'une manière courante de déterminer la dernière ligne
AvantDerniereLigne = DerniereLigne - 1
Plage = Range("A1:Q" & AvantDerniereLigne)
'ou
Plage = Range("A1:Q" & Range("A" & Rows.Count).End(xlUp).Row - 1)
...
 

Lvc

XLDnaute Nouveau
Hello les amis

J'ai appliqué les codes proposés et celui de Paf répond exactement à mon besoin.
Robert, j'ai essayé le tien mais j'ai eu un petit bug et en essayant dans la foulée celui de Paf cela a fonctionné
alors je l'ai adopté par facilité.
Je vous remercie vivement pour votre aide, grâce à vous je vais pouvoir alléger mon
fichier et travailler avec plus de rapidité et moins d'énervement.

Bon W.E

Amicalement

Vincnet
 

Discussions similaires

Réponses
7
Affichages
310

Statistiques des forums

Discussions
312 027
Messages
2 084 762
Membres
102 657
dernier inscrit
Ferdy