Identification de la première ligne vide

Valafar

XLDnaute Nouveau
Bonjour,

Je suis à la recherche d'un code me permettant d'identifier la première ligne vide d'un fichier Excel afin de pouvoir y rentrer des données via des controls sur un userform.

J'ai un code qui fonctionne, mais qui n'est pas adapté à mon cas. En effet, dans ma ligne toutes les cellules ne sont pas remplies.
Exemple : j'ai 6 colonnes pouvant être remplies,
ma première saisie va remplir les 2 premières et la dernière
une autre saisie va remplir les 2 premières mais aussi la colonne 5 et 6

Voilà mon code :
Code:
Range("A65536").End(xlUp).Offset(1, 0).Select

Je souhaite donc avec un code pouvoir identifier la première ligne entièrement vide.

Cordialement.
Valafar.
 

Dranreb

XLDnaute Barbatruc
Re : Identification de la première ligne vide

Bonjour.

La 1ère ligne entièrement vide ? Pas très courant dans ce contexte … Parce que la 1ère ligne qui suit la dernière non vide, ça oui !
J'utilise beaucoup ces fonctions :
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

Edit: Bonjour VDAVID
 
Dernière édition:

MP59

XLDnaute Occasionnel
Re : Identification de la première ligne vide

bonjour,
peut-être

Code:
Sub test()
Dim i, a
For i = 1 To 65000
a = Application.WorksheetFunction.CountA(Rows(i).EntireRow)
If a = 0 Then
MsgBox i
Cells(i, 1).Select
Exit Sub
End If
Next i
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 082
Messages
2 085 169
Membres
102 804
dernier inscrit
edaguo