Trinitybarb
XLDnaute Junior
Bonjour,
J'ai un document que je veux simplifier pour une collègue car il comment toujours avec quelques lignes et mais termine avec des milliers de lignes.
Donc normalement on peut y aller avec des filtes mais j'aimerais quand saisissant par exemple le # du client dans un champs, que le tableau se filtre sur le client. Si je l'enlève, le filtre s'annule, si j'inscrit le # de client ainsi que la date du jour, il y a un filtre sur chaque.
J'ai trouvé cet exemple sur internet et j'ai essayé de l'adapter mais ça ne fonctionne pas, c'est pour cela que je demande votre aide.
Ce que la personne a fait, c'est exactement cela que je veux mais pour trois possibilités de filtre : colonne client, colonne Statut et colonne Date du jour. Je vous joins mon tableau pour vous aider. Votre aide serait grandement apprécié
Voici ce qu'il a fait :
Pour lancer automatiquement le filtre à chaque changement:
_ quand on entre une donnée (filtre activé, la colonne est filtrée);
_ quand on change la donnée (filtre relancé, la colonne est refiltrée);
_ quand on efface la donnée (filtre désactivé, la colonne n'est plus filtrée).
Recapitulation (du fil):
1) On filtre une colonne (exemple: M2:M999) à partir d'une cellule (qui n'est pas dans cette colonne, exemple: A14);
2) Le filtre de la colonne se met à jour automatiquement à chaque changement dans la cellule (lancement automatique).
Un bout de code à mettre dans la feuille avec:
H43 = la cellule dans laquelle on entre la donnée pour le filtre
L4= la colonne qui est filtrée
Le code :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Set Plage = Range("h43:h43")
Dim i
i = Range("H43:h43")
If i <> "" Then
ActiveSheet.Unprotect
Range("L4").AutoFilter Field:=12, Criteria1:="=" & Range("H43").Value
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
ActiveSheet.EnableSelection = xlUnlockedCells
Range("A2").Select
Else
ActiveSheet.Unprotect
Selection.AutoFilter Field:=12
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
ActiveSheet.EnableSelection = xlUnlockedCells
Range("H43:h43").Select
Selection.ClearContents
Range("A2").Select
End If
End Sub
J'ai un document que je veux simplifier pour une collègue car il comment toujours avec quelques lignes et mais termine avec des milliers de lignes.
Donc normalement on peut y aller avec des filtes mais j'aimerais quand saisissant par exemple le # du client dans un champs, que le tableau se filtre sur le client. Si je l'enlève, le filtre s'annule, si j'inscrit le # de client ainsi que la date du jour, il y a un filtre sur chaque.
J'ai trouvé cet exemple sur internet et j'ai essayé de l'adapter mais ça ne fonctionne pas, c'est pour cela que je demande votre aide.
Ce que la personne a fait, c'est exactement cela que je veux mais pour trois possibilités de filtre : colonne client, colonne Statut et colonne Date du jour. Je vous joins mon tableau pour vous aider. Votre aide serait grandement apprécié
Voici ce qu'il a fait :
Pour lancer automatiquement le filtre à chaque changement:
_ quand on entre une donnée (filtre activé, la colonne est filtrée);
_ quand on change la donnée (filtre relancé, la colonne est refiltrée);
_ quand on efface la donnée (filtre désactivé, la colonne n'est plus filtrée).
Recapitulation (du fil):
1) On filtre une colonne (exemple: M2:M999) à partir d'une cellule (qui n'est pas dans cette colonne, exemple: A14);
2) Le filtre de la colonne se met à jour automatiquement à chaque changement dans la cellule (lancement automatique).
Un bout de code à mettre dans la feuille avec:
H43 = la cellule dans laquelle on entre la donnée pour le filtre
L4= la colonne qui est filtrée
Le code :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Set Plage = Range("h43:h43")
Dim i
i = Range("H43:h43")
If i <> "" Then
ActiveSheet.Unprotect
Range("L4").AutoFilter Field:=12, Criteria1:="=" & Range("H43").Value
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
ActiveSheet.EnableSelection = xlUnlockedCells
Range("A2").Select
Else
ActiveSheet.Unprotect
Selection.AutoFilter Field:=12
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
ActiveSheet.EnableSelection = xlUnlockedCells
Range("H43:h43").Select
Selection.ClearContents
Range("A2").Select
End If
End Sub