Problème VBA Excel 2007

Résolu/Fermé
dgigie - 11 mars 2011 à 21:07
 dgigie - 13 mars 2011 à 13:58
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 dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 12/03/2011 à 09:39
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
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
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 dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
13 mars 2011 à 10:51
Sans enlever le filtre automatique.
Dans le code de mon poste précédant remplace
Selection.AutoFilter
par
Selection.AutoFilter Field:=2
A+
0
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