Critère de trie lié à une cellule, MacroExcel
Résolu
BROCH002
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
BROCH002 Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
BROCH002 Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je n'ai aucune connaissance en VBA et je construis des macro via l'enregistreur ExceL
J'ai un fichier qui gère des références (2000) par des macros.
j'ai créé une macro de filtre pour traiter chaque référence, et l'ai dupliqué autant de foi qu'il y a de référence.
Existe-il un moyen de modifier ces macros automatiquement pour tout changement de référence. une liste de référence se trouvant dans la feuil3 servant de base de données, exemple:
3 feuilles.
Feuil1, Base de donnée.
Feuil2, Page d'affichage des données triées
Feuil3, liste des références.
Ce que j'essaye de réaliser c'est lié dans la macro, le critère de trie à la cellule correspondante "A1" dans la feuil3 (BLEU dans l'exemple". modifié en "Vert").
Sub MACRO1()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets("Feuil1").Range("$A$5:$H$50000").AutoFilter Field:=1, Criteria1:= _
"BLEU", Operator:=xlAnd
Sheets("Feuil2").Range("A2").FormulaR1C1 = "BLEU"
Range("B2").FormulaR1C1 = "=Feuil1!R[-1]C[2]"
With Range("B2")
.Value = .Value
End With
Sheets("Feuil2").Select
End Sub
Sub MACRO1()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets("Feuil1").Range("$A$5:$H$50000").AutoFilter Field:=1, Criteria1:= _
"VERT", Operator:=xlAnd
Sheets("Feuil2").Range("A2").FormulaR1C1 = "VERT"
Range("B2").FormulaR1C1 = "=Feuil1!R[-1]C[2]"
With Range("B2")
.Value = .Value
End With
Sheets("Feuil2").Select
End Sub
Les données de la feuil1 ce mettant a jour à chaque fois que je réceptionne la fichier à trier.
Est-ce un rêve utopique, ou est-ce réalisable?
Merci de votre collaboration, les références sont changeantes en permanence, vous comprenez mon problème.
Merci d'avance de votre aide.
je n'ai aucune connaissance en VBA et je construis des macro via l'enregistreur ExceL
J'ai un fichier qui gère des références (2000) par des macros.
j'ai créé une macro de filtre pour traiter chaque référence, et l'ai dupliqué autant de foi qu'il y a de référence.
Existe-il un moyen de modifier ces macros automatiquement pour tout changement de référence. une liste de référence se trouvant dans la feuil3 servant de base de données, exemple:
3 feuilles.
Feuil1, Base de donnée.
Feuil2, Page d'affichage des données triées
Feuil3, liste des références.
Ce que j'essaye de réaliser c'est lié dans la macro, le critère de trie à la cellule correspondante "A1" dans la feuil3 (BLEU dans l'exemple". modifié en "Vert").
Sub MACRO1()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets("Feuil1").Range("$A$5:$H$50000").AutoFilter Field:=1, Criteria1:= _
"BLEU", Operator:=xlAnd
Sheets("Feuil2").Range("A2").FormulaR1C1 = "BLEU"
Range("B2").FormulaR1C1 = "=Feuil1!R[-1]C[2]"
With Range("B2")
.Value = .Value
End With
Sheets("Feuil2").Select
End Sub
Sub MACRO1()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets("Feuil1").Range("$A$5:$H$50000").AutoFilter Field:=1, Criteria1:= _
"VERT", Operator:=xlAnd
Sheets("Feuil2").Range("A2").FormulaR1C1 = "VERT"
Range("B2").FormulaR1C1 = "=Feuil1!R[-1]C[2]"
With Range("B2")
.Value = .Value
End With
Sheets("Feuil2").Select
End Sub
Les données de la feuil1 ce mettant a jour à chaque fois que je réceptionne la fichier à trier.
Est-ce un rêve utopique, ou est-ce réalisable?
Merci de votre collaboration, les références sont changeantes en permanence, vous comprenez mon problème.
Merci d'avance de votre aide.
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
- Trier une colonne excel - Guide
- Proteger cellule excel - Guide
- Impossible de fusionner cellule excel ✓ - Forum Excel
5 réponses
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)
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
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.
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.
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
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.
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.