Bonjour,
Je me trouve dans une situation embarrassante où je ne trouve pas d'issue malgré mes nombreux essais et recherches.
Précision : ça fait 15 ans que je n'ai pas touché à la prog donc je tâtonne. Pardonnez mon ignorance.
Voici ce que j'ai :
Un fichier avec une liste d'huiles essentielles pour l'acné dans mon exemple en colonne A, l'huile concernée en colonne B et les contre-indications en colonne C.
Par une macro nommée "Sauf", en cliquant sur le bouton j'obtiens mon formulaire pour filtrer automatiquement sur 2 critères qui marche nickel.
Et J'ai un autre bouton où se trouve la macro "réinitialiser".
Mon but : quand je clique sur le bouton Contre-indications (macro "Sauf"), j'obtienne l'affichage en dessous les filtres appliqués pour informations.
Mais pour que ça s'affiche, il me faut aller dans la macro "ShowAutoFilterCriteria" et faire F5 pour qu'on me demande la cellule que je veux, je rentrer. Je n'arrive pas à lui imposer directement la cellule où ça doit s'afficher.
J'ai tenté
set outrng = Range("B3")
avec ou sans dollar ça change rien, j'ai même tenté cells("b3") etc rien à faire.
Y'a un détail qui m'échappe.
Pour réinitialiser, ça marche nickel mais j'aimerais qu'il vide le contenu de B3 quand il réinitialise et il vide avec ce que j'ai testé mais du coup ça ne marche pas car il me faut refaire F5 dans la macro "ShowAutoFilterCriteria".
Voici le fichier de mon exemple pour que vous voyez par vous-mêmes.
Je vous mets aussi les codes ici :
macro "sauf" (contre-indications)
Le code d'affichage en B3 m'affiche
"<>*epi* And <>*ulc*" par exempe pour les filtres ne contenant pas "epi" ET "ulc" :
Un grand merci par avance de votre aide.
Bonne soirée.
Je me trouve dans une situation embarrassante où je ne trouve pas d'issue malgré mes nombreux essais et recherches.
Précision : ça fait 15 ans que je n'ai pas touché à la prog donc je tâtonne.
Voici ce que j'ai :
Un fichier avec une liste d'huiles essentielles pour l'acné dans mon exemple en colonne A, l'huile concernée en colonne B et les contre-indications en colonne C.
Par une macro nommée "Sauf", en cliquant sur le bouton j'obtiens mon formulaire pour filtrer automatiquement sur 2 critères qui marche nickel.
Et J'ai un autre bouton où se trouve la macro "réinitialiser".
Mon but : quand je clique sur le bouton Contre-indications (macro "Sauf"), j'obtienne l'affichage en dessous les filtres appliqués pour informations.
Mais pour que ça s'affiche, il me faut aller dans la macro "ShowAutoFilterCriteria" et faire F5 pour qu'on me demande la cellule que je veux, je rentrer. Je n'arrive pas à lui imposer directement la cellule où ça doit s'afficher.
J'ai tenté
set outrng = Range("B3")
avec ou sans dollar ça change rien, j'ai même tenté cells("b3") etc rien à faire.
Y'a un détail qui m'échappe.
Pour réinitialiser, ça marche nickel mais j'aimerais qu'il vide le contenu de B3 quand il réinitialise et il vide avec ce que j'ai testé mais du coup ça ne marche pas car il me faut refaire F5 dans la macro "ShowAutoFilterCriteria".
Voici le fichier de mon exemple pour que vous voyez par vous-mêmes.
Je vous mets aussi les codes ici :
macro "sauf" (contre-indications)
VB:
Sub Sauf()
' Touche de raccourci du clavier: Ctrl+q
'variables
Dim plage As Range
Dim filtre As String
'filtre sur plage sur feuille 1, tableau de la A1 à C5
Set plage = Sheets(1).Cells(4, 3).CurrentRegion
'saisie
filtre1 = InputBox("Texte à filtrer 1 :", "Filtre1")
filtre2 = InputBox("Texte à filtrer 2 :", "Filtre2")
'réinitialisation des filtres
plage.AutoFilter
'application de la macro
plage.AutoFilter Field:=3, Criteria1:="<>" & "*" & filtre1 & "*", Operator:=xlAnd, Criteria2:="<>" & "*" & filtre2 & "*"
End Sub
Le code d'affichage en B3 m'affiche
"<>*epi* And <>*ulc*" par exempe pour les filtres ne contenant pas "epi" ET "ulc" :
VB:
Sub ShowAutoFilterCriteria()
Dim xFilter As AutoFilter
Dim TargetFilter As Filter
Dim TargetField As String
Dim xOut As String
Dim OutRng As Range
If ActiveSheet.AutoFilterMode = False Then
Application.StatusBar = False
Exit Sub
End If
xTitleId = "KutoolsforExcel"
'J'aimerais déclarer la cellule où afficher directement sans avoir à taper F5 dans la macro pour l'activer ! mais impossible,
'Set OutRng = Range("C3") ne fonctionne pas et je n'ai rien trouvé comme solution...
Set OutRng = Range("b3")
'Set OutRng = Application.Selection
'Set OutRng = Application.InputBox("Cell", xTitleId, OutRng.Address, Type:=8)
Set xFilter = ActiveSheet.AutoFilter
For i = 1 To xFilter.Filters.Count
TargetField = xFilter.Range.Cells(1, i).Value
Set TargetFilter = xFilter.Filters(i)
If TargetFilter.On Then
On Error GoTo OutNext
xOut = xOut & TargetField & TargetFilter.Criteria1
'est-ce nécessaire vu que je n'ai que xlAnd ?
Select Case TargetFilter.Operator
Case xlAnd
xOut = xOut & " And " & TargetField & TargetFilter.Criteria2
End Select
End If
Next
OutRng.Value = xOut
OutNext:
xOut = xOut & TargetField & "= Multiple Filters"
ErrorHandler:
'Problème : le résultat s'affiche que si je fais F5 dans la macro...
Resume Next
End Sub
VB:
Sub Réinitialiser()
With Sheets("Feuil1")
If .AutoFilterMode And .FilterMode Then .ShowAllData
End With
'End Sub
'Sub Réinitialiser_Filtres()
'
' j'ai tenté de vider la cellule lors de la réinitialisation mais ça vidait tout et la macro ne fonctionne plus :
' Réinitialiser_Filtres Macro
'Cells(3, 3).Clear
'Selection.AutoFilter
End Sub
Un grand merci par avance de votre aide.
Bonne soirée.
Pièces jointes
Dernière édition: