Dernière ligne non vide (et non dernière cellule)

Pseudoto

XLDnaute Nouveau
Bonjour,

Je reviens à la charge avec un sujet idiot : la sélection de la dernière ligne non totalement vide d'une plage de données.

J'ai trouvé ça et là des tutos mais ça n'indique que la dernière la cellule non vide d'une colonne....

Or quand je fais :

Code:
Sheets("2011.test").Range("A1:E1").End(xlDown).Select
    Selection.Interior.ColorIndex = 1

Bah ça prend la première cellule non vide de la colonne 1 .... :mad:

L'idée est ensuite de me servir de cette première ligne comme d'un range (c'est possible ?) pour un filtre élaboré

Code:
Sheets("Données").Range("A1:M65536").AdvancedFilter Action:=xlFilterCopy, _
    CriteriaRange:=Sheets("Données").Range("P1:Q2"), CopyToRange:??????????????????????, Unique:=False

Où là, franchement, j'arrive pas à sélectionner et entrer le bon range pour le coller ...

Please, help me avant que je ne me foute par la fenêtre, le PC avec :eek:
 

Pseudoto

XLDnaute Nouveau
Re : Dernière ligne non vide (et non dernière cellule)

Merci Dranreb,

C'était une de mes pistes...mais ensuite, comment sélectionner la ligne juste en dessous de ce range ainsi constitué ?

L'idée est bien de coller (voir même de décaler d'une ligne) un second bloc, à la suite d'un premier ...
 

Pseudoto

XLDnaute Nouveau
Re : Dernière ligne non vide (et non dernière cellule)

Merci de cette nouvelle aide...que j'ai aussi testé. Là franchement, y'a des choses que je ne comprends pas.

Pourquoi par exemple :

Code:
Sheets("2011.test").Select
    UsedRange.Select
    Rows(8).EntireRow.Select

marche et

Code:
Sheets("2011.test").Usedrange.select
Rows(8).EntireRow.Select

ne marche pas oO

Par ailleurs, pour le PlgX, comment je peux la définir comme étant l'usedrange de ma feuille ? Est ce une donnée type range que je vais pouvoir utiliser dans mon filtre élaboré ?
 

Dranreb

XLDnaute Barbatruc
Re : Dernière ligne non vide (et non dernière cellule)

Absolument. Partout ou une méthode attend un Range on peut lui passer une variable de type Range correctement initialisée, ou toute expression de type Range telle que mon exemple. Et elle peut de même servir de qualificateur de toute méthode de l'objet Range.
 
Dernière édition:

Pseudoto

XLDnaute Nouveau
Re : Dernière ligne non vide (et non dernière cellule)

Alors :

@david84 : je connaissais le site. Mais hormis si je suis neuneu, la procédure qu'il donne pour une ligne donne bel et bien une cellule (je viens de tester sa macro) et non une ligne, ce qui m'est nécessaire dans le cas d'un filtre élaboré où je vais coller dans une ligne.

@Dranreb : pour définir PlgX, j'essaie de faire
Code:
Dim Plgx
Sheets("2011.test").Select
Plgx = Activesheet.Usedrange

??
 

Pseudoto

XLDnaute Nouveau
Re : Dernière ligne non vide (et non dernière cellule)

Hahem ...

Bon alors, dans l'ordre des tests :

La macro de david 84 permet bien de récup le numéro de la ligne suivant la dernière ligne non vide de la feuille...bon.

Ensuite, j'ai commencé à faire

Code:
   Call dernièreligneFeuille2
    
    Set PlgX = Expression range
    Plgx = Sheets("2011.test").Rows(LigneSuivante)

Mais ça me renvoie ma 34567e erreurs de la journée :/
 

Dranreb

XLDnaute Barbatruc
Re : Dernière ligne non vide (et non dernière cellule)

Toujours affecter par un Set une expression Range à une variable Range:
VB:
Set Plgx = Sheets("2011.test").Rows(LigneSuivante)
sinon il essaie de travailler avec la propriété par défaut de l'objet Range qui est Value.
Bonne soirée.
 

Pseudoto

XLDnaute Nouveau
Re : Dernière ligne non vide (et non dernière cellule)

Je ne comprends pas tout Dranreb, je suis vraiment débutant (même si de beaux restes quand même).

Mon soucis est : si j'ai déclaré ce Plgx, pourquoi je ne peux pas ensuite l'utiliser, par exemple avec

Code:
Plgx.Select

Alors que c'est un range ...
 

Dranreb

XLDnaute Barbatruc
Re : Dernière ligne non vide (et non dernière cellule)

Boujour
Vous pouvez tout à fait executer Plgx.Select si Plgx est une variable Range correctement initialisée, c'est à dire si elle correspond à une plage de cellules bien définie d'une feuille de calcul. Cette définition se fait en y affectant préalablement par un Set une expression Range qui représente cette plage.
À+
 

Pseudoto

XLDnaute Nouveau
Re : Dernière ligne non vide (et non dernière cellule)

Bonjour,

Merci de votre aide et après avoir visionné quelques tutoriaux mode débutant, le problème venait bien de la définition du range.

En utilisant la macro donnée plus haut pour le saut de 2 lignes, j'ai obtenu ça :

Code:
    Sheets("2011.test").Select
    Set plagesuivante = Intersect(ActiveSheet.Range("A:M"), ActiveSheet.Rows(numerosaut2lignes()))
    
    Sheets("Données").Range("A1:M65536").AdvancedFilter Action:=xlFilterCopy, _
    CriteriaRange:=Sheets("Données").Range("P1:Q2"), CopyToRange:=plagesuivante, Unique:=False

Ce ne fut pas sans transpirer :eek:
 

Discussions similaires