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...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 !!!
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" <nospam@ns.com> a écrit dans le message de groupe de discussion :
eFLxeIr8JHA.1376@TK2MSFTNGP02.phx.gbl...
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...
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 !!!
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 :
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)
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 :
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 :
| 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" <nospam@ns.com> a écrit dans le message de groupe de discussion :
etbP7H18JHA.1340@TK2MSFTNGP05.phx.gbl...
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)
| 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)