Problème VBA Excel 2007
Résolu
dgigie
-
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.
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:
- Problème VBA Excel 2007
- Save as pdf office 2007 - Télécharger - Bureautique
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
4 réponses
Bonjour,
Tu n'est pas dans le bon événement.
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.
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.
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.
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.
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... :).