Critère de trie lié à une cellule, MacroExcel
Résolu/Fermé
BROCH002
Messages postés
10
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
2 janvier 2012
-
28 déc. 2011 à 09:13
BROCH002 Messages postés 10 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 2 janvier 2012 - 2 janv. 2012 à 07:58
BROCH002 Messages postés 10 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 2 janvier 2012 - 2 janv. 2012 à 07:58
A voir également:
- Critère de trie lié à une cellule, MacroExcel
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Verrouiller cellule excel - Guide
- Comment colorer une cellule excel en fonction du contenu d'une autre cellule ✓ - Forum Excel
- Diviser une cellule excel en deux horizontalement ✓ - Forum Excel
5 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
28 déc. 2011 à 11:03
28 déc. 2011 à 11:03
bonjour
pas trop compris ta deùande mais....
si tu veux fitrer sur par exemple "bleu" ou "vert" ou autre coluleur"
remarques:
il ne sert à rien d'utiliser display.alerts dans ce cas; d'autre part si tu l'utilises il faut ABSOLUMENT le fermer par False car sinon toutes les autre macros resteront displayalerts= true d'où sérieux problèmes à venir
j'ai supposé que B2 était en feuille 2 mais pourquoi écrire une formule (tu pourrais alors l'écrire à la main sans macro puisque tu applelles toujours la m^me cellule)
pas trop compris ta deùande mais....
si tu veux fitrer sur par exemple "bleu" ou "vert" ou autre coluleur"
Sub filtrer_svt_critere(critère) Application.ScreenUpdating = False Sheets("Feuil1").Range("$A$5:$H$50000").AutoFilter Field:=1, Criteria1:= _ critère, Operator:=xlAnd With Sheets("Feuil2") .Range("A2") = critère .Range("B2").FormulaR1C1 = "=Feuil1!R[-1]C[2]" .Activate End Sub Sub tester() filtrer_svt_critere "VERT" End Sub
remarques:
il ne sert à rien d'utiliser display.alerts dans ce cas; d'autre part si tu l'utilises il faut ABSOLUMENT le fermer par False car sinon toutes les autre macros resteront displayalerts= true d'où sérieux problèmes à venir
j'ai supposé que B2 était en feuille 2 mais pourquoi écrire une formule (tu pourrais alors l'écrire à la main sans macro puisque tu applelles toujours la m^me cellule)
BROCH002
Messages postés
10
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
2 janvier 2012
28 déc. 2011 à 17:23
28 déc. 2011 à 17:23
Bonjour,
Le problème viens du fait que A1 est la première cellule et que j'en ai 2000 autres, Dernière actuelle A2132.
Ce que je souhaiterais c'est que la macro face référence au contenu de la cellule et que si il change, la macro s'adapte pour le trie.
dans mon exemple c'est une couleur (Bleu) ,si je change la cellule A1 en Vert, la macro modifie "bleu" en "Vert".
bonne soirée
Le problème viens du fait que A1 est la première cellule et que j'en ai 2000 autres, Dernière actuelle A2132.
Ce que je souhaiterais c'est que la macro face référence au contenu de la cellule et que si il change, la macro s'adapte pour le trie.
dans mon exemple c'est une couleur (Bleu) ,si je change la cellule A1 en Vert, la macro modifie "bleu" en "Vert".
bonne soirée
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
28 déc. 2011 à 19:04
28 déc. 2011 à 19:04
attends! "vert", c'est un texte ou la couleur de la cellule ?
A1 est la seule qui déclenche le filtre?
A1 est la seule qui déclenche le filtre?
BROCH002
Messages postés
10
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
2 janvier 2012
Modifié par BROCH002 le 28/12/2011 à 20:53
Modifié par BROCH002 le 28/12/2011 à 20:53
J'ai mis des couleurs comme j'aurais pu mettre une réf y, ce n'est pas une couleur.
Il y a actuellement 2132 références, de A1 à A2132 dont certaines changes tous les jours, par réception de mise à jour, ces références sont triées par des macros remplissant une feuille.
Autant de macros que de références. Si la cellule A1 change, actuellement je change la macro1. Ce que je souhaiterais c'est qu'elle se modifie seule, en liant le code du trie de la macro à la valeur de la cellule. Il peut y avoir 15 à 20 références qui changent journellement d'où ma recherche d'automatisation.
Merci d'avance.
Il y a actuellement 2132 références, de A1 à A2132 dont certaines changes tous les jours, par réception de mise à jour, ces références sont triées par des macros remplissant une feuille.
Autant de macros que de références. Si la cellule A1 change, actuellement je change la macro1. Ce que je souhaiterais c'est qu'elle se modifie seule, en liant le code du trie de la macro à la valeur de la cellule. Il peut y avoir 15 à 20 références qui changent journellement d'où ma recherche d'automatisation.
Merci d'avance.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
29 déc. 2011 à 11:04
29 déc. 2011 à 11:04
Bonjour vous 2,
Si j'ai bien compris (et j'en doute), la fonction de michel s'adapte parfaitement à votre souci. Suffit de changer la procédure d'appel de la fonction en y intégrant la valeur contenue en A1 comme critère :
Non? Ben alors j'ai pô compris...
Si j'ai bien compris (et j'en doute), la fonction de michel s'adapte parfaitement à votre souci. Suffit de changer la procédure d'appel de la fonction en y intégrant la valeur contenue en A1 comme critère :
Sub filtrer_svt_critere(critère) Application.ScreenUpdating = False Sheets("Feuil1").Range("$A$5:$H$50000").AutoFilter Field:=1, Criteria1:= _ critère, Operator:=xlAnd With Sheets("Feuil2") .Range("A2") = critère .Range("B2").FormulaR1C1 = "=Feuil1!R[-1]C[2]" .Activate End Sub Sub tester() Dim Crit As String Crit = Sheets("Feuil1").Range("A1") filtrer_svt_critere Crit End Sub
Non? Ben alors j'ai pô compris...
Bonjour,
j'ai fait le test,
En lançant la macro "Tester", la cellule A2 de la feuil2 affiche l'intitulé de la colonne A de la feuil1 (Couleur). Le critère de trie de la colonne A de la feuil1 est l'intitulé de cette colonne (Couleur). Le trie en feuil2 indiquant 0.
Ce que je souhaite, c'est que ce soit la cellule A1 de la feuil3 qui s'affiche en A2 de la Feuil2 et comme critère de trie en colonne A de la feuil1.
Lorsque je change la macro "Tester" de cette manière:
Sub tester()
Dim Crit As String
Crit = Sheets("Feuil3").Range("A1")
filtrer_svt_critere Crit
End Sub
Cela bug.
c'est pas très claire, je voudrais bien vous faire parvenir un fichier (fluet), mais je ne sais pas comment le joindre à ce forum.
cordialement et bonnes fêtes.
j'ai fait le test,
En lançant la macro "Tester", la cellule A2 de la feuil2 affiche l'intitulé de la colonne A de la feuil1 (Couleur). Le critère de trie de la colonne A de la feuil1 est l'intitulé de cette colonne (Couleur). Le trie en feuil2 indiquant 0.
Ce que je souhaite, c'est que ce soit la cellule A1 de la feuil3 qui s'affiche en A2 de la Feuil2 et comme critère de trie en colonne A de la feuil1.
Lorsque je change la macro "Tester" de cette manière:
Sub tester()
Dim Crit As String
Crit = Sheets("Feuil3").Range("A1")
filtrer_svt_critere Crit
End Sub
Cela bug.
c'est pas très claire, je voudrais bien vous faire parvenir un fichier (fluet), mais je ne sais pas comment le joindre à ce forum.
cordialement et bonnes fêtes.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
29 déc. 2011 à 12:06
29 déc. 2011 à 12:06
Cela bug. Manque cruel de précision...
A tenter :
A tenter :
Sub tester() Dim Crit As String With Sheets("Feuil3") Crit = .Range("A1") End With filtrer_svt_critere Crit End Sub
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
29 déc. 2011 à 12:15
29 déc. 2011 à 12:15
c'est que ce soit la cellule A1 de la feuil3
!!!!!!
C'est nouveau ca!
Il faut bien te rendre compte que ce que tu demandes n'est pas forcément facile et que personne ne veut passer parfois plusieurs heures à essayer de résoudre un problème bénévolement pour se voir dire après coup « non vous n'avez pas compris mon problème (rarement, je n'ai pas bien expliqué) il faut en plus que.... »
!!!!!!
C'est nouveau ca!
Il faut bien te rendre compte que ce que tu demandes n'est pas forcément facile et que personne ne veut passer parfois plusieurs heures à essayer de résoudre un problème bénévolement pour se voir dire après coup « non vous n'avez pas compris mon problème (rarement, je n'ai pas bien expliqué) il faut en plus que.... »
Bonjour,
Merci pijacu, vous m'avez bien aidé, dans le fichier test, cela fonctionne.
je vais tenter de l'appliquer à mon fichier de 2000 références.
Bonne fêtes à tous les deux et merci de votre aide.
Broch002
Merci pijacu, vous m'avez bien aidé, dans le fichier test, cela fonctionne.
je vais tenter de l'appliquer à mon fichier de 2000 références.
Bonne fêtes à tous les deux et merci de votre aide.
Broch002
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
30 déc. 2011 à 08:42
30 déc. 2011 à 08:42
De rien.
Bonne fêtes à toi aussi.
A+
Bonne fêtes à toi aussi.
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour, Pijacu.
Comment demander au critère de trie d'être" différent de Bleu (" <>bleu") au lieu de ("Bleu"). J'ai cherché avec le code de trie classique avec les <>, et il ressort comme erreur (police devenant rouge).
Application.ScreenUpdating = False
Sheets("Détail Commande").Range("$C$5:$O$30000").AutoFilter Field:=5, Criteria1:= _
<>critère, Operator:=xlAnd
Mes codes classiques
trie pour "bleu"
Sheets("Feuil1").Range("$A$5:$H$50000").AutoFilter Field:=1, Criteria1:= _
"BLEU", Operator:=xlAnd.
trie pour différent de bleu.
Sheets("Feuil1").Range("$A$5:$H$50000").AutoFilter Field:=1, Criteria1:= _
"<>BLEU", Operator:=xlAnd
Comment puis-je modifier ce critère.
Merci d'avance.
Broch002.
Comment demander au critère de trie d'être" différent de Bleu (" <>bleu") au lieu de ("Bleu"). J'ai cherché avec le code de trie classique avec les <>, et il ressort comme erreur (police devenant rouge).
Application.ScreenUpdating = False
Sheets("Détail Commande").Range("$C$5:$O$30000").AutoFilter Field:=5, Criteria1:= _
<>critère, Operator:=xlAnd
Mes codes classiques
trie pour "bleu"
Sheets("Feuil1").Range("$A$5:$H$50000").AutoFilter Field:=1, Criteria1:= _
"BLEU", Operator:=xlAnd.
trie pour différent de bleu.
Sheets("Feuil1").Range("$A$5:$H$50000").AutoFilter Field:=1, Criteria1:= _
"<>BLEU", Operator:=xlAnd
Comment puis-je modifier ce critère.
Merci d'avance.
Broch002.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
30 déc. 2011 à 13:19
30 déc. 2011 à 13:19
Bonjour,
Avez vous essayé d'enregistrer cette procédure par l'enregistreur de macro?
Si oui, quel est le code donné,
Si non, essayez et revenez avec le code de l'enregistreur...
Avez vous essayé d'enregistrer cette procédure par l'enregistreur de macro?
Si oui, quel est le code donné,
Si non, essayez et revenez avec le code de l'enregistreur...
BROCH002
Messages postés
10
Date d'inscription
lundi 2 mars 2009
Statut
Membre
Dernière intervention
2 janvier 2012
2 janv. 2012 à 07:58
2 janv. 2012 à 07:58
Bonjour,
Voici la macro complète, enregistrer avec l'enregistreur.
Sub BLEU()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets("Feuil1").Select
ActiveSheet.Range("$A$5:$H$50000").AutoFilter Field:=2, Criteria1:= _
"<>BLEU", Operator:=xlAnd
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Delete
ActiveSheet.Range("$A$1:$H$3000").AutoFilter Field:=2
End Sub.
Ce que cette macro réalise, c'est une élimination de tout ce qui n'est pas "bleu" dans la Feuil1.
Dans l'ordre, je filtre par "différent de", je sélectionne toutes les lignes triées puis je les efface.
et j'annule le filtre pour n'avoir que le bleu.
Merci d votre aide.
Voici la macro complète, enregistrer avec l'enregistreur.
Sub BLEU()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets("Feuil1").Select
ActiveSheet.Range("$A$5:$H$50000").AutoFilter Field:=2, Criteria1:= _
"<>BLEU", Operator:=xlAnd
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Delete
ActiveSheet.Range("$A$1:$H$3000").AutoFilter Field:=2
End Sub.
Ce que cette macro réalise, c'est une élimination de tout ce qui n'est pas "bleu" dans la Feuil1.
Dans l'ordre, je filtre par "différent de", je sélectionne toutes les lignes triées puis je les efface.
et j'annule le filtre pour n'avoir que le bleu.
Merci d votre aide.