Calcul du nombre ligne d'un tableau

Le
Xavier powaga
Bonjour à tous,
je souhaite connaitre en VBA le numéro de la dernière ligne de mon tableau
j'utilise donc le code bien connu :

DernièreLigne = Worksheets("montableau").Cells(PremièreLigne, _
ColonnedeRecherche).End(xlDown).Row

Touti va bene sauf si au milieu de mon tableau une (ou plusieurs) des
cellules de la colonnedeRecherche est vide (cela peut arriver). Le comptage
s'arrête alors au niveau de cette cellule et mon résultat s'en trouve
faussé.

Avez vous une brillante idée ?

merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #5291471
Bonjour,

DernièreLigne =
Worksheets("feuil1").Cells(65000,Colonne).End(xlUp).Row

JB

On 20 jan, 09:56, "Xavier powaga"
Bonjour à tous,
je souhaite connaitre en VBA le numéro de la dernière ligne de mon tab leau
j'utilise donc le code bien connu :

DernièreLigne = Worksheets("montableau").Cells(PremièreLigne, _
        ColonnedeRecherche).End(xlDown).Row

Touti va bene sauf si au milieu de mon tableau une (ou plusieurs) des
cellules de la colonnedeRecherche est vide (cela peut arriver). Le comptag e
s'arrête alors au niveau de cette cellule et mon résultat s'en trouve
faussé.

Avez vous une brillante idée ?

merci


Pounet95
Le #5291451
Bonjour,

Toujours tiré de "ma bible", extrait du site de Frédéric Sigonneau :
Pounet95

Attribute VB_Name = "DerniereLigneOccupee"

' 3 fonctions pour renvoyer la dernière ligne occupée
' d'une colonne donnée ou d'une feuille de calcul

Function lLastRow(wks As Worksheet, lCol As Long) As Long
'Robert Rosenberg, mpep
'feuille et colonne au choix
lLastRow = wks.Cells(65536, lCol).End(xlUp).Row
End Function

Function DerLi()
'd'après David Mac Ritchie, mpep
'feuille active
Dim LastRow As Long
ActiveSheet.UsedRange
LastRow = Cells.SpecialCells(xlLastCell).Row
DerLi = LastRow
End Function

Function LastRow()
'd'après Tom Ogilvy, mpep
'feuille active, colonne A
LastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
End Function





"Xavier powaga" news:47930ccc$0$4919$
Bonjour à tous,
je souhaite connaitre en VBA le numéro de la dernière ligne de mon tableau
j'utilise donc le code bien connu :

DernièreLigne = Worksheets("montableau").Cells(PremièreLigne, _
ColonnedeRecherche).End(xlDown).Row

Touti va bene sauf si au milieu de mon tableau une (ou plusieurs) des
cellules de la colonnedeRecherche est vide (cela peut arriver). Le
comptage s'arrête alors au niveau de cette cellule et mon résultat s'en
trouve faussé.

Avez vous une brillante idée ?

merci



Xavier powaga
Le #5291441
Effectivement , j'aurais du y penser.
Merci mille fois cela permet de résoudre mon premier problème.

J'ai un deuxième problème que je comptais évoquer plus tard. Mon tableau
comportant un bon millier de ligne, j'ai fait un système de filtre qui
masque parfois certaine lignes et là ya un big pb car en fait j'ai mal posé
ma question initiale mais c'est le numéro de la première ligne vide qui se
situe sous mon tableau que j'ai besoin de connaitre.
Si le filtre n'est pas en place ta solution marche a merveille. J'ai juste à
rajouter un 1
Si le filtre est en place et que les dernières lignes de mon tableau sont
masquées, le code me donne le numéro de la dernière ligne visible et je ne
peux en déduire le numéro de la première ligne vide sous mon tableau

As tu une idée ?


"JB"
Bonjour,

DernièreLigne Worksheets("feuil1").Cells(65000,Colonne).End(xlUp).Row

JB

On 20 jan, 09:56, "Xavier powaga"
Bonjour à tous,
je souhaite connaitre en VBA le numéro de la dernière ligne de mon tableau
j'utilise donc le code bien connu :

DernièreLigne = Worksheets("montableau").Cells(PremièreLigne, _
ColonnedeRecherche).End(xlDown).Row

Touti va bene sauf si au milieu de mon tableau une (ou plusieurs) des
cellules de la colonnedeRecherche est vide (cela peut arriver). Le
comptage
s'arrête alors au niveau de cette cellule et mon résultat s'en trouve
faussé.

Avez vous une brillante idée ?

merci


Xavier powaga
Le #5291411
Merci pour ta réponse. La 1er et 3e solution me permet de résoudre mon 1er
pb mais hélas aucune des trois ne permet de résoudre mon 2e pb à savoir,
prendre en compte dernières lignes de mon tableau qui seraient maquées .

La solution numéro 2 me donne des résultats incohérents



"Pounet95" a écrit dans le message de news:
%
Bonjour,

Toujours tiré de "ma bible", extrait du site de Frédéric Sigonneau :
Pounet95

Attribute VB_Name = "DerniereLigneOccupee"

' 3 fonctions pour renvoyer la dernière ligne occupée
' d'une colonne donnée ou d'une feuille de calcul

Function lLastRow(wks As Worksheet, lCol As Long) As Long
'Robert Rosenberg, mpep
'feuille et colonne au choix
lLastRow = wks.Cells(65536, lCol).End(xlUp).Row
End Function

Function DerLi()
'd'après David Mac Ritchie, mpep
'feuille active
Dim LastRow As Long
ActiveSheet.UsedRange
LastRow = Cells.SpecialCells(xlLastCell).Row
DerLi = LastRow
End Function

Function LastRow()
'd'après Tom Ogilvy, mpep
'feuille active, colonne A
LastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
End Function





"Xavier powaga" news:47930ccc$0$4919$
Bonjour à tous,
je souhaite connaitre en VBA le numéro de la dernière ligne de mon
tableau
j'utilise donc le code bien connu :

DernièreLigne = Worksheets("montableau").Cells(PremièreLigne, _
ColonnedeRecherche).End(xlDown).Row

Touti va bene sauf si au milieu de mon tableau une (ou plusieurs) des
cellules de la colonnedeRecherche est vide (cela peut arriver). Le
comptage s'arrête alors au niveau de cette cellule et mon résultat s'en
trouve faussé.

Avez vous une brillante idée ?

merci






Misange
Le #5291401
Effectivement , j'aurais du y penser.
Merci mille fois cela permet de résoudre mon premier problème.

J'ai un deuxième problème que je comptais évoquer plus tard. Mon tableau
comportant un bon millier de ligne, j'ai fait un système de filtre qui
masque parfois certaine lignes et là ya un big pb car en fait j'ai mal posé
ma question initiale mais c'est le numéro de la première ligne vide qui se
situe sous mon tableau que j'ai besoin de connaitre.
Si le filtre n'est pas en place ta solution marche a merveille. J'ai juste à
rajouter un 1
Si le filtre est en place et que les dernières lignes de mon tableau sont
masquées, le code me donne le numéro de la dernière ligne visible et je ne
peux en déduire le numéro de la première ligne vide sous mon tableau


Bonjour,
Le plus simple : relever le N° de la dernière ligne de ton tableau et le
stocker dans une variable AVANT d'appliquer le filtre.
Misange

JB
Le #5291381
premiereLigne = 1
lignevide = premiereLigne + Range("_FilterDataBase").Rows.Count

JB

On 20 jan, 10:25, "Xavier powaga"
Effectivement , j'aurais du y penser.
Merci mille fois cela permet de résoudre mon premier problème.

J'ai un deuxième problème que je comptais évoquer plus tard. Mon tab leau
comportant un bon millier de ligne, j'ai fait un système de filtre qui
masque parfois certaine lignes et là ya un big pb car en fait j'ai mal p osé
ma question initiale mais c'est le numéro de la première ligne vide qu i se
situe sous mon tableau que j'ai besoin de connaitre.
Si le filtre n'est pas en place ta solution marche a merveille. J'ai juste à
rajouter un 1
Si le filtre est en place et que les dernières lignes de mon tableau son t
masquées, le code me donne le numéro de la dernière ligne visible et je ne
peux en déduire le numéro de la première ligne vide sous mon tableau

As tu une idée ?

"JB"
Bonjour,

DernièreLigne =
Worksheets("feuil1").Cells(65000,Colonne).End(xlUp).Row

JB

On 20 jan, 09:56, "Xavier powaga"


Bonjour à tous,
je souhaite connaitre en VBA le numéro de la dernière ligne de mon t ableau
j'utilise donc le code bien connu :

DernièreLigne = Worksheets("montableau").Cells(PremièreLigne, _
ColonnedeRecherche).End(xlDown).Row

Touti va bene sauf si au milieu de mon tableau une (ou plusieurs) des
cellules de la colonnedeRecherche est vide (cela peut arriver). Le
comptage
s'arrête alors au niveau de cette cellule et mon résultat s'en trouv e
faussé.

Avez vous une brillante idée ?

merci- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Xavier powaga
Le #5291361
Formidable cela fonctionne. J'ai pas compris comment, mais ça marche
Merci


"JB"

premiereLigne = 1
lignevide = premiereLigne + Range("_FilterDataBase").Rows.Count

JB

On 20 jan, 10:25, "Xavier powaga"
Effectivement , j'aurais du y penser.
Merci mille fois cela permet de résoudre mon premier problème.

J'ai un deuxième problème que je comptais évoquer plus tard. Mon tableau
comportant un bon millier de ligne, j'ai fait un système de filtre qui
masque parfois certaine lignes et là ya un big pb car en fait j'ai mal
posé
ma question initiale mais c'est le numéro de la première ligne vide qui se
situe sous mon tableau que j'ai besoin de connaitre.
Si le filtre n'est pas en place ta solution marche a merveille. J'ai juste
à
rajouter un 1
Si le filtre est en place et que les dernières lignes de mon tableau sont
masquées, le code me donne le numéro de la dernière ligne visible et je ne
peux en déduire le numéro de la première ligne vide sous mon tableau

As tu une idée ?

"JB"
Bonjour,

DernièreLigne > Worksheets("feuil1").Cells(65000,Colonne).End(xlUp).Row

JB

On 20 jan, 09:56, "Xavier powaga"


Bonjour à tous,
je souhaite connaitre en VBA le numéro de la dernière ligne de mon
tableau
j'utilise donc le code bien connu :

DernièreLigne = Worksheets("montableau").Cells(PremièreLigne, _
ColonnedeRecherche).End(xlDown).Row

Touti va bene sauf si au milieu de mon tableau une (ou plusieurs) des
cellules de la colonnedeRecherche est vide (cela peut arriver). Le
comptage
s'arrête alors au niveau de cette cellule et mon résultat s'en trouve
faussé.

Avez vous une brillante idée ?

merci- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



MichDenis
Le #5291291
| Formidable cela fonctionne. J'ai pas compris comment, mais ça marche

C'est simple, voici les explications que Mgr Banni a donné à son homélie aujourd'hui !

"_FilterDataBase" est simplement une "plage nommée" (comme pour ceux
qui sont créés par -> Insertion / Nom / définir
Dans le cas précis qui nous occupe, ce NOM n'est pas visible dans l'interface
de calcul via la fenêtre "Créer des noms" car au moment de sa création
par excel, on lui a attribué la caractéristique "Visible = False"

Cette plage nommé "_FilterDataBase" est créée ou recréée (selon le cas) par Excel
seulement au moment où on applique un filtre donné sur une plage de cellules d'une feuille
de calcul d'excel. Cela est vrai que ce soit un filtre automatique ou un filtre élaboré.

Ceci étant dit, ce n'est pas parce qu'il est invisible qu'on ne peut pas l'utitliser
dans une formule de la feuille de calcul :(encore faut-il qu'il y ait eu au moins
un filtre lancé pour que la plage existe)
=SOMME(_FilterDatabase) si la formule est dans la même feuille de calcul que le filtre
sinon il faut utiliser le nom devant la plage nommée comme ceci :car le NOM créé par
excel est défini au niveau de la feuille de calcul et non au niveau du classeur.
=SOMME(Feuil1!_FilterDatabase)

En vba, pour créer une plage nommée "invisible" : Aide Excel sur le sujet :
expression.Add(Name, RefersTo, Visible, MacroType, ShortcutKey, Category, NameLocal, RefersToLocal,
CategoryLocal, RefersToR1C1, RefersToR1C1Local)

Exemple pour créer un Nom invisible pour une plage de cellules :
ThisWorkbook.Names.Add "toto", Worksheets("Feuil2").Range("A1"), False

Voilà pour l'essentiel.... s'il y a des choses que j'ai oubliées c'est que j'ai
somnelé un peu durant l'harangue de Mgr ! ;-))
Publicité
Poster une réponse
Anonyme