Position de la dernière cellule non vide

  • Initiateur de la discussion Initiateur de la discussion Tatiana29
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Tatiana29

XLDnaute Occasionnel
Salut,

j'ai dans ma colonne A
N° ligne contenu
1 nom
2 toto
3 roberto
4
5
6 albert
7 benoit 17

Et j'utilise cette syntaxe!
Application.WorksheetFunction.CountA(Range("A:A")) =>me donne 5 alors que je veux 7
mais cela compte que les cellules pleines et ne tient pas compte des cellules vides
Est ce que sait quel code tient compte des cellules vides?
 
Re : Position de la dernière cellule non vide

Bonjour.
Il y en a plusieurs. Le plus utilisé c'est Cells(Rows.Count, 1).End(xlUp).Row
Mais ça ne tiendrait pas compte de cellules vides à la fin.
Si d'autres colonnes sont impliquées pour déterminer la fin vous pourriez utiliser ces fonctions qui rendent des Range
VB:
Function PlgUti(ByVal PlageDép As Range, Optional ByVal PlagExam As Range = Nothing) As Range
Rem. Cherche la partie utilisée d'une plage, c'est à dire celle qui s'étend jusqu'à la dernière cellule renseignée de plus qu'une chaîne vide.
'    PlageDép: Plage de départ. Seule la 1ère cellule spécifiée est prise en compte pour la déterminer, et suffit donc pour une utilisation VBA.
'            Pour utilisation en formules, il est néanmoins nécessaire de spécifier la plage depuis celle ci jusqu'au reste des colonnes entières.
'    PlageExam: Plus grande plage susceptible de contenir la plage cherchée.
'            Facultatif: UsedRange assumé par défaut.
Dim LMax As Long, CMax As Long, Nbl As Long, NbC As Long
On Error GoTo RienTrouvé
If PlagExam Is Nothing Then Set PlagExam = PlageDép.Worksheet.UsedRange
LMax = PlagExam.Find("*", PlagExam.Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).Row
CMax = PlagExam.Find("*", PlagExam.Cells(1, 1), xlValues, xlWhole, xlByColumns, xlPrevious).Column
On Error GoTo 0
Nbl = LMax - PlageDép.Row + 1: If Nbl < 1 Then GoTo CEstToutVide
NbC = CMax - PlageDép.Column + 1: If NbC < 1 Then GoTo CEstToutVide
Set PlgUti = PlageDép.Resize(Nbl, NbC)
Exit Function
RienTrouvé: Resume CEstToutVide
CEstToutVide: Set PlgUti = Nothing
End Function

Function ColUti(ByVal PlageDép As Range) As Range
Rem. Comme PlgUti, mais la plage rendue se limitera aux colonnes couvertes par la plage de départ spécifiée
Set ColUti = PlgUti(PlageDép, Intersect(PlageDép.Worksheet.UsedRange, PlageDép.EntireColumn))
End Function
Cordialement.
 
Dernière édition:
Re : Position de la dernière cellule non vide

Bonjour Tatiana, Dranreb

Normalement la formule est:

Code:
=LIGNES(A1:A6)

Cela doit être Rose (Rows) en VBA.

Mais après comme dit Dranreb, cela dépend de ce que tu veux.
 
Dernière édition:
Re : Position de la dernière cellule non vide

Bojour MJ13
La solution qui a ma préférence c'est de donner des noms aux plages.
Alors oui en Excel: =LIGNES(Toto)
En VBA: Application.[Toto].Rows.Count
encore qu'il serait préférable de remplacer Application par le CodeName de la feuille qui contient la plage.
À +
 
Dernière édition:
Re : Position de la dernière cellule non vide

j'ai testé ce code avec la solutio mais ca bloque!
je veux récupérer la valeur dans la variable Nord1 que j'ai bien déclarer!

ActiveWorkbook.Sheets("NORD-N").Activate
'Nord1 = Application.WorksheetFunction.CountA(Range("A:A")) + 1
Nord1 = Range("A1048576").End(xlUp).Row - 1
 
Re : Position de la dernière cellule non vide

Ety j'ai testé ca aussi mais ca bug!
ActiveWorkbook.Sheets("NORD-N").Activate
'Nord1 = Application.WorksheetFunction.CountA(Range("A:A")) + 1
Nord1 = Application.WorksheetFunction.Rows.Count
😡
 
Re : Position de la dernière cellule non vide

Je crois qu'il y a une confusion à cause de ma dernière intervention. Je ne parlais pas de noms de variables Range.
Je parlais de Insertion, Nom, Définir dans Excel.
À par ça , oui vous testez tout et n'importe quoi, sauf ce qu'on vous a dit !
Joignez une version simplifiée de votre classeur, ce sera plus simple.
À +
 
Dernière édition:
Re : Position de la dernière cellule non vide

bonjour tous🙂🙂🙂🙂🙂🙂
exemple


pas oblige d'activer la feuille pour ecrire dedans ou connaitre les infos

Code:
Sub es()
'numero de la ligne de la cellule pleine de la colonne A
MsgBox Sheets("ta feuille").Range("a" & Rows.Count).End(xlUp).Row

'valeur de la derniere cellule pleine de la colonne A
MsgBox Sheets("ta feuille").Range("a" & Rows.Count).End(xlUp)

'ecrire dans la derniere cellule pleine de la colonne a
Sheets("ta feuille").Range("a" & Rows.Count).End(xlUp) = "toi"

'ecrire apres la derniere cellule pleine de la colonne a
Sheets("ta feuille").Range("a" & Rows.Count).End(xlUp)(2) = "moi"
End Sub

ps pas vu ton dernier fichier

bien sur connaitre la prémiere vide

Code:
MsgBox Sheets("ta feuille").Range("a" & Rows.Count).End(xlUp).Row + 1
 
Dernière édition:
Re : Position de la dernière cellule non vide

Voulez vous re-joindre au format xls plutot que xlsm ? De toute façon dans un xlsx elle ne passent pas. Je ne vois pas sur quel critère on pourrait obtenir 8 à moins de se référer très précisément à $A$1:$A$8. La toute dernière ligne renseignée est la 7.

P.S. Mais puisque vous êtes en Excel 2007, essayez de convertir en tableau la partie utile de votre liste. Il y a parait il des possibilités intéressantes de ce coté qui éviteraient les End(xlUp) à tours de bras.

À ce propos, pour ma culture personnelle, quelqu'un voudrait il avoir la gentillesse de me communiquer l'aide sur l'objet ListObject, surtout les méthodes et propriétés. Merci d'avance.
 
Dernière édition:
Re : Position de la dernière cellule non vide

Re à tous

Pour Dranreb, mais sur XL2007 😱:

[TABLE="width: 100%"]
[TR]
[TD="align: left"]Membres de l'objet ListObject
[/TD]
[/TR]
[/TABLE]
Cet objet représente un tableau dans une feuille de calcul.
Méthodes
Description
Cette méthode supprime l'objet ListObject et efface les données des cellules dans la feuille de calcul.
Exporte un objet ListObject dans Visio.
Cette méthode publie l'objet ListObject sur un serveur exécutant Microsoft Windows SharePoint Services.
Cette méthode récupère les données et le schéma actifs pour la liste sur le serveur exécutant Microsoft Windows SharePoint Services. Elle s'utilise uniquement avec des listes liées à un site SharePoint. Si le site SharePoint n'est pas disponible, l'appel à cette méthode renvoie une erreur.
La méthode Resize autorise le redimensionnement d'un objet ListObject sur une nouvelle plage. Aucune cellule n'est insérée ni supprimée.
Cette méthode supprime la liaison entre une liste et un site Microsoft Windows SharePoint Services. Elle renvoie la valeur Nothing.
Cette méthode supprime la fonctionnalité de liste d'un objet ListObject. Après avoir utilisé cette méthode, la plage de cellules qui composait la liste redevient une plage de données ordinaire.

[TH="class: thhead"][/TH]
[TH="width: 20%"]Nom
[/TH]

[TD="width: 6%"]
methods.gif

[/TD]
[TD="width: 20%"] Delete
[/TD]

[TD="width: 6%"]
methods.gif

[/TD]
[TD="width: 20%"] ExportToVisio
[/TD]

[TD="width: 6%"]
methods.gif

[/TD]
[TD="width: 20%"] Publish
[/TD]

[TD="width: 6%"]
methods.gif

[/TD]
[TD="width: 20%"] Refresh
[/TD]

[TD="width: 6%"]
methods.gif

[/TD]
[TD="width: 20%"] Resize
[/TD]

[TD="width: 6%"]
methods.gif

[/TD]
[TD="width: 20%"] Unlink
[/TD]

[TD="width: 6%"]
methods.gif

[/TD]
[TD="width: 20%"] Unlist
[/TD]

Propriétés
Description
Renvoie une valeur Boolean indiquant si un objet ListObject d'une feuille de calcul est actif, c'est-à-dire si la cellule active se trouve dans la plage de cet objet ListObject. Argument de type Boolean en lecture seule.
Utilisée sans qualificateur d'objet, cette propriété renvoie un objet Application qui représente l'application Microsoft Excel. Lorsqu'elle est utilisée avec un qualificateur d'objet, elle renvoie un objet Application représentant l'application ayant créé l'objet spécifié (vous pouvez utiliser cette propriété avec un objet OLE Automation qui renvoie l'application d'origine de cet objet). En lecture seule.
Cette méthode filtre une liste à l'aide du filtre automatique. Propriété en lecture seule.
Cette propriété renvoie ou définit le commentaire associé à l'objet liste. Type de données String en lecture-écriture.
Cette propriété renvoie un objet Range qui représente la plage de valeurs, à l'exception de la ligne d'en-tête dans une table. Type de données en lecture seule.
Renvoie ou définit le nom d'affichage de l'objet ListObject spécifié. Type de données String en lecture/écriture.
Cette propriété a la valeur True si l'objet ListObject s'affiche de droite à gauche, plutôt que de gauche à droite. Elle a la valeur False si cet objet s'affiche de gauche à droite. Type de données Boolean en lecture seule.
Renvoie un objet Range qui représente la plage de la ligne d'en-tête d'une liste. Objet de type Range en lecture seule.
Renvoie un objet Range représentant l'option Insérer une ligne, le cas échéant, d'un objet ListObject spécifié. Objet de type Range en lecture seule.
Renvoie une collection ListColumns qui représente toutes les colonnes d'un objet ListObject. Propriété en lecture seule.
Renvoie un objet ListRows qui représente toutes les lignes de données dans l'objet ListObject. Propriété en lecture seule.
Renvoie ou définit une valeur String, qui représente le nom de l'objet ListObject.
Cette propriété renvoie l'objet parent de l'objet spécifié. En lecture seule.
Cette propriété renvoie l'objet QueryTable qui contient le lien de l'objet ListObject au serveur de liste. Type de données en lecture seule.
Cette propriété renvoie un objet Range qui représente la plage à laquelle s'applique l'objet de liste spécifié dans la liste ci-avant.
Renvoie un argument de type String représentant l'URL de la liste SharePoint pour un objet ListObject donné. Type de données String en lecture seule.
Cette propriété renvoie un objet Boolean pour indiquer si le filtre automatique doit être affiché. Type de données Boolean en lecture-écriture.
Renvoie ou définit si les informations de l'en-tête doivent être affichées pour l'objet ListObject spécifié. Type de données Boolean en lecture-écriture.
Renvoie ou définit si le style de tableau Colonnes impaires est utilisé pour l'objet ListObject spécifié. Type de données Boolean en lecture-écriture.
Renvoie ou définit si la première colonne doit être affichée pour l'objet ListObject spécifié. Type de données Boolean en lecture-écriture.
Renvoie ou définit si la dernière colonne doit être affichée pour l'objet ListObject spécifié. Type de données Boolean en lecture-écriture.
Renvoie ou définit si le style de tableau Lignes impaires est utilisé pour l'objet ListObject spécifié. Type de données Boolean en lecture-écriture.
Cette propriété obtient ou définit un type de données Boolean pour indiquer si la ligne des totaux est visible. Type de données Boolean en lecture-écriture.
Récupère ou définit la colonne ou les colonnes du tri et l'ordre de tri pour la collection ListObject.
Renvoie la valeur XlListObjectSourceType qui représente la source actuelle de la liste.
Récupère ou définit le style de tableau de l'objet ListObject spécifié. Type de données Variant en lecture/écriture.
Cette propriété renvoie un objet de type Range représentant la ligne des totaux de l'objet ListObject spécifié, le cas échéant. Propriété en lecture seule.
Cette propriété renvoie un objet XmlMap représentant le mappage de schéma utilisé pour la table spécifiée. Propriété en lecture seule.

[TH="class: thhead"][/TH]
[TH="width: 20%"]Nom
[/TH]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] Active
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] Application
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] AutoFilter
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] Comment
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] DataBodyRange
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] DisplayName
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] DisplayRightToLeft
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] HeaderRowRange
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] InsertRowRange
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] ListColumns
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] ListRows
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] Name
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] Parent
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] QueryTable
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] Range
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] SharePointURL
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] ShowAutoFilter
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] ShowHeaders
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] ShowTableStyleColumnStripes
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] ShowTableStyleFirstColumn
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] ShowTableStyleLastColumn
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] ShowTableStyleRowStripes
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] ShowTotals
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] Sort
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] SourceType
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] TableStyle
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] TotalsRowRange
[/TD]

[TD="width: 6%"]
properties.gif

[/TD]
[TD="width: 20%"] XmlMap
[/TD]

 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

M
Réponses
2
Affichages
741
Retour