Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

utiliser une liste comme critere dans une macro

  • Initiateur de la discussion Initiateur de la discussion RICO@17
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

R

RICO@17

Guest
Bonjour,

A partir d'un fichier qui reprend une liste de personne avec leur nationalite (tab Raw Data) je voudrais faire une macro (tab layout) ou quand je selectionne une nationalite dans la liste puis je clique sur la macro cela actualise mon layout automatiquement.

Exemple: dans la tab layout je choisis FRA dans la liste et cela me donne tous les francais, si je choisis US cela me donne tous les americains.

Sub Macro1()
'
' Macro1 Macro
'
Sheets("Raw Data").Select
ActiveSheet.Range("$A$1:$E$23").AutoFilter Field:=3, Criteria1:="FRA"
Range("A2:E22").Select
Selection.Copy
Sheets("LAYOUT").Select
Range("A2").Select
ActiveSheet.Paste
End Sub

A la place de criteria1:="FRA" j'ai remplace FRA par K4 qui est la cellule ou se trouve la liste, mais quand dans K4 je selectionne US par exemple je me retrouve avec toute la liste et pas uniquement les americains.

La macro que j'ai jointe n'est pas complete mais je bute uniquement sur ce point, donc si quelqu'un a une idee 🙂
 

Pièces jointes

Re : utiliser une liste comme critere dans une macro

Bonjour,


Pourquoi ne pas essayer:
Code:
    Worksheets("LAYOUT").Range("A2:E22").Select
    Selection.Clear
    
    Sheets("Raw Data").Select
    ActiveSheet.Range("$A$1:$E$23").AutoFilter Field:=3, Criteria1:=Worksheets("LAYOUT").Cells(4, 11).Value
    Range("A2:E22").Select
    Selection.Copy
    Sheets("LAYOUT").Select
    Range("A2").Select
    ActiveSheet.Paste

Voir la pièce jointe.


Courage
Pyfux
 

Pièces jointes

Re : utiliser une liste comme critere dans une macro


Bonjour,
Voici une réponse similaire :
Sub Macro1()
'
' Macro1 Macro
Dim x As String
Sheets("LAYOUT").Select
'effacement des données préalablement rapatriées
Range(Cells(2, 1), Cells(2, 5).End(xlDown)).ClearContents
Range("A2").Select
'attribution de la valeur de K4 à la variable x
x = Range("K4").Value

Sheets("Raw Data").Select
ActiveSheet.Range("$A$1:$E$23").AutoFilter Field:=3, Criteria1:=x
Range("A2:E22").Select
Selection.Copy
Sheets("LAYOUT").Select
Range("A2").Select
ActiveSheet.Paste
End Sub

Bonne continuation.
 
Re : utiliser une liste comme critere dans une macro

Hello tout le monde,


Muarf, très pas beau les code enregistreur de macro avec les .select a gogo.

Voici une proposition ne faisant pas interférer les filtre car je trouve que sa ralenti énormément le code et souvent sa bug. Il fauda bien sure l'adapter a ton problème. Il y aurais également un moyen de faire en sorte que le nombre de colonne ne soit pas hard codé mais bon, je sais pas combien de colonne a ton vrai tableau. le fait de devoir écrire l'affectation des valeur pour chaque colonne n'est pas très contreniant.

Ma proposition te permet d'avoir un tableau dynamique, la macro s'adapte au nombre de ligne.

Code:
Sub test()


'cleantableau

maxTableauResult = Sheets("Feuil2").Range("A" & "65535").End(xlUp).Row + 1
Sheets("Feuil2").Range("A" & "2" & ":" & "B" & maxTableauResult).ClearContents

valeurcherchee = Range("F5").Value
maxlignetableau = Range("A1" & "65535").End(xlUp).Row

For I = 2 To maxlignetableau

If Sheets("Feuil1").Range("B" & I).Value = valeurcherchee Then

maxTableauResult1 = Sheets("Feuil2").Range("A" & "65535").End(xlUp).Row + 1

Sheets("Feuil2").Range("A" & maxTableauResult1).Value = Sheets("Feuil1").Range("A" & I).Value
Sheets("Feuil2").Range("B" & maxTableauResult1).Value = Sheets("Feuil1").Range("B" & I).Value

End If


Next

End Sub

ValeurRecherchée en F5. faudra que t'adapte les références au cellules.

Edit: le fichier utiliser pour test en pièce jointe.

Résultat en Feuil2

Edit: code en Feuil1. faut lancer la macro manuellement, pas fait de bouton :/

Meilleures salutations

Vorens
 

Pièces jointes

Dernière édition:
Re : utiliser une liste comme critere dans une macro

Salut Vorens,

Tu es un vrai développeur Excel...toi. Mais RICO@17 peut être pas.
Le but est de l'aider à comprendre son erreur et de se mettre à sa porté.
A priori il a oublié de purger les lignes affichant le résultat et de modifier le paramètre Criteria1 pour que son code généré par l'enregistreur de macros fonctionne.

Maintenant si il faut faire un concours de code le plus propre commence par mettre ton code dans un classe afin de résoudre d'une manière générique ce besoin d'extraction de données.

Courage,
Pyfux
 
Re : utiliser une liste comme critere dans une macro

Re,


Je suis tout sauf un développeur Excel 🙂 et le but est de lui présenter une jolie solution, si il veut la comprendre, on répond toujours au question après coup. (une boucle FOR c'est pas dur a comprendre)

Après ou on met le code, peut d'importance par rapport a sa question, il voulait un résultat, il est là...

Meilleures salutations
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
256
Réponses
10
Affichages
791
  • Question Question
Microsoft 365 Bug sur une macro
Réponses
6
Affichages
463
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…