Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Calcul du nombre ligne d'un tableau

8 réponses
Avatar
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

8 réponses

Avatar
JB
Bonjour,

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

JB

On 20 jan, 09:56, "Xavier powaga" wrote:
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


Avatar
Pounet95
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" a écrit dans le message de
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



Avatar
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" a écrit dans le message de news:

Bonjour,

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

JB

On 20 jan, 09:56, "Xavier powaga" wrote:
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


Avatar
Xavier powaga
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" a écrit dans le message de
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






Avatar
Misange
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

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

JB

On 20 jan, 10:25, "Xavier powaga" wrote:
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" a écrit dans le message de news:

Bonjour,

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

JB

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



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 -



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


"JB" a écrit dans le message de news:


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

JB

On 20 jan, 10:25, "Xavier powaga" wrote:
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" a écrit dans le message de news:

Bonjour,

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

JB

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



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 -



Avatar
MichDenis
| 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 ! ;-))