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

definition de range et boucle for each... next

3 réponses
Avatar
Mirv
Bonsoir,

je me resouds a demander au forum de l'aide pour le probleme suivant :

- j'ai une feuille, intitulee "config", dans laquelle figurent en
colonne les noms de x personnes (8 pour le moment, mais evolutif).
- j'ai une autre feuille, intitulee "deals" dans laquelle figurent
l'ensemble des enregistrements de ces 8 personnes.

Grace a vos contributions, je peux lancer une macro qui selectionne les
enregistrements d'une personne par le biais des autofiltres.

Probleme : Le nom de la personne est ecrit "en dur" dans la macro. Je
voudrais le remplacer par une variable qui passe les 8 personnes de la
liste une a une.

J'entrevois la solution mais me heurte au probleme de definition de
range, de selection.end(xldown), de for each...next... ca va pas
chercher sur la bonne feuille entre "deals" et "config"... bref, si vous
pouviez m'indiquer une piste...

Un grand merci d'avance !!!

3 réponses

Avatar
MichDenis
Bonjour Mirv,

Voici un petit exemple :

Sub test()
Dim Rg As Range, C As Range

Nom Feuille où est la liste de noms
With Worksheets("NomDeLaFeuille")
'Choix de la colonne
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
End With

For Each C In Rg
'Nom de la feuille où s'effectue le filtre
With Worksheets("NomFeuilleFiltre")
'Choix de la plage où le filtre s'applique
With .Range("A1").CurrentRegion
'Colonne retenue : Colonne = 2
.AutoFilter Field:=2, Criteria1:=C
'Nombre d'enregistrements obtenus
MsgBox Application.Subtotal(3, _
.Columns(2).SpecialCells(xlCellTypeVisible)) - 1 & _
" enregistrement(s) de trouver répondant au " & _
"critère de : " & C.Value
End With
End With
Next
End Sub



"Mirv" a écrit dans le message de groupe de discussion :

Bonsoir,

je me resouds a demander au forum de l'aide pour le probleme suivant :

- j'ai une feuille, intitulee "config", dans laquelle figurent en
colonne les noms de x personnes (8 pour le moment, mais evolutif).
- j'ai une autre feuille, intitulee "deals" dans laquelle figurent
l'ensemble des enregistrements de ces 8 personnes.

Grace a vos contributions, je peux lancer une macro qui selectionne les
enregistrements d'une personne par le biais des autofiltres.

Probleme : Le nom de la personne est ecrit "en dur" dans la macro. Je
voudrais le remplacer par une variable qui passe les 8 personnes de la
liste une a une.

J'entrevois la solution mais me heurte au probleme de definition de
range, de selection.end(xldown), de for each...next... ca va pas
chercher sur la bonne feuille entre "deals" et "config"... bref, si vous
pouviez m'indiquer une piste...

Un grand merci d'avance !!!
Avatar
Mirv
Merci 1 fois de plus...
je vais m'en inspirer... je crois y trouver ce qu'il me faut...

petite question : dans la definition du range, pourquoi partir du bas de
la colonne et remonter ? J'essayais d'utiliser end(xldown)



MichDenis wrote:
Bonjour Mirv,

Voici un petit exemple :



Avatar
MichDenis
| petite question : dans la definition du range, pourquoi partir du bas de
| la colonne et remonter ? J'essayais d'utiliser end(xldown)

le End(xldown) s'arrête si une cellule dans la colonne est vide.
Résultat on est pas nécessairement sûr d'avoir obtenu la dernière
ligne occupée par une donnée. Pour plus d'assurance, on commence
par le BAS vers le HAUT. Cela donne à coup sûr, la dernière ligne occupée
dans la colonne nonobstant le fait qu'il peut y avoir des lignes vides entre
la première et dernière ligne de la colonne.




"Mirv" a écrit dans le message de groupe de discussion :

Merci 1 fois de plus...
je vais m'en inspirer... je crois y trouver ce qu'il me faut...

petite question : dans la definition du range, pourquoi partir du bas de
la colonne et remonter ? J'essayais d'utiliser end(xldown)



MichDenis wrote:
Bonjour Mirv,

Voici un petit exemple :