Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

filtrer avec une macro, sans l'enregistreur VB

6 réponses
Avatar
Greg
Bonjour,

Pourriez-vous m'aider à écrire les lignes de codes pour demander à ne voir
que les lignes dont la colonne A contient "1", ou toutes les lignes dont la
colonne E contient "toto". La ligne 1 ne doit pas bouger (c'est la ligne de
titre). Merci à vous

Greg

PS : Je sais que je peux utiliser les filtres Excel mais je souhaite faire
autrement. Quand j'enregistre à l'aide de l'enregistreur VB, je continue à
voir les fameuses flèches du filtre, d'où la motivation de passer par la
macro.

6 réponses

Avatar
Greg
J'ai oublié : si je lance la première macro puis la deuxième, elle doivent
se cumuler : Dans l'exemple pris dans le post précédent, on verra toutes les
lignes dont la colonne A contient "1" ET la colonne E contient "toto".

Quelle macro permet également d'annuler tous les filtres ? Tous les filtres
en colonne E ?

Merci à vous

Greg

"Greg" a écrit dans le message de groupe de discussion :
4d4e9fc3$0$4854$
Bonjour,

Pourriez-vous m'aider à écrire les lignes de codes pour demander à ne voir
que les lignes dont la colonne A contient "1", ou toutes les lignes dont
la colonne E contient "toto". La ligne 1 ne doit pas bouger (c'est la
ligne de titre). Merci à vous

Greg

PS : Je sais que je peux utiliser les filtres Excel mais je souhaite faire
autrement. Quand j'enregistre à l'aide de l'enregistreur VB, je continue à
voir les fameuses flèches du filtre, d'où la motivation de passer par la
macro.
Avatar
Greg
Merci de ne pas répondre... à force de chercher, je me suis rendu compte que
je pouvais faire mieux...

Greg

"Greg" a écrit dans le message de groupe de discussion :
4d4ea0be$0$31298$
J'ai oublié : si je lance la première macro puis la deuxième, elle doivent
se cumuler : Dans l'exemple pris dans le post précédent, on verra toutes
les lignes dont la colonne A contient "1" ET la colonne E contient "toto".

Quelle macro permet également d'annuler tous les filtres ? Tous les
filtres en colonne E ?

Merci à vous

Greg

"Greg" a écrit dans le message de groupe de discussion :
4d4e9fc3$0$4854$
Bonjour,

Pourriez-vous m'aider à écrire les lignes de codes pour demander à ne
voir que les lignes dont la colonne A contient "1", ou toutes les lignes
dont la colonne E contient "toto". La ligne 1 ne doit pas bouger (c'est
la ligne de titre). Merci à vous

Greg

PS : Je sais que je peux utiliser les filtres Excel mais je souhaite
faire autrement. Quand j'enregistre à l'aide de l'enregistreur VB, je
continue à voir les fameuses flèches du filtre, d'où la motivation de
passer par la macro.



Avatar
raphael-diaz
Greg a écrit le 06/02/2011 à 14h18 :
Bonjour,

Pourriez-vous m'aider à écrire les lignes de codes pour demander
à ne voir
que les lignes dont la colonne A contient "1", ou toutes les lignes
dont la
colonne E contient "toto". La ligne 1 ne doit pas bouger (c'est la
ligne de
titre). Merci à vous

Greg

PS : Je sais que je peux utiliser les filtres Excel mais je souhaite faire
autrement. Quand j'enregistre à l'aide de l'enregistreur VB, je continue
à
voir les fameuses flèches du filtre, d'où la motivation de passer
par la
macro.


Une macro fait à l'arrache et non testé mais au moins tu as les idées copie colle là et travaille là dessus. Dans l'exemple j'ai prit la colonne A et j'ai testé avec plusieurs possibilité pour masquer ou réduire et inversement développer quand tu veux repasser dans l'autre sens.
Regarde surtout Hidden, ShowDetail. En esperant que cela t'aidera. Dans tout les cas c'est de la matiere grise. ^^



Sub ExpandShowNullRows(ByVal myChoice As Integer, ByVal mySelector As Boolean)
'-----------------------------------------------------------------------------------------
' mySelector = CST_SHOW ou CST_HIDE
' myChoice=1: Développe/Réduit ; myChoice=2: Affiche/masque
'-----------------------------------------------------------------------------------------
'On Error GoTo Err
Dim c As Range

For Each c In ActiveSheet.Range("A1:A" & Range("Fin").Row - 1) 'pour toutes les cellules de la feuille de calcul jusqu'au une cellule marquée d'un nom défini Fin
If IsNumeric(c) And Not IsEmpty(c.Value) And c = 1 Then
' si la valeur de la cellule est numérique et égale à 1 alors
Select Case myChoice
Case CST_EXPAND_REDUCE
If Not Rows(c.Row).ShowDetail = mySelector Then 'si le curseur cellule de la cellule n'est pas réduit ou développer
Rows(c.Row).ShowDetail = mySelector ' réduire ou développer le curseur lié à la cellule
Rows(c.Row).Hidden = Not mySelector 'masquer ou affiche
End If
Case CST_SHOW_HIDE 'Pour les niveaux de masquage
Rows(c.Row).Hidden = Not mySelector 'masquer les cellules du niveau
End Select

Else ' si la valeur de la cellule n'est pas 0
Select Case myChoice
Case CST_EXPAND_REDUCE
If Not Rows(c.Row).ShowDetail = True Then 'Si le curseur cellule n'est pas ouvert
Rows(c.Row).ShowDetail = True 'ouvrir le cuseur de la cellule
End If
Case CST_SHOW_HIDE 'Pour les niveaux de masquage
Rows(c.Row).Hidden = False 'Afficher les cellules masquées
End Select

End If

Next

Exit Sub

Err:
Select Case Err.Number
Case 1004
MsgBox "Nom de cellule Fin absente", vbExclamation, "Erreur"
Case Else
MsgBox Err.Description, vbExclamation, "Erreur"
End Select
End Sub
Avatar
michdenis
| Merci de ne pas répondre... à force de chercher,
| je me suis rendu compte que je pouvais faire mieux...

Bonjour,

Ici, les répondeurs sont des bénévoles, il est difficile de leur
demander d'assurer la permanence 24 heures sur 24, 7 jours
par semaine...Si tu as du temps, merci de te joindre à
l'équipe.
;-)

MichD
--------------------------------------------
Avatar
Greg
Bonjour Denis,

Aucun reproche dans cette réponse, aucun message subliminal..... juste ce
qui écrit, rien de plus........

Greg

"michdenis" a écrit dans le message de groupe de
discussion : iip2t8$36r$
| Merci de ne pas répondre... à force de chercher,
| je me suis rendu compte que je pouvais faire mieux...

Bonjour,

Ici, les répondeurs sont des bénévoles, il est difficile de leur
demander d'assurer la permanence 24 heures sur 24, 7 jours
par semaine...Si tu as du temps, merci de te joindre à
l'équipe.
;-)

MichD
--------------------------------------------

Avatar
Greg
Bonjour et merci pour cette proposition.

Ca fonctionne!

"raphael-diaz" a écrit dans le message de
groupe de discussion :
Greg a écrit le 06/02/2011 à 14h18 :
Bonjour,

Pourriez-vous m'aider à écrire les lignes de codes pour demander
à ne voir
que les lignes dont la colonne A contient "1", ou toutes les lignes
dont la
colonne E contient "toto". La ligne 1 ne doit pas bouger (c'est la
ligne de
titre). Merci à vous

Greg

PS : Je sais que je peux utiliser les filtres Excel mais je souhaite
faire
autrement. Quand j'enregistre à l'aide de l'enregistreur VB, je continue
à
voir les fameuses flèches du filtre, d'où la motivation de passer
par la
macro.


Une macro fait à l'arrache et non testé mais au moins tu as les idées
copie
colle là et travaille là dessus. Dans l'exemple j'ai prit la colonne A et
j'ai
testé avec plusieurs possibilité pour masquer ou réduire et inversement
développer quand tu veux repasser dans l'autre sens.
Regarde surtout Hidden, ShowDetail. En esperant que cela t'aidera. Dans
tout
les cas c'est de la matiere grise. ^^



Sub ExpandShowNullRows(ByVal myChoice As Integer, ByVal mySelector As
Boolean)
'-----------------------------------------------------------------------------------------
' mySelector = CST_SHOW ou CST_HIDE
' myChoice=1: Développe/Réduit ; myChoice=2: Affiche/masque
'-----------------------------------------------------------------------------------------
'On Error GoTo Err
Dim c As Range

For Each c In ActiveSheet.Range("A1:A" & Range("Fin").Row - 1) 'pour
toutes
les cellules de la feuille de calcul jusqu'au une cellule marquée d'un nom
défini Fin
If IsNumeric(c) And Not IsEmpty(c.Value) And c = 1 Then
' si la valeur de la cellule est numérique et égale à 1
alors
Select Case myChoice
Case CST_EXPAND_REDUCE
If Not Rows(c.Row).ShowDetail = mySelector Then 'si le
curseur
cellule de la cellule n'est pas réduit ou développer
Rows(c.Row).ShowDetail = mySelector ' réduire ou
développer le curseur lié à la cellule
Rows(c.Row).Hidden = Not mySelector 'masquer ou
affiche
End If
Case CST_SHOW_HIDE 'Pour les niveaux de masquage
Rows(c.Row).Hidden = Not mySelector 'masquer les cellules
du
niveau
End Select

Else ' si la valeur de la cellule n'est pas 0
Select Case myChoice
Case CST_EXPAND_REDUCE
If Not Rows(c.Row).ShowDetail = True Then 'Si le curseur
cellule n'est pas ouvert
Rows(c.Row).ShowDetail = True 'ouvrir le cuseur de
la
cellule
End If
Case CST_SHOW_HIDE 'Pour les niveaux de masquage
Rows(c.Row).Hidden = False 'Afficher les cellules masquées
End Select

End If

Next

Exit Sub

Err:
Select Case Err.Number
Case 1004
MsgBox "Nom de cellule Fin absente", vbExclamation, "Erreur"
Case Else
MsgBox Err.Description, vbExclamation, "Erreur"
End Select
End Sub