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

Comptage de lignes vides

4 réponses
Avatar
Apitos
Bonjour,

J'ai un tableau qui se termine =E0 la ligne 12 et un autre qui d=E9bute =E0
la ligne 15.

Comment faire en VBA pour compter le nombre de lignes vides entre ces
deux tableaux ?

Merci.

4 réponses

Avatar
Daniel.C
Bonjour.
Essaie :

Sub test()
Dim i As Integer, ctr As Integer
For i = 13 To 14
If Application.CountA(Rows(i)) = 0 Then
ctr = ctr + 1
End If
Next i
MsgBox "Nombre de lignes vides : " & ctr
End Sub

Cordialement.
Daniel
"Apitos" a écrit dans le message de news:



Bonjour,

J'ai un tableau qui se termine à la ligne 12 et un autre qui débute à
la ligne 15.

Comment faire en VBA pour compter le nombre de lignes vides entre ces
deux tableaux ?

Merci.
Avatar
Apitos
Merci Daniel,

Mais l'écart n'est pas toujours égal à 2 lignes.


Dans l'exemple en fichier joint, j'aimerais éffacer le tableau allant
de A19 à A28 plus les cellules vides allant jusqu'à la ligne A35.

Le tableau à éffacer est trouvé aprés une recherche de la cellule
intitulé (Trouve_intit.adresse)


'------
debutabrow = Trouve_intit.Row - 1
debutabcol = Trouve_intit.Column - 1
fintabrow = Trouve_intit.Offset(0, -1).End(xlDown).Row
fintabcol = Trouve_intit.Column + 1
MsgBox "debutabrow = " & debutabrow & vbLf & _
"debutabcol = " & debutabcol & vbLf & _
"fintabrow = " & fintabrow & vbLf & _
"fintabcol = " & fintabcol
MsgBox "On va supprimé le tableau de
l'intitulé : " & intitule
Range(Cells(debutabrow, debutabcol),
Cells(fintabrow + 2, fintabcol)).Delete shift:=xlUp
'-------------------------------

Le 2 (Nbre de lignes vides au-dessous par defaut ) ajouté à fintabrow
n'est pas toujours vrai, parce que dans notre cas il y'a 7 lignes
vides et non pas 2.

Alors comment trouver qu'il y'a 7 lignes vides en bas du tableau à
éffacer ?

Merci

http://cjoint.com/?bmtAKP7sLs
Avatar
Daniel.C
Essaie la macro ci-dessous. Elle efface les lignes 19 à 35 de ton classeur
(soit du deuxième "Crédit" à la ligne avant le troisième) :

Sub suppr()
Dim Ligne1 As Integer, Ligne2 As Integer
Set c = Columns(1).Find("Crédit", [A1], , xlWhole)
Set c = Columns(1).FindNext(c)
Ligne1 = c.Row
Set c = Columns(1).FindNext(c)
Ligne2 = c.Row - 1
Range(Ligne1 & ":" & Ligne2).Clear
End Sub

Daniel
"Apitos" a écrit dans le message de news:

Merci Daniel,

Mais l'écart n'est pas toujours égal à 2 lignes.


Dans l'exemple en fichier joint, j'aimerais éffacer le tableau allant
de A19 à A28 plus les cellules vides allant jusqu'à la ligne A35.

Le tableau à éffacer est trouvé aprés une recherche de la cellule
intitulé (Trouve_intit.adresse)


'------
debutabrow = Trouve_intit.Row - 1
debutabcol = Trouve_intit.Column - 1
fintabrow = Trouve_intit.Offset(0, -1).End(xlDown).Row
fintabcol = Trouve_intit.Column + 1
MsgBox "debutabrow = " & debutabrow & vbLf & _
"debutabcol = " & debutabcol & vbLf & _
"fintabrow = " & fintabrow & vbLf & _
"fintabcol = " & fintabcol
MsgBox "On va supprimé le tableau de
l'intitulé : " & intitule
Range(Cells(debutabrow, debutabcol),
Cells(fintabrow + 2, fintabcol)).Delete shift:=xlUp
'-------------------------------

Le 2 (Nbre de lignes vides au-dessous par defaut ) ajouté à fintabrow
n'est pas toujours vrai, parce que dans notre cas il y'a 7 lignes
vides et non pas 2.

Alors comment trouver qu'il y'a 7 lignes vides en bas du tableau à
éffacer ?

Merci

http://cjoint.com/?bmtAKP7sLs
Avatar
Apitos
Bonjour Daniel.C,

Ton code marche sauf qu'il effacera les lignes en entiers.

Bon j'ai trouvé la solution en ajoutant ces trois lignes :

'-----------------------
v = 1
Do While IsEmpty(Cells(fintabrow + v, fintabcol - 1).Value)
v = v + 1
Loop
'-------------------

Avec celui d'en haut :

'---------------------------
debutabrow = Trouve_intit.Row - 1
debutabcol = Trouve_intit.Column - 1
fintabrow = Trouve_intit.Offset(0,
-1).End(xlDown).Row
fintabcol = Trouve_intit.Column + 1
MsgBox "debutabrow = " & debutabrow & vbLf & _
"debutabcol = " & debutabcol & vbLf & _
"fintabrow = " & fintabrow & vbLf & _
"fintabcol = " & fintabcol
v = 1
Do While IsEmpty(Cells(fintabrow + v,
fintabcol - 1).Value)
v = v + 1
Loop
MsgBox "On va supprimé le tableau de
l'intitulé : " & intitule
Range(Cells(debutabrow, debutabcol),
Cells(fintabrow + v - 1, fintabcol)).Delete shift:=xlUp

'--------------------------

Salutations.