Bonjour
Je sais pas si je suis assez clair...
il me manque bien quelques éléments mais on va faire sans.
j'utilise un classeur Excel comme base de données de chaînes de caractères
cette base de données, je suppose que tu la nommes "données"
et que la première ligne est une ligne de titres de rubriques.
j'aimerais via un code afficher celles qui contiennent une portion de chaîne donnée
tu définis une zone que tu nommes "Criteres"
la première ligne contient le titre de chaque colonne de sélection
et il y a autant de lignes que tu veux faire de sélections simultanées.
peut importe son emplacement dans la chaîne mère
pour cela il suffit de précéder et suivre ton critère par "*" : ex "*choix*"
Je considère que tu affiches les résultats sur une autre feuille
ou un autre colonne et tu nommes "resultat" la première cellule à afficher.
Si cette mise en place est réalisée, la ligne de code suivante devrait suffire pour obtenir le résultat.
Range("données").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("Criteres"), _
CopyToRange:=Range("resultat"), Unique:=False
le code est édité sur 4 lignes pour la lisibilité des fonctions.
Si tu mets les critères sur la même feuille que les résultats,
il est facile de changer ta sélection et de voir le résultat.
Si tu mets ton code dans
Private Sub Worksheet_Change(ByVal sel As Range)
If Not Application.Intersect(sel, Range("Criteres")) Is Nothing Then
Worksheets("Feuil1").Range("données").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("Criteres"), _
CopyToRange:=Range("resultat"), Unique:=False
End If
End Sub
tu peux l'exécuter automatiquement au changement de critère.
tu remplaces "Feuil1" par le nom de ta feuille de données.
Merci de nous tenir au courant.
toujours zen