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

Test de ligne vide ou de hauteur de sélection

15 réponses
Avatar
Franck Deschamps
Bonjour,

j'ai une macro qui me sélectionne automatiquement mes cases remplies via:
Selection.SpecialCells(xlCellTypeConstants, 23).Select

Mais je voudrais auparavant vérifier si j'ai des données sur ma ligne 1 de
ma feuille pour ce faire j'ai 2 solutions:
1- Code pour tester si ma première ligne est vide ?
2- suite à ma commande de sélection, m'indiquer combien de ligne (ma heuteur
de sélection) je viens de sélectionner.

Est ce que qqu'un aurait une idée de code pour la solution 1 et/ou 2?

Merci

Franc le débutant :-)

10 réponses

1 2
Avatar
Modeste
Bonsour® Franck Deschamps avec ferveur ;o))) vous nous disiez :

2- suite à ma commande de sélection, m'indiquer combien de ligne (ma
heuteur
de sélection) je viens de sélectionner.


Msgbox Selection.Rows.Count


--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr

Avatar
LSteph
Bonsoir,
1-exemple à adapter:

'***
Sub testvide()
Dim mess As String
mess = "vide"
For Each c In Rows(1).Cells
If Not IsEmpty(c) Then
mess = "non vide"
Exit For
End If
Next
MsgBox mess
End Sub

'***
'lSteph

"Franck Deschamps" a écrit dans le message de
news:
Bonjour,

j'ai une macro qui me sélectionne automatiquement mes cases remplies via:
Selection.SpecialCells(xlCellTypeConstants, 23).Select

Mais je voudrais auparavant vérifier si j'ai des données sur ma ligne 1 de
ma feuille pour ce faire j'ai 2 solutions:
1- Code pour tester si ma première ligne est vide ?
2- suite à ma commande de sélection, m'indiquer combien de ligne (ma
heuteur de sélection) je viens de sélectionner.

Est ce que qqu'un aurait une idée de code pour la solution 1 et/ou 2?

Merci

Franc le débutant :-)



Avatar
anonymousA
Bonjour,

1-Pour savoir si une ligne est vide
if WorksheetFunction.CountBlank(Range("A100:IV100"))%6 then "ligne vide"


2-pour connaitre le nombre de lignes différentes selectionnées. Traite
le cas général des selections non contigues

Dim tabl()

compteur = 1
Selection.SpecialCells(xlCellTypeConstants, 23).Select

ReDim tabl(1 To 1)
tabl(1) = Selection.Areas(1).Cells(1).Row

For Each are In Selection.Areas
For Each c In are.Cells
rech = 0
On Error Resume Next
rech = WorksheetFunction.HLookup(c.Row, tabl, 1, 0)
Err.Clear
If rech >= 1 Then
Else
ReDim Preserve tabl(1 To compteur + 1)
tabl(compteur) = c.Row
End If
Next
Next

MsgBox "Nombre de lignes : " & UBound(tabl)

A+

Bonjour,

j'ai une macro qui me sélectionne automatiquement mes cases remplies via:
Selection.SpecialCells(xlCellTypeConstants, 23).Select

Mais je voudrais auparavant vérifier si j'ai des données sur ma ligne 1 de
ma feuille pour ce faire j'ai 2 solutions:
1- Code pour tester si ma première ligne est vide ?
2- suite à ma commande de sélection, m'indiquer combien de ligne (ma heuteur
de sélection) je viens de sélectionner.

Est ce que qqu'un aurait une idée de code pour la solution 1 et/ou 2?

Merci

Franc le débutant :-)




Avatar
anonymousA
Bonjour,

pas si simple si les cellules de la selection ne sont pas contigues, tu
ne crois pas ?

Cordialement,

Bonsour® Franck Deschamps avec ferveur ;o))) vous nous disiez :


2- suite à ma commande de sélection, m'indiquer combien de ligne (ma
heuteur
de sélection) je viens de sélectionner.



Msgbox Selection.Rows.Count





Avatar
Michel Gaboly
Bonsoir,

Autre approche :

Dans la feuille de calcul, tu définis le nom "NbCarLigne" faisant réf érence à :

=SOMME(NBCAR(DECALER(Feuil1!$1:$1;NumLigne - 1;0)))

Une ligne vide ne pouvant contenir aucun caractère

ce qui donne par macro:

ActiveWorkbook.Names.Add "NbCarLigne", RefersToR1C1:= _
"=SUM(LEN(OFFSET(Feuil1!R1,NumLigne - 1,0)))"

Nom de feuille à adapter le cas échéant;

Pour tester si la ligne 12 est vide :

Sub Eval()
ActiveWorkbook.Names.Add "NumLigne", 12
MsgBox ActiveSheet.Evaluate("NbCarLigne") = 0
End Sub

Ensuite en modifiant à la main la valeur de "NumLigne", ou en modifiant le contenu d'une cellule renommée "NumLigne", tu
peux évaluer sans macro si une ligne est vide en entrant la formule

=NbCarLigne

, qui t'indique le nombre de caracères présents su la ligne ou

=NbCarLigne = 0

, qui t'indique directement si la ligne est vide.



Bonjour,

1-Pour savoir si une ligne est vide
if WorksheetFunction.CountBlank(Range("A100:IV100"))%6 then "ligne vide"


2-pour connaitre le nombre de lignes différentes selectionnées. Tra ite
le cas général des selections non contigues

Dim tabl()

compteur = 1
Selection.SpecialCells(xlCellTypeConstants, 23).Select

ReDim tabl(1 To 1)
tabl(1) = Selection.Areas(1).Cells(1).Row

For Each are In Selection.Areas
For Each c In are.Cells
rech = 0
On Error Resume Next
rech = WorksheetFunction.HLookup(c.Row, tabl, 1, 0)
Err.Clear
If rech >= 1 Then
Else
ReDim Preserve tabl(1 To compteur + 1)
tabl(compteur) = c.Row
End If
Next
Next

MsgBox "Nombre de lignes : " & UBound(tabl)

A+


Bonjour,

j'ai une macro qui me sélectionne automatiquement mes cases remplies via:
Selection.SpecialCells(xlCellTypeConstants, 23).Select

Mais je voudrais auparavant vérifier si j'ai des données sur ma li gne
1 de ma feuille pour ce faire j'ai 2 solutions:
1- Code pour tester si ma première ligne est vide ?
2- suite à ma commande de sélection, m'indiquer combien de ligne ( ma
heuteur de sélection) je viens de sélectionner.

Est ce que qqu'un aurait une idée de code pour la solution 1 et/ou 2 ?

Merci

Franc le débutant :-)





--
Cordialement,

Michel Gaboly
www.gaboly.com


Avatar
Fredo P.
Pour la 1:[A2] = Application.CountA([A1:G1]) ou [A3] Application.CountA(Rows(1))
résult=0=ligne vide
Pour la 2:[A4] = Selection.Rows.Count
Avatar
Modeste
Bonsour® anonymousA avec ferveur ;o))) vous nous disiez :
Dim tabl()
compteur = 1
Selection.SpecialCells(xlCellTypeConstants, 23).Select
ReDim tabl(1 To 1)
tabl(1) = Selection.Areas(1).Cells(1).Row
For Each are In Selection.Areas
For Each c In are.Cells
rech = 0
On Error Resume Next
rech = WorksheetFunction.HLookup(c.Row, tabl, 1, 0)
Err.Clear
If rech >= 1 Then
Else
ReDim Preserve tabl(1 To compteur + 1)
tabl(compteur) = c.Row
End If
Next
Next

MsgBox "Nombre de lignes : " & UBound(tabl)


;o)))
heu !!! Oui en effet : pas si simple , tu ne crois pas ?

--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr

Avatar
JB
Bonjour,

1- If Application.CountA(Rows(1)) = 0 Then MsgBox "ligne1 vide"


2-
Selection.SpecialCells(xlCellTypeConstants, 23).Select
h = Selection.SpecialCells(xlLastCell).Row - ActiveCell.Row

Cordialement JB
Avatar
anonymousA
Bonjour,

sur le point 2, te donnera la différence entre la dernière ligne et
la 1ere mais pas le nombre exact de lignes qui sont selectionnées ( si
l'on considère qu'une ligne est sélectionnée si au moins 1 cellule
de celle-ci l'est).

Cordialement,

JB wrote:
Bonjour,

1- If Application.CountA(Rows(1)) = 0 Then MsgBox "ligne1 vide"


2-
Selection.SpecialCells(xlCellTypeConstants, 23).Select
h = Selection.SpecialCells(xlLastCell).Row - ActiveCell.Row

Cordialement JB


Avatar
JB
Bonjour,

Il me semble bien que c'est la hauteur de la sélection qui est
recherchée. (8 sur l'exemple)
A B C
1
2 22
3 33
4
5 44
6
7
8 55
9 444
10

Sub essai
Set champ = Range("a2:b1000") ' champ dans lequel on recherche
les constantes (optionnel)
h = champ.SpecialCells(xlCellTypeConstants,
23).Areas(champ.SpecialCells(xlCellTypeConstants, 23).Areas.Count).Row
- champ.Row + 1
End Sub

http://cjoint.com/?mqjNp7xVXX

Cordialement JB
1 2