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.

4 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    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
  2. 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
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Sans enlever le filtre automatique.
    Dans le code de mon poste précédant remplace
    Selection.AutoFilter
    par
    Selection.AutoFilter Field:=2
    A+
    0
  4. 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