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

Filtre élaboré "contient" sur colonne nommée

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 !

sandra95

XLDnaute Nouveau
Bonjour,

J'ai besoin d'aide pour arranger mon filtre élaboré réalisé en VBA.
Je lance un userform forme.
Ma combobox1 me permet de choisir la colonne a filtrer (retranscrite en cellule G2):
Sheets("BASE CLIENTSV2").Range("G2").Value = ComboBox1
Mon textbox1 me permet de choisir ce que je cherche dans la colonne en question (retranscrit en cellule G3).
Sheets("BASE CLIENTSV2").Range("G3").Value = TextBox1

Le résultat de mon filtre fonctionne selon les critères choisis mais uniquement interprété en "est égal" ou "commence par".
Je cherche à lancer ce même filtre en "contient".
Pouvez-vous m'aider?
Je vous transmets le fichier pour comprendre.

Merci d'avance.
 

Pièces jointes

Bonjour sandra95, chris, le forum,

Il n'y a vraiment pas besoin d'UserForm :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [H1,J1]) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
If Me.FilterMode Then Me.ShowAllData 'RAZ
If [H1] = "" Or [J1] = "" Then Exit Sub
With [A1].CurrentRegion 'à adapter éventuellement
  [K2] = "=SEARCH(J$1," & .Rows(1).Find([H1], , xlValues, xlWhole)(2).Address(0, 0) & ")"
  .AdvancedFilter xlFilterInPlace, [K1:K2]
End With
[K2] = ""
End Sub
Fichier joint.

Mais apparemment les réponses qu'on vous donne sur XLD ne vous intéressent guère :

https://www.excel-downloads.com/thr...une-cellule-contenant-deja-une-donnee.232575/

Bonne journée.
 

Pièces jointes

Re,

On peut filtrer une colonne de dates en utilisant cette fonction personnalisée :
Code:
Function TXT$(c As Range, form$)
TXT = Format(c, form)
End Function
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [I1,K1]) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
If Me.FilterMode Then Me.ShowAllData 'RAZ
If [I1] = "" Or [K1] = "" Then Exit Sub
With [A1].CurrentRegion 'à adapter éventuellement
  With .Rows(1).Find([I1], , xlValues, xlWhole)(2)
    [L2] = "=SEARCH(K$1,TXT(" & .Address(0, 0) & ",""" & .NumberFormat & """))"
  End With
  .AdvancedFilter xlFilterInPlace, [L1:L2]
End With
[L2] = ""
End Sub
Les colonnes de nombres doivent être formatées : ID au format "0", CP au format "00000".

Fichier (2).

A+
 

Pièces jointes

Bonjour Chris, Bonjour Job75,

Merci pour vos réponses (qui m'interessent énormément Job75!!)
Je tenterai les propositions ce soir, en rentrant du travail, et ne manquerai pas de vous dire si ça fonctionne.

Bonne journée à vous.
 
Bonsoir,

J'ai un peu remanié mon fichier avec une sélection multicritères.
textbox1=*Nom*
textbox2=*rue*
textbox3=code postal
textbox4=*ville*

Job75, je n'arrive pas à comprendre et à réintégrer, dans mon Userform, tes conseils concernant le format (un userform m'est indispensable pour le projet final).
Dans mes critères actuels, il ne me reste plus qu'à pouvoir avoir , au niveau du code postal (texbox3), la possibilité d'indiquer soit le code postal entier, soit le département (donc les 2 premiers chiffres).

Merci de votre aide.
 

Pièces jointes

Bonjour sandra95, le forum,

Mon code précédent utilise le critère "contient".

Si l'on veut utiliser le critère "commence par" faire suivre le texte en K1 d'un astérisque :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [I1,K1]) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
If Me.FilterMode Then Me.ShowAllData 'RAZ
If [I1] = "" Or [K1] = "" Then Exit Sub
With [A1].CurrentRegion 'à adapter éventuellement
  With .Rows(1).Find([I1], , xlValues, xlWhole)(2)
    If Right([K1], 1) = "*" Then
      [L2] = "=K$1=LEFT(TXT(" & .Address(0, 0) & ",""" & .NumberFormat & """),LEN(K$1)-1)&""*"""
    Else
      [L2] = "=SEARCH(K$1,TXT(" & .Address(0, 0) & ",""" & .NumberFormat & """))"
    End If
  End With
  .AdvancedFilter xlFilterInPlace, [L1:L2]
End With
[L2] = ""
End Sub
La cellule K1 est bien sûr au format Texte.

Fichier (3).

Bonne journée.
 

Pièces jointes

Re,

Pendant qu'on y est introduisons le critère "égal à" :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [I1,K1]) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
If Me.FilterMode Then Me.ShowAllData 'RAZ
If [I1] = "" Or [K1] = "" Then Exit Sub
With [A1].CurrentRegion 'à adapter éventuellement
  With .Rows(1).Find([I1], , xlValues, xlWhole)(2)
    If Right([K1], 1) = "=" Then
      [L2] = "=K$1=TXT(" & .Address(0, 0) & ",""" & .NumberFormat & """)&""="""
    ElseIf Right([K1], 1) = "*" Then
      [L2] = "=K$1=LEFT(TXT(" & .Address(0, 0) & ",""" & .NumberFormat & """),LEN(K$1)-1)&""*"""
    Else
      [L2] = "=SEARCH(K$1,TXT(" & .Address(0, 0) & ",""" & .NumberFormat & """))"
    End If
  End With
  .AdvancedFilter xlFilterInPlace, [L1:L2]
End With
[L2] = ""
End Sub
Edit : j'ai modifié la fonction TXT, la colonne ID peut maintenant être au format "Standard" :
Code:
Function TXT$(c As Range, form$)
If form = "General" Then TXT = c Else TXT = Format(c, form)
End Function
Fichier (4).

A+
 

Pièces jointes

Dernière édition:
Bonjour,

Je suis désolée job75, je ne comprends pas... 🙁
Je ne suis pas une super crack en langage macro...
Pouvez vous me traduire vos lignes pour que je puisse retranscrire dans mon fichier.
Le problème actuel, dans mon fichier est la recherche par département d'après la colonne code postal.
Merci d'avance
 
Re,

J'ai pourtant été clair : pour faire une recherche par département entrer "CP" en I1 et en K1 entrer les 2 chiffres suivis d'un astérisque.

Relisez tous mes posts et les explications dans les fichiers, il faut que vous les compreniez tous.

A+
 
Re,

Concernant votre UserForm je m'y intéresserai quand vous nous aurez montré ce qu'il peut faire d'utile.

Pour l'instant, sur vos exemples, il ne peut servir qu'à filtrer et comme je l'ai dit il n'a alors aucun intérêt.

Je crains que vous ne fassiez comme les toutous : quand ils ont un os à ronger, pas moyen de leur retirer.

Bonne fin de soirée.
 
- 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

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
837
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…