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

Définir une plage de cellule avec N° de ligne variable

13 réponses
Avatar
ManBas
Bonsoir à nouveau,
Par macro je voudrais compter (boucle) le nombre de cellules contenant "x",
pour une ligne donnée, des colonnes B à U.
Ma difficulté c'est de définir la plage de cellule, car la ligne n'est
jamais la même.
Le N° de ligne peut par exemple être défini par ligne=ActiveCell.Row
Mais dans ce cas comment écrire l'équivalent de
For Each Cellule in Range ("Aligne:Bligne").
Merci de votre aide

10 réponses

1 2
Avatar
Benead
Bonsoir ManBas,

Par exemple comme ceci :

For Each Cellule In Range("B" & ActiveCell.Row & ":U" & ActiveCell.Row)

A+
Benead
XL2000

ManBas a écrit:
Bonsoir à nouveau,
Par macro je voudrais compter (boucle) le nombre de cellules contenant "x",
pour une ligne donnée, des colonnes B à U.
Ma difficulté c'est de définir la plage de cellule, car la ligne n'est
jamais la même.
Le N° de ligne peut par exemple être défini par ligne¬tiveCell.Row
Mais dans ce cas comment écrire l'équivalent de
For Each Cellule in Range ("Aligne:Bligne").
Merci de votre aide




Avatar
...Patrick
Salut,
ceci devrait compter:

Sub CompteX()
Dim Cel, Compte
Dim MaLigne
MaLigne = ActiveCell.Row
For Each Cel In Range("B" & MaLigne & ":" & "U" & MaLigne)
If Cel.Value = "x" Then Compte = Compte + 1
Next
MsgBox (Compte)
End Sub

...Patrick


"ManBas" a écrit dans le message de news:

Bonsoir à nouveau,
Par macro je voudrais compter (boucle) le nombre de cellules contenant
"x", pour une ligne donnée, des colonnes B à U.
Ma difficulté c'est de définir la plage de cellule, car la ligne n'est
jamais la même.
Le N° de ligne peut par exemple être défini par ligne¬tiveCell.Row
Mais dans ce cas comment écrire l'équivalent de
For Each Cellule in Range ("Aligne:Bligne").
Merci de votre aide



Avatar
LSteph
Re,

'''***
Sub test()
Dim c As Range, lig As Long, cpt As Byte
lig = ActiveCell.Row
For Each c In Range("B" & lig, "U" & lig).Cells
If LCase(c) Like "*x*" Then cpt = cpt + 1
Next
MsgBox "Dans la plage de B à U de la ligne" & lig & _
vbCrLf & cpt & " cellules contiennent au moins un x"

End Sub
'''***

'lSteph

"ManBas" a écrit dans le message de news:

Bonsoir à nouveau,
Par macro je voudrais compter (boucle) le nombre de cellules contenant
"x", pour une ligne donnée, des colonnes B à U.
Ma difficulté c'est de définir la plage de cellule, car la ligne n'est
jamais la même.
Le N° de ligne peut par exemple être défini par ligne¬tiveCell.Row
Mais dans ce cas comment écrire l'équivalent de
For Each Cellule in Range ("Aligne:Bligne").
Merci de votre aide



Avatar
ManBas
Rahhhh!!! le ":" je n'y avait pas pensé!!!
Le diable se tient dans un détail!!
Merci beaucoup à tous les deux.
Bonsoir et à bientôt.

"...Patrick" a écrit dans le message de
news: %
Salut,
ceci devrait compter:

Sub CompteX()
Dim Cel, Compte
Dim MaLigne
MaLigne = ActiveCell.Row
For Each Cel In Range("B" & MaLigne & ":" & "U" & MaLigne)
If Cel.Value = "x" Then Compte = Compte + 1
Next
MsgBox (Compte)
End Sub

...Patrick


"ManBas" a écrit dans le message de news:

Bonsoir à nouveau,
Par macro je voudrais compter (boucle) le nombre de cellules contenant
"x", pour une ligne donnée, des colonnes B à U.
Ma difficulté c'est de définir la plage de cellule, car la ligne n'est
jamais la même.
Le N° de ligne peut par exemple être défini par ligne¬tiveCell.Row
Mais dans ce cas comment écrire l'équivalent de
For Each Cellule in Range ("Aligne:Bligne").
Merci de votre aide







Avatar
Lionel
Bonsoir ManBas,

Pourquoi chercher midi à quatorze heures quand il est minuit ;-)

Les fonctions d'XL font ça très bien :

NbX = WorksheetFunction.CountIf(Range(Cells(ActiveCell.Row, 2),
Cells(ActiveCell.Row, 21)), "=*x*")

Amicalement
Lionel


"ManBas" a écrit dans le message de
news:
Bonsoir à nouveau,
Par macro je voudrais compter (boucle) le nombre de cellules contenant
"x",

pour une ligne donnée, des colonnes B à U.
Ma difficulté c'est de définir la plage de cellule, car la ligne n'est
jamais la même.
Le N° de ligne peut par exemple être défini par ligne¬tiveCell.Row
Mais dans ce cas comment écrire l'équivalent de
For Each Cellule in Range ("Aligne:Bligne").
Merci de votre aide




Avatar
LSteph
Bonsoir Lionel,
Tout à fait d'accord pour le comptage par countif
mais si j'ai bien compris , la question
de Manbas qui souhaite faire cela en boucle était
surtout le comment écrire l'expression :
For Each c In Range("B" & lig, "U" & lig).Cells
ou autrement proposé
For Each c In Range("B"& lig &":U" & lig).Cells

'lSteph



"Lionel" a écrit dans le message de news:
43dbf804$0$20145$
Bonsoir ManBas,

Pourquoi chercher midi à quatorze heures quand il est minuit ;-)

Les fonctions d'XL font ça très bien :

NbX = WorksheetFunction.CountIf(Range(Cells(ActiveCell.Row, 2),
Cells(ActiveCell.Row, 21)), "=*x*")

Amicalement
Lionel


"ManBas" a écrit dans le message de
news:
Bonsoir à nouveau,
Par macro je voudrais compter (boucle) le nombre de cellules contenant
"x",

pour une ligne donnée, des colonnes B à U.
Ma difficulté c'est de définir la plage de cellule, car la ligne n'est
jamais la même.
Le N° de ligne peut par exemple être défini par ligne¬tiveCell.Row
Mais dans ce cas comment écrire l'équivalent de
For Each Cellule in Range ("Aligne:Bligne").
Merci de votre aide








Avatar
Lionel
Bonsoir LSteph ;-)

Je suis également d'accord avec toi (en fait, on est tous les deux

Par macro je voudrais compter (boucle) le nombre de cellules contenant
"x",

pour **une ligne donnée**, des colonnes B à U.


et donc, je comprend la boucle pour une ligne donnée (soit par colonne). Tu
comprends donc (j'en suis sûr) qu'un comptage avec les fonctions des
feuilles de calcul soit plus rapide qu'une boucle, non ?

Maintenant, si ManBas souhaite connaître le nombre de cellules contenant un
"x", l'appel de fonction est encore plus rapide que la boucle (ce qui est
moins évident sur une seule ligne).

Amitiés LSteph
Lionel


"LSteph" a écrit dans le message de
news:
Bonsoir Lionel,
Tout à fait d'accord pour le comptage par countif
mais si j'ai bien compris , la question
de Manbas qui souhaite faire cela en boucle était
surtout le comment écrire l'expression :
For Each c In Range("B" & lig, "U" & lig).Cells
ou autrement proposé
For Each c In Range("B"& lig &":U" & lig).Cells

'lSteph



"Lionel" a écrit dans le message de news:
43dbf804$0$20145$
Bonsoir ManBas,

Pourquoi chercher midi à quatorze heures quand il est minuit ;-)

Les fonctions d'XL font ça très bien :

NbX = WorksheetFunction.CountIf(Range(Cells(ActiveCell.Row, 2),
Cells(ActiveCell.Row, 21)), "=*x*")

Amicalement
Lionel


"ManBas" a écrit dans le message de
news:
Bonsoir à nouveau,
Par macro je voudrais compter (boucle) le nombre de cellules contenant
"x",

pour une ligne donnée, des colonnes B à U.
Ma difficulté c'est de définir la plage de cellule, car la ligne n'est
jamais la même.
Le N° de ligne peut par exemple être défini par ligne¬tiveCell.Row
Mais dans ce cas comment écrire l'équivalent de
For Each Cellule in Range ("Aligne:Bligne").
Merci de votre aide












Avatar
LSteph
Je suis également d'accord avec toi (en fait, on est tous les deux
d'accord).


;o)) Tout à fait d'accord !
Amitiés (itou)

lSteph
"Lionel" a écrit dans le message de news:
43dc022a$0$18305$
Bonsoir LSteph ;-)

Je suis également d'accord avec toi (en fait, on est tous les deux

Par macro je voudrais compter (boucle) le nombre de cellules contenant
"x",

pour **une ligne donnée**, des colonnes B à U.


et donc, je comprend la boucle pour une ligne donnée (soit par colonne).
Tu
comprends donc (j'en suis sûr) qu'un comptage avec les fonctions des
feuilles de calcul soit plus rapide qu'une boucle, non ?

Maintenant, si ManBas souhaite connaître le nombre de cellules contenant
un
"x", l'appel de fonction est encore plus rapide que la boucle (ce qui est
moins évident sur une seule ligne).

Amitiés LSteph
Lionel


"LSteph" a écrit dans le message de
news:
Bonsoir Lionel,
Tout à fait d'accord pour le comptage par countif
mais si j'ai bien compris , la question
de Manbas qui souhaite faire cela en boucle était
surtout le comment écrire l'expression :
For Each c In Range("B" & lig, "U" & lig).Cells
ou autrement proposé
For Each c In Range("B"& lig &":U" & lig).Cells

'lSteph



"Lionel" a écrit dans le message de news:
43dbf804$0$20145$
Bonsoir ManBas,

Pourquoi chercher midi à quatorze heures quand il est minuit ;-)

Les fonctions d'XL font ça très bien :

NbX = WorksheetFunction.CountIf(Range(Cells(ActiveCell.Row, 2),
Cells(ActiveCell.Row, 21)), "=*x*")

Amicalement
Lionel


"ManBas" a écrit dans le message de
news:
Bonsoir à nouveau,
Par macro je voudrais compter (boucle) le nombre de cellules contenant
"x",

pour une ligne donnée, des colonnes B à U.
Ma difficulté c'est de définir la plage de cellule, car la ligne n'est
jamais la même.
Le N° de ligne peut par exemple être défini par ligne¬tiveCell.Row
Mais dans ce cas comment écrire l'équivalent de
For Each Cellule in Range ("Aligne:Bligne").
Merci de votre aide
















Avatar
danielrv
Bonjour,
Où met on cette fonction ????
Merci par avance.
Danielrv

Les fonctions d'XL font ça très bien :

NbX = WorksheetFunction.CountIf(Range(Cells(ActiveCell.Row, 2),
Cells(ActiveCell.Row, 21)), "=*x*")

Amicalement
Lionel


Avatar
LSteph
Bonjour Daniel,
Il s'agit ici de faire cela dans un code VBA
c'est donc dans un module .
WorksheetFunction.CountIf
équivaut à récupérer en VBA la fonction nb.si d'Excel
sauf qu'ici
NbX = WorksheetFunction.CountIf(Range(Cells(ActiveCell.Row, 2), _
Cells(ActiveCell.Row, 21)), "=*x*")
selon la cellule sélectionnée dans la feuille le code va mettre dans NbX la
formule suivant la ligne de la cellule active .
On peut ensuite par exemple faire afficher le résultat en écrivant dans le
code ainsi:
Msgbox NbX

Cordialement
_ _
'lSteph
"danielrv" a écrit dans le message de news:

Bonjour,
Où met on cette fonction ????
Merci par avance.
Danielrv

Les fonctions d'XL font ça très bien :

NbX = WorksheetFunction.CountIf(Range(Cells(ActiveCell.Row, 2),
Cells(ActiveCell.Row, 21)), "=*x*")

Amicalement
Lionel






1 2