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

Macro qui filtre des données selon un critère a choix

9 réponses
Avatar
Gary
Bonjour =E0 tous,

J'ai un dilemme avec une cr=E9ation de macro (suis encore un=20
peu novice) : je souhaiterais cr=E9er une macro qui filtre=20
des donn=E9es selon un crit=E8re a choix. Je m'explique : j'ai=20
dans une feuille de donn=E9es des =E9tats de compte pour=20
plusieurs unit=E9s budg=E9taires.

Mon id=E9e est d'envoyer le fichier global =E0 chaque=20
responsable d'unit=E9. Le responsable d'unit=E9 clique sur un=20
bouton. Il introduit le num=E9ro de son UB dans la bo=EEte de=20
dialogue et la macro affiche les donn=E9es correspondant =E0=20
son unit=E9. Je remercie d'avance toute personne qui=20
pourrait m'aider =E0 r=E9soudre cette macro.=20
A+++ Gary

9 réponses

Avatar
Himselff
Si tu connais un peu de VBA il est tres simple d'arriver a faire quelque
chose,

Sur l'évenement du bouton tu peux simplement indiquer toute les options de
codes UB possible et afficher les données correspondantes, bien évideament
sa peux devenir long s'il ya plusieur manager =)

Public sub bouton_click()

UBCode = inputbox("Entrez votre numéro UB!")

select case UBCode

case("manager1")
'Insérer les data
case("manager2")

etc ...

end sub

Bien sure sa dépend toujours du critère qui détermine quel manager à besoin
de quels données !

Bonne Chance!

Fred
"Gary" wrote in message
news:699a01c42ec1$f50c3400$
Bonjour à tous,

J'ai un dilemme avec une création de macro (suis encore un
peu novice) : je souhaiterais créer une macro qui filtre
des données selon un critère a choix. Je m'explique : j'ai
dans une feuille de données des états de compte pour
plusieurs unités budgétaires.

Mon idée est d'envoyer le fichier global à chaque
responsable d'unité. Le responsable d'unité clique sur un
bouton. Il introduit le numéro de son UB dans la boîte de
dialogue et la macro affiche les données correspondant à
son unité. Je remercie d'avance toute personne qui
pourrait m'aider à résoudre cette macro.
A+++ Gary
Avatar
Nicolas B.
Salut,

Si tu ne veux pas que l'utilisateur touche à la feuille de données, mais
seulement à une copie de cette feuille à laquelle on applique le filtre, la
macro suivante devrait te convenir.

Le tableau complet se trouve en A2:Dn de la feuille "Données" (en A1:D1, les
étiquettes et notmment en A1 "UB" et en col A les numéros des utilisateurs).
Dans cette feuille, il y a en F1 "UB", le nom de l'étiquette de la colonne
A.
La feuille "Interface" est vierge.


Sub Tata()
UB = 1 'Numéro de l'utilisateur récupéré dans ta UserForm
Sheets("Interface").Cells.Clear
With Sheets("Données")
.Range("F2") = UB
.Range("A1:D999").AdvancedFilter xlFilterCopy, .Range("F1:F2"),
Sheets("Interface").Range("A1:C1")
End With
End Sub


A+
--
Nicolas B.


Bonjour à tous,

J'ai un dilemme avec une création de macro (suis encore un
peu novice) : je souhaiterais créer une macro qui filtre
des données selon un critère a choix. Je m'explique : j'ai
dans une feuille de données des états de compte pour
plusieurs unités budgétaires.

Mon idée est d'envoyer le fichier global à chaque
responsable d'unité. Le responsable d'unité clique sur un
bouton. Il introduit le numéro de son UB dans la boîte de
dialogue et la macro affiche les données correspondant à
son unité. Je remercie d'avance toute personne qui
pourrait m'aider à résoudre cette macro.
A+++ Gary


Avatar
Himselff
Tu oublie la variante que Chaque Manager dois avoir des données différentes,
a la suite d'une entrée de code !

Fred
"Nicolas B." wrote in message
news:
Salut,

Si tu ne veux pas que l'utilisateur touche à la feuille de données, mais
seulement à une copie de cette feuille à laquelle on applique le filtre,
la

macro suivante devrait te convenir.

Le tableau complet se trouve en A2:Dn de la feuille "Données" (en A1:D1,
les

étiquettes et notmment en A1 "UB" et en col A les numéros des
utilisateurs).

Dans cette feuille, il y a en F1 "UB", le nom de l'étiquette de la colonne
A.
La feuille "Interface" est vierge.


Sub Tata()
UB = 1 'Numéro de l'utilisateur récupéré dans ta UserForm
Sheets("Interface").Cells.Clear
With Sheets("Données")
.Range("F2") = UB
.Range("A1:D999").AdvancedFilter xlFilterCopy, .Range("F1:F2"),
Sheets("Interface").Range("A1:C1")
End With
End Sub


A+
--
Nicolas B.


Bonjour à tous,

J'ai un dilemme avec une création de macro (suis encore un
peu novice) : je souhaiterais créer une macro qui filtre
des données selon un critère a choix. Je m'explique : j'ai
dans une feuille de données des états de compte pour
plusieurs unités budgétaires.

Mon idée est d'envoyer le fichier global à chaque
responsable d'unité. Le responsable d'unité clique sur un
bouton. Il introduit le numéro de son UB dans la boîte de
dialogue et la macro affiche les données correspondant à
son unité. Je remercie d'avance toute personne qui
pourrait m'aider à résoudre cette macro.
A+++ Gary






Avatar
Nicolas B.
C'était sous-entendu. La valeur de la UserForm doit être récupérée dans la
variable UB.


A+
--
Nicolas B.


Tu oublie la variante que Chaque Manager dois avoir des données
différentes, a la suite d'une entrée de code !

Fred
"Nicolas B." wrote in message
news:
Salut,

Si tu ne veux pas que l'utilisateur touche à la feuille de données,
mais seulement à une copie de cette feuille à laquelle on applique
le filtre, la macro suivante devrait te convenir.

Le tableau complet se trouve en A2:Dn de la feuille "Données" (en
A1:D1, les étiquettes et notmment en A1 "UB" et en col A les numéros
des utilisateurs). Dans cette feuille, il y a en F1 "UB", le nom de
l'étiquette de la colonne A.
La feuille "Interface" est vierge.


Sub Tata()
UB = 1 'Numéro de l'utilisateur récupéré dans ta UserForm
Sheets("Interface").Cells.Clear
With Sheets("Données")
.Range("F2") = UB
.Range("A1:D999").AdvancedFilter xlFilterCopy, .Range("F1:F2"),
Sheets("Interface").Range("A1:C1")
End With
End Sub


A+
--
Nicolas B.


Bonjour à tous,

J'ai un dilemme avec une création de macro (suis encore un
peu novice) : je souhaiterais créer une macro qui filtre
des données selon un critère a choix. Je m'explique : j'ai
dans une feuille de données des états de compte pour
plusieurs unités budgétaires.

Mon idée est d'envoyer le fichier global à chaque
responsable d'unité. Le responsable d'unité clique sur un
bouton. Il introduit le numéro de son UB dans la boîte de
dialogue et la macro affiche les données correspondant à
son unité. Je remercie d'avance toute personne qui
pourrait m'aider à résoudre cette macro.
A+++ Gary






Avatar
Himselff
haha désolé j'avais sauté cette ligne =)

Fred
"Nicolas B." wrote in message
news:#
C'était sous-entendu. La valeur de la UserForm doit être récupérée dans la
variable UB.


A+
--
Nicolas B.


Tu oublie la variante que Chaque Manager dois avoir des données
différentes, a la suite d'une entrée de code !

Fred
"Nicolas B." wrote in message
news:
Salut,

Si tu ne veux pas que l'utilisateur touche à la feuille de données,
mais seulement à une copie de cette feuille à laquelle on applique
le filtre, la macro suivante devrait te convenir.

Le tableau complet se trouve en A2:Dn de la feuille "Données" (en
A1:D1, les étiquettes et notmment en A1 "UB" et en col A les numéros
des utilisateurs). Dans cette feuille, il y a en F1 "UB", le nom de
l'étiquette de la colonne A.
La feuille "Interface" est vierge.


Sub Tata()
UB = 1 'Numéro de l'utilisateur récupéré dans ta UserForm
Sheets("Interface").Cells.Clear
With Sheets("Données")
.Range("F2") = UB
.Range("A1:D999").AdvancedFilter xlFilterCopy, .Range("F1:F2"),
Sheets("Interface").Range("A1:C1")
End With
End Sub


A+
--
Nicolas B.


Bonjour à tous,

J'ai un dilemme avec une création de macro (suis encore un
peu novice) : je souhaiterais créer une macro qui filtre
des données selon un critère a choix. Je m'explique : j'ai
dans une feuille de données des états de compte pour
plusieurs unités budgétaires.

Mon idée est d'envoyer le fichier global à chaque
responsable d'unité. Le responsable d'unité clique sur un
bouton. Il introduit le numéro de son UB dans la boîte de
dialogue et la macro affiche les données correspondant à
son unité. Je remercie d'avance toute personne qui
pourrait m'aider à résoudre cette macro.
A+++ Gary










Avatar
Gary
Salut Nicolas,

Merci pour ton aide. Je suis un peu perdu la. Tu peux me
dire comment créer une UserForm et où je dois la mettre?

Je ne comprend pas ce que tu veux me dire "Dans cette
feuille, il y a en F1 "UB", le nom de l'étiquette de la
colonne"

Sub Tata () : que signifie Tata?

Je suis vraiment pas doué, désolé.
A++


-----Message d'origine-----
Salut,

Si tu ne veux pas que l'utilisateur touche à la feuille
de données, mais

seulement à une copie de cette feuille à laquelle on
applique le filtre, la

macro suivante devrait te convenir.

Le tableau complet se trouve en A2:Dn de la
feuille "Données" (en A1:D1, les

étiquettes et notmment en A1 "UB" et en col A les
numéros des utilisateurs).

Dans cette feuille, il y a en F1 "UB", le nom de
l'étiquette de la colonne

A.
La feuille "Interface" est vierge.


Sub Tata()
UB = 1 'Numéro de l'utilisateur récupéré dans ta UserForm
Sheets("Interface").Cells.Clear
With Sheets("Données")
.Range("F2") = UB
.Range("A1:D999").AdvancedFilter xlFilterCopy, .Range
("F1:F2"),

Sheets("Interface").Range("A1:C1")
End With
End Sub


A+
--
Nicolas B.


Bonjour à tous,

J'ai un dilemme avec une création de macro (suis
encore un


peu novice) : je souhaiterais créer une macro qui
filtre


des données selon un critère a choix. Je m'explique :
j'ai


dans une feuille de données des états de compte pour
plusieurs unités budgétaires.

Mon idée est d'envoyer le fichier global à chaque
responsable d'unité. Le responsable d'unité clique sur
un


bouton. Il introduit le numéro de son UB dans la boîte
de


dialogue et la macro affiche les données correspondant
à


son unité. Je remercie d'avance toute personne qui
pourrait m'aider à résoudre cette macro.
A+++ Gary



.




Avatar
Nicolas B.
Salut,

En fait, tu as le choix :
Si tu ne veux demander à l'utilisateur que ce numéro, une simple inputbox
suffit. Il faut alors changer la ligne UB=1 par :
UB = inputbox("Votre numéro ?")

Mais si tu veux récupérer plus d'informations, tu peux les demander en même
temps en créant ta propre fenêtre avec plusieurs zones de texte (TextBox) :
Dans VBA, clique sur InsertionUserform.
A l'aide de la barre d'outils qui est apparue, crée une zone de texte et un
bouton (CommandButton).
Tu peux alors changer les propriétés de ces objets (cliquer sur
AffichageFenêtre Propriétés si les propriétés ne sont pas affichées).
Clique sur le TextBox et change son (Name) en tbUB. De même, clique sur la
UserForm et change son nom en ufDemandeUB. Change aussi le nom du bouton en
cbOK et son Caption (le texte affiché) en OK.
Voilà pour le design.

On passe ensuite au code.
Double clique sur le bouton OK. Il s'affiche alors un petit bout de code
(qui s'exécutera lorsque tu cliquera sur OK). Entre les deux lignes, écris :
ufDemandeUB.Hide

Retourne maintenant dans le code du module.
Remplace ceci :
Sub Tata()
UB = 1 'Numéro de l'utilisateur récupéré dans ta UserForm
...

Par ceci :
Sub Tata()
ufDemandeUB.show
UB = ufDemandeUB.tbUB
...


Tu peux alors exécuter la macro Tata.


A+
--
Nicolas B.


Salut Nicolas,

Merci pour ton aide. Je suis un peu perdu la. Tu peux me
dire comment créer une UserForm et où je dois la mettre?

Je ne comprend pas ce que tu veux me dire "Dans cette
feuille, il y a en F1 "UB", le nom de l'étiquette de la
colonne"

Sub Tata () : que signifie Tata?

Je suis vraiment pas doué, désolé.
A++


-----Message d'origine-----
Salut,

Si tu ne veux pas que l'utilisateur touche à la feuille de données,
mais seulement à une copie de cette feuille à laquelle on applique
le filtre, la macro suivante devrait te convenir.

Le tableau complet se trouve en A2:Dn de la
feuille "Données" (en A1:D1, les

étiquettes et notmment en A1 "UB" et en col A les
numéros des utilisateurs).

Dans cette feuille, il y a en F1 "UB", le nom de l'étiquette de la
colonne A.
La feuille "Interface" est vierge.


Sub Tata()
UB = 1 'Numéro de l'utilisateur récupéré dans ta UserForm
Sheets("Interface").Cells.Clear
With Sheets("Données")
.Range("F2") = UB
.Range("A1:D999").AdvancedFilter xlFilterCopy, .Range ("F1:F2"),
Sheets("Interface").Range("A1:C1")
End With
End Sub


A+
--
Nicolas B.


Bonjour à tous,

J'ai un dilemme avec une création de macro (suis
encore un


peu novice) : je souhaiterais créer une macro qui filtre
des données selon un critère a choix. Je m'explique : j'ai
dans une feuille de données des états de compte pour
plusieurs unités budgétaires.

Mon idée est d'envoyer le fichier global à chaque
responsable d'unité. Le responsable d'unité clique sur un
bouton. Il introduit le numéro de son UB dans la boîte de
dialogue et la macro affiche les données correspondant à
son unité. Je remercie d'avance toute personne qui
pourrait m'aider à résoudre cette macro.
A+++ Gary



.





Avatar
Gary
Salut Nicolas,

Super, je commence à comprendre. Un grand merci!

J'ai testé la macro : elle affiche la userform, je
introduit le no de l'UB, je fais OK et elle bug sur la
ligne: .Range("A1:D999").AdvancedFilter
xlFilterCopy, .Range ("F1:F2") .

J'ai le message suivant :

Erreure d'execution 1004
Zone d'extraction non définie

Quand je reviens sur la feuille "Données" le No de l'UB
que j'ai introduit dans la UserFome figure dans la
cellule F2.

Tu parles dans ton premier message qu'il y a en F1 "UB",
le nom de l'étiquette de la colonne A. Que veux-tu dire
par là? Je dois nommer la cellule UB ou je dois écrire UB
dans la cellule F1?

Peux-tu encore m'aider sur ces points.
Merci et A+
Gary


-----Message d'origine-----
Salut,

En fait, tu as le choix :
Si tu ne veux demander à l'utilisateur que ce numéro,
une simple inputbox

suffit. Il faut alors changer la ligne UB=1 par :
UB = inputbox("Votre numéro ?")

Mais si tu veux récupérer plus d'informations, tu peux
les demander en même

temps en créant ta propre fenêtre avec plusieurs zones
de texte (TextBox) :

Dans VBA, clique sur InsertionUserform.
A l'aide de la barre d'outils qui est apparue, crée une
zone de texte et un

bouton (CommandButton).
Tu peux alors changer les propriétés de ces objets
(cliquer sur

AffichageFenêtre Propriétés si les propriétés ne sont
pas affichées).

Clique sur le TextBox et change son (Name) en tbUB. De
même, clique sur la

UserForm et change son nom en ufDemandeUB. Change aussi
le nom du bouton en

cbOK et son Caption (le texte affiché) en OK.
Voilà pour le design.

On passe ensuite au code.
Double clique sur le bouton OK. Il s'affiche alors un
petit bout de code

(qui s'exécutera lorsque tu cliquera sur OK). Entre les
deux lignes, écris :

ufDemandeUB.Hide

Retourne maintenant dans le code du module.
Remplace ceci :
Sub Tata()
UB = 1 'Numéro de l'utilisateur récupéré dans ta UserForm
....

Par ceci :
Sub Tata()
ufDemandeUB.show
UB = ufDemandeUB.tbUB
....


Tu peux alors exécuter la macro Tata.


A+
--
Nicolas B.


Salut Nicolas,

Merci pour ton aide. Je suis un peu perdu la. Tu peux
me


dire comment créer une UserForm et où je dois la
mettre?



Je ne comprend pas ce que tu veux me dire "Dans cette
feuille, il y a en F1 "UB", le nom de l'étiquette de la
colonne"

Sub Tata () : que signifie Tata?

Je suis vraiment pas doué, désolé.
A++


-----Message d'origine-----
Salut,

Si tu ne veux pas que l'utilisateur touche à la
feuille de données,



mais seulement à une copie de cette feuille à
laquelle on applique



le filtre, la macro suivante devrait te convenir.

Le tableau complet se trouve en A2:Dn de la
feuille "Données" (en A1:D1, les

étiquettes et notmment en A1 "UB" et en col A les
numéros des utilisateurs).

Dans cette feuille, il y a en F1 "UB", le nom de
l'étiquette de la



colonne A.
La feuille "Interface" est vierge.


Sub Tata()
UB = 1 'Numéro de l'utilisateur récupéré dans ta
UserForm



Sheets("Interface").Cells.Clear
With Sheets("Données")
.Range("F2") = UB
.Range("A1:D999").AdvancedFilter
xlFilterCopy, .Range ("F1:F2"),



Sheets("Interface").Range("A1:C1")
End With
End Sub


A+
--
Nicolas B.


Bonjour à tous,

J'ai un dilemme avec une création de macro (suis
encore un


peu novice) : je souhaiterais créer une macro qui
filtre




des données selon un critère a choix. Je
m'explique : j'ai




dans une feuille de données des états de compte pour
plusieurs unités budgétaires.

Mon idée est d'envoyer le fichier global à chaque
responsable d'unité. Le responsable d'unité clique
sur un




bouton. Il introduit le numéro de son UB dans la
boîte de




dialogue et la macro affiche les données
correspondant à




son unité. Je remercie d'avance toute personne qui
pourrait m'aider à résoudre cette macro.
A+++ Gary



.




.






Avatar
Nicolas B.
Salut,

Tu parles dans ton premier message qu'il y a en F1 "UB",
le nom de l'étiquette de la colonne A. Que veux-tu dire
par là? Je dois nommer la cellule UB ou je dois écrire UB
dans la cellule F1?


Il faut que en F1, il y ait le même contenu que dans la cellule d'étiquette
(dans la première ligne) des codes des utilisateurs.
Par exemple, si tu as en colonne A tes numéros de UB, tu marque en cellule
A1 la même chose que en F1, par exemple "UB".


A+
--
Nicolas B.


Salut Nicolas,

Super, je commence à comprendre. Un grand merci!

J'ai testé la macro : elle affiche la userform, je
introduit le no de l'UB, je fais OK et elle bug sur la
ligne: .Range("A1:D999").AdvancedFilter
xlFilterCopy, .Range ("F1:F2") .

J'ai le message suivant :

Erreure d'execution 1004
Zone d'extraction non définie

Quand je reviens sur la feuille "Données" le No de l'UB
que j'ai introduit dans la UserFome figure dans la
cellule F2.

Tu parles dans ton premier message qu'il y a en F1 "UB",
le nom de l'étiquette de la colonne A. Que veux-tu dire
par là? Je dois nommer la cellule UB ou je dois écrire UB
dans la cellule F1?

Peux-tu encore m'aider sur ces points.
Merci et A+
Gary


-----Message d'origine-----
Salut,

En fait, tu as le choix :
Si tu ne veux demander à l'utilisateur que ce numéro,
une simple inputbox

suffit. Il faut alors changer la ligne UB=1 par :
UB = inputbox("Votre numéro ?")

Mais si tu veux récupérer plus d'informations, tu peux les demander
en même temps en créant ta propre fenêtre avec plusieurs zones
de texte (TextBox) :

Dans VBA, clique sur InsertionUserform.
A l'aide de la barre d'outils qui est apparue, crée une zone de
texte et un bouton (CommandButton).
Tu peux alors changer les propriétés de ces objets (cliquer sur
AffichageFenêtre Propriétés si les propriétés ne sont pas
affichées). Clique sur le TextBox et change son (Name) en tbUB. De
même, clique sur la UserForm et change son nom en ufDemandeUB.
Change aussi le nom du bouton en cbOK et son Caption (le texte
affiché) en OK.
Voilà pour le design.

On passe ensuite au code.
Double clique sur le bouton OK. Il s'affiche alors un petit bout de
code (qui s'exécutera lorsque tu cliquera sur OK). Entre les deux
lignes, écris : ufDemandeUB.Hide

Retourne maintenant dans le code du module.
Remplace ceci :
Sub Tata()
UB = 1 'Numéro de l'utilisateur récupéré dans ta UserForm
....

Par ceci :
Sub Tata()
ufDemandeUB.show
UB = ufDemandeUB.tbUB
....


Tu peux alors exécuter la macro Tata.


A+
--
Nicolas B.