Problème VBA Excel 2007

Résolu
dgigie -  
 dgigie -
Bonjour,

Me débrouillant pas trop mal avec excel, formules ect..., je me lance dans le VBA...

J'ai un fichier avec une des colonnes (B) que je souhaite filtrer, de (B6 à B1500) suivant le critère que j'inscris dans une cellule (B4).

Jusqu'à maintenant j'ai réussis en piochant deci dela à obtenir le résultat escompté, c'est à dire que lorsque j'inscris mon critère dans la cellule B4 le filtre fonctionne parfaitement mais lorsque la cellule B4 est vide toutes les lignes possédant des critères disparaissent aussi (logique...).

Je souhaiterais donc que lorsque B4 est vide, toutes les lignes apparaissent.

Ci dessous le code que j'ai actuellement.

Private Sub Worksheet_Activate()

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Selection.AutoFilter Field:=2, Criteria1:="=" & Range("B4").Value, Operator:=xlAnd
End Sub

Merci pour votre aide.



A voir également:

4 réponses

lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour,
Tu n'est pas dans le bon événement.
Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Count > 1 Then Exit Sub 
    If Not Intersect(Target, [B4]) Is Nothing Then 
        If [B4] <> "" Then 
            Selection.AutoFilter Field:=2, Criteria1:="=" & [B4] 
        Else 
            Selection.AutoFilter 
        End If 
    End If 
End Sub

A+
Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
1
dgigie
 
Merci beaucoup à toi,
je viens de le tester et effectivement quand la case B4 est vide le filtre s'annule, mais quand je mets de nouveau un critère, les lignes 5 et 6 disparaissent ainsi que tous les filtres et tout en filtrant correctement les données... Je coince...
Dur les début en VBA, j'ai l'impression de me mettre au Mandarin... :).
0
dgigie
 
Suite de mon commentaire.

En modifiant ce que tu m'as donné cela fonctionne, en mettant un critère en B4 le filtre fait son boulot. Si je supprime le critère en B4 le tableau reste tel quel il me suffit de lancer une macro pour réinitialiser le filtre manuellement.
Je n'ai pas encore trouvé la solution pour qu'il le fasse de lui même sans toucher à la structure du tableau.

Ci dessous ta solution que j'ai modifié:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, [B4]) Is Nothing Then
If [B4] <> "" Then
Selection.AutoFilter Field:=2, Criteria1:="=" & [B4]

End If
End If

End Sub

Encore merci.
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Sans enlever le filtre automatique.
Dans le code de mon poste précédant remplace
Selection.AutoFilter
par
Selection.AutoFilter Field:=2
A+
0
dgigie
 
Et bien je dirais juste que mieux cela serait insupportable.... :) tout fonctionne parfaitement. ah les mystères du vba... :)

Merci beaucoup à toi et bon week end.

Pour ma part je vais continuer à potasser un bon vieux "VBA pour les tocards"... :)
0