Position de la dernière cellule non vide

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?
 

Dranreb

XLDnaute Barbatruc
Re : Position de la dernière cellule non vide

Merci MJ13. Ça parait en effet intéressant. Par ailleurs je sait que vos objets Range ont désormais une propriété ListObject qui représentent l'objet ListObject éventuel auquel ils appartiennent. Donc après conversion en table de la partie utilisée de sa colonne A, Tatiana29 devrait pouvoir obtenir son nombre de lignes par Range("A1").ListObject.Range.Rows.Count

J'ai ouvert le fichier, ceci donne bien 8
VB:
Sub macro2()
Dim crevettegrise As Integer
crevettegrise = 0
crevettegrise = PlgUti(ActiveSheet.[A1]).Rows.Count
Range("d8").Value = crevettegrise
End Sub
'

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
Cordialement.
 
Dernière édition:

Tatiana29

XLDnaute Occasionnel
Re : Position de la dernière cellule non vide

voici la solution!


Sub macro2()
Dim crevettegrise As Integer
crevettegrise = 0
'crevettegrise = Application.WorksheetFunction.CountA(Range("A:A"))
crevettegrise = Range("A25000").End(xlUp).Row + 1

Range("d8").Value = crevettegrise
End Sub
 

Dranreb

XLDnaute Barbatruc
Re : Position de la dernière cellule non vide

Ta solution ne donne le résultat juste que si la dernières cellule renseignée de la colonne A est la A7.
La mienne le donne pour toutes cellules renseignées depuis la A1, donc le nombre de lignes de A1:E8 puisque E8 contient "mois je veux 8!!"
À +
 
Dernière édition:

modus57

XLDnaute Occasionnel
Re : Position de la dernière cellule non vide

Bonjour Tatiana29, le forum. :)

Peut-être un bout de réponse.

Code:
Sub SelectCellVide()
    MsgBox Sheets("base").Range("a" & Rows.Count).End(xlUp).Row + 1
    'séléctionne la dernière cellule (réellement)' non vide de la colonne A + 1.
    Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Select
End Sub

@ +
 

Pièces jointes

  • Copie de exemple fichier-1.xlsm
    19.3 KB · Affichages: 51

modus57

XLDnaute Occasionnel
Re : Position de la dernière cellule non vide

Bonjour Tatiana29, le forum. :)

Peut-être un bout de réponse.

Code:
Sub SelectCellVide()
    MsgBox Sheets("base").Range("a" & Rows.Count).End(xlUp).Row + 1
    'séléctionne la dernière cellule (réellement) non vide de la colonne A + 1.
    Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Select
End Sub
@ +
 

modus57

XLDnaute Occasionnel
Re : Position de la dernière cellule non vide

Re bonjour.:):):)

Mon dernier message du 14.06.06 ne s'affichait pas, j'ai envoyé celui-ci une deuxième fois à 7:05 aujourd'hui, maintenant il s'affiche 2 fois et l'heure d'envoi à 5:05 ???

Comment effacer ce second message et corriger le décalage horaire.

Merci d'avance pour votre réponse.

Cordiales salutations.
 

Discussions similaires

Statistiques des forums

Discussions
312 429
Messages
2 088 348
Membres
103 822
dernier inscrit
kader55