-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
qu'ils acceptent.
Salutations!
"Crel" a écrit dans
le message de
Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...
Désolé
Merci beaucoup
Patrcik
.
-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
qu'ils acceptent.
Salutations!
"Crel" <nospam-pas-de-pub@club-internet.fr> a écrit dans
le message de
Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...
Désolé
Merci beaucoup
Patrcik
.
-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
qu'ils acceptent.
Salutations!
"Crel" a écrit dans
le message de
Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...
Désolé
Merci beaucoup
Patrcik
.
-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
qu'ils acceptent.
Salutations!
"Crel" a écrit dans
le message de
Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...
Désolé
Merci beaucoup
Patrcik
.
-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
qu'ils acceptent.
Salutations!
"Crel" <nospam-pas-de-pub@club-internet.fr> a écrit dans
le message de
Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...
Désolé
Merci beaucoup
Patrcik
.
-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
qu'ils acceptent.
Salutations!
"Crel" a écrit dans
le message de
Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...
Désolé
Merci beaucoup
Patrcik
.
-----Message d'origine-----
Bonjour anonymous,
Voici un exemple d'un filtre faisant affiché la boîte de
dialogue que tu demandes. Comme la procédure est
me ferais avare de commentaires ... ! ;-)
N.B Tu devrais peut être faire un effort pour te trouver
un pseudonyme plus original !!!
'--------------------------------
Sub CopiePlageFiltré()
Dim N As Integer, A As Long, R As Variant, Rg As Range
N = 1
With Worksheets(1)
.Activate
.Range("A1").Activate
'pour que la boîte de dialogue s'ouvre,
'une des cellules de la plage à filtrée
'doit être active. IL va de soi que la feuille
'où se déroule le filtre doit aussi être la
'feuille active.
.Range("A1").AutoFilter
'Si l'usager clique sur le bouton "annuler" de
'la boîte de filtre personnalisée
If Application.Dialogs(xlDialogFilter).Show(N) =
False Then
MsgBox "Opération annulée"
Set Rg = Nothing: Exit Sub
Else
Set Rg = .AutoFilter.Range
End If
'Nombre Enregistrement trouvé en A
A = .Range("_FilterDataBase").SpecialCells
(xlCellTypeVisible).Count - 1
End With
'Si aucun enregistrement est trouvé lors du filtre
If A = 0 Then
MsgBox "Aucun enregistrement ne répond à votre
critère."
Selection.AutoFilter: Set Rg = Nothing: Exit Sub
'Si au moins un enregistrement est trouvé :
ElseIf A > 0 Then
'Affichage du nombre d'enregistrements trouvés
'Décision quant à l'action à prendre concernant des
enregistrements.
R = InputBox(A & " enregistrement(s) trouvé(s)." &
vbCrLf & vbCrLf & _
"Quel numéro correspond à l'action à suivre ?" &
vbCrLf & vbCrLf & _
"1 . Annuler" & vbCrLf & _
"2 . Copier vers une autre destination" & vbCrLf
& _
"3 . Colorer les lignes obtenues par ce filtre"
& vbCrLf & _
"4 . Supprimer les lignes obtenues par ce
filtre" & vbCrLf & _
"5 . Additionner une colonne de la plage
filtrée ", "Actions disponibles sur la plage filtrée")
'Choix des actions possibles
Select Case R
Case Is = faux
Selection.AutoFilter
Case 2
'Effacer la plage déjà existante à la
plage destination.
Worksheets(2).Range
("A1").CurrentRegion.Clear
'Redimensionne la plage (sans les 2
lignes(titre et critère))
Set Rg = Rg.Offset(2).Resize
(Rg.Rows.Count - 2, Rg.Columns.Count)
'Copie les données filtrées vers la
destination.
Rg.Copy Worksheets(2).Range("A1")
'Enlève les Flèches du filtre automatique
Selection.AutoFilter
Case 3
'Redimensionne la plage (sans les 2
lignes(titre et critère))
Set Rg = Rg.Offset(2).Resize
(Rg.Rows.Count - 2, Rg.Columns.Count)
'Affecte la couleur à la plage
Rg.Interior.ColorIndex = 3
Selection.AutoFilter
Case 4
Set Rg = Rg.Offset(2).Resize
(Rg.Rows.Count - 2, Rg.Columns.Count)
Rg.Delete xlUp
Selection.AutoFilter
Case 5
'additionne la première colonne de la
plage filtrée
MsgBox Application.Sum(Worksheets
(1).Range("_FilterDataBase") _
.Columns(1).SpecialCells
(xlCellTypeVisible))
'Bien d'autres fonctions de la feuille
sont disponibles et applicable
'à la plage filtrée
Selection.AutoFilter
Case Else
Selection.AutoFilter
End Select
End If
Set Rg = Nothing
End Sub
'--------------------------------
Salutations!
a écrit dans le
message de news:010201c394cc$4dd32bb0$
Désolé Denis, il s'agit du filtre personnalisé, et non
pas du filtre élaboré.
Merci beaucoup
Patrick-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
paramètresqu'ils acceptent.
Salutations!
"Crel" a écrit dans
le message de
news:Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...Désolé
Merci beaucoup
Patrcik
.
.
-----Message d'origine-----
Bonjour anonymous,
Voici un exemple d'un filtre faisant affiché la boîte de
dialogue que tu demandes. Comme la procédure est
me ferais avare de commentaires ... ! ;-)
N.B Tu devrais peut être faire un effort pour te trouver
un pseudonyme plus original !!!
'--------------------------------
Sub CopiePlageFiltré()
Dim N As Integer, A As Long, R As Variant, Rg As Range
N = 1
With Worksheets(1)
.Activate
.Range("A1").Activate
'pour que la boîte de dialogue s'ouvre,
'une des cellules de la plage à filtrée
'doit être active. IL va de soi que la feuille
'où se déroule le filtre doit aussi être la
'feuille active.
.Range("A1").AutoFilter
'Si l'usager clique sur le bouton "annuler" de
'la boîte de filtre personnalisée
If Application.Dialogs(xlDialogFilter).Show(N) =
False Then
MsgBox "Opération annulée"
Set Rg = Nothing: Exit Sub
Else
Set Rg = .AutoFilter.Range
End If
'Nombre Enregistrement trouvé en A
A = .Range("_FilterDataBase").SpecialCells
(xlCellTypeVisible).Count - 1
End With
'Si aucun enregistrement est trouvé lors du filtre
If A = 0 Then
MsgBox "Aucun enregistrement ne répond à votre
critère."
Selection.AutoFilter: Set Rg = Nothing: Exit Sub
'Si au moins un enregistrement est trouvé :
ElseIf A > 0 Then
'Affichage du nombre d'enregistrements trouvés
'Décision quant à l'action à prendre concernant des
enregistrements.
R = InputBox(A & " enregistrement(s) trouvé(s)." &
vbCrLf & vbCrLf & _
"Quel numéro correspond à l'action à suivre ?" &
vbCrLf & vbCrLf & _
"1 . Annuler" & vbCrLf & _
"2 . Copier vers une autre destination" & vbCrLf
& _
"3 . Colorer les lignes obtenues par ce filtre"
& vbCrLf & _
"4 . Supprimer les lignes obtenues par ce
filtre" & vbCrLf & _
"5 . Additionner une colonne de la plage
filtrée ", "Actions disponibles sur la plage filtrée")
'Choix des actions possibles
Select Case R
Case Is = faux
Selection.AutoFilter
Case 2
'Effacer la plage déjà existante à la
plage destination.
Worksheets(2).Range
("A1").CurrentRegion.Clear
'Redimensionne la plage (sans les 2
lignes(titre et critère))
Set Rg = Rg.Offset(2).Resize
(Rg.Rows.Count - 2, Rg.Columns.Count)
'Copie les données filtrées vers la
destination.
Rg.Copy Worksheets(2).Range("A1")
'Enlève les Flèches du filtre automatique
Selection.AutoFilter
Case 3
'Redimensionne la plage (sans les 2
lignes(titre et critère))
Set Rg = Rg.Offset(2).Resize
(Rg.Rows.Count - 2, Rg.Columns.Count)
'Affecte la couleur à la plage
Rg.Interior.ColorIndex = 3
Selection.AutoFilter
Case 4
Set Rg = Rg.Offset(2).Resize
(Rg.Rows.Count - 2, Rg.Columns.Count)
Rg.Delete xlUp
Selection.AutoFilter
Case 5
'additionne la première colonne de la
plage filtrée
MsgBox Application.Sum(Worksheets
(1).Range("_FilterDataBase") _
.Columns(1).SpecialCells
(xlCellTypeVisible))
'Bien d'autres fonctions de la feuille
sont disponibles et applicable
'à la plage filtrée
Selection.AutoFilter
Case Else
Selection.AutoFilter
End Select
End If
Set Rg = Nothing
End Sub
'--------------------------------
Salutations!
<anonymous@discussions.microsoft.com> a écrit dans le
message de news:010201c394cc$4dd32bb0$a301280a@phx.gbl...
Désolé Denis, il s'agit du filtre personnalisé, et non
pas du filtre élaboré.
Merci beaucoup
Patrick
-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
paramètres
qu'ils acceptent.
Salutations!
"Crel" <nospam-pas-de-pub@club-internet.fr> a écrit dans
le message de
news:uh0zRqBlDHA.1884@TK2MSFTNGP09.phx.gbl...
Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...
Désolé
Merci beaucoup
Patrcik
.
.
-----Message d'origine-----
Bonjour anonymous,
Voici un exemple d'un filtre faisant affiché la boîte de
dialogue que tu demandes. Comme la procédure est
me ferais avare de commentaires ... ! ;-)
N.B Tu devrais peut être faire un effort pour te trouver
un pseudonyme plus original !!!
'--------------------------------
Sub CopiePlageFiltré()
Dim N As Integer, A As Long, R As Variant, Rg As Range
N = 1
With Worksheets(1)
.Activate
.Range("A1").Activate
'pour que la boîte de dialogue s'ouvre,
'une des cellules de la plage à filtrée
'doit être active. IL va de soi que la feuille
'où se déroule le filtre doit aussi être la
'feuille active.
.Range("A1").AutoFilter
'Si l'usager clique sur le bouton "annuler" de
'la boîte de filtre personnalisée
If Application.Dialogs(xlDialogFilter).Show(N) =
False Then
MsgBox "Opération annulée"
Set Rg = Nothing: Exit Sub
Else
Set Rg = .AutoFilter.Range
End If
'Nombre Enregistrement trouvé en A
A = .Range("_FilterDataBase").SpecialCells
(xlCellTypeVisible).Count - 1
End With
'Si aucun enregistrement est trouvé lors du filtre
If A = 0 Then
MsgBox "Aucun enregistrement ne répond à votre
critère."
Selection.AutoFilter: Set Rg = Nothing: Exit Sub
'Si au moins un enregistrement est trouvé :
ElseIf A > 0 Then
'Affichage du nombre d'enregistrements trouvés
'Décision quant à l'action à prendre concernant des
enregistrements.
R = InputBox(A & " enregistrement(s) trouvé(s)." &
vbCrLf & vbCrLf & _
"Quel numéro correspond à l'action à suivre ?" &
vbCrLf & vbCrLf & _
"1 . Annuler" & vbCrLf & _
"2 . Copier vers une autre destination" & vbCrLf
& _
"3 . Colorer les lignes obtenues par ce filtre"
& vbCrLf & _
"4 . Supprimer les lignes obtenues par ce
filtre" & vbCrLf & _
"5 . Additionner une colonne de la plage
filtrée ", "Actions disponibles sur la plage filtrée")
'Choix des actions possibles
Select Case R
Case Is = faux
Selection.AutoFilter
Case 2
'Effacer la plage déjà existante à la
plage destination.
Worksheets(2).Range
("A1").CurrentRegion.Clear
'Redimensionne la plage (sans les 2
lignes(titre et critère))
Set Rg = Rg.Offset(2).Resize
(Rg.Rows.Count - 2, Rg.Columns.Count)
'Copie les données filtrées vers la
destination.
Rg.Copy Worksheets(2).Range("A1")
'Enlève les Flèches du filtre automatique
Selection.AutoFilter
Case 3
'Redimensionne la plage (sans les 2
lignes(titre et critère))
Set Rg = Rg.Offset(2).Resize
(Rg.Rows.Count - 2, Rg.Columns.Count)
'Affecte la couleur à la plage
Rg.Interior.ColorIndex = 3
Selection.AutoFilter
Case 4
Set Rg = Rg.Offset(2).Resize
(Rg.Rows.Count - 2, Rg.Columns.Count)
Rg.Delete xlUp
Selection.AutoFilter
Case 5
'additionne la première colonne de la
plage filtrée
MsgBox Application.Sum(Worksheets
(1).Range("_FilterDataBase") _
.Columns(1).SpecialCells
(xlCellTypeVisible))
'Bien d'autres fonctions de la feuille
sont disponibles et applicable
'à la plage filtrée
Selection.AutoFilter
Case Else
Selection.AutoFilter
End Select
End If
Set Rg = Nothing
End Sub
'--------------------------------
Salutations!
a écrit dans le
message de news:010201c394cc$4dd32bb0$
Désolé Denis, il s'agit du filtre personnalisé, et non
pas du filtre élaboré.
Merci beaucoup
Patrick-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
paramètresqu'ils acceptent.
Salutations!
"Crel" a écrit dans
le message de
news:Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...Désolé
Merci beaucoup
Patrcik
.
.
-----Message d'origine-----
Bonjour anonymous,
Voici un exemple d'un filtre faisant affiché la boîte de
dialogue que tu demandes. Comme la procédure est
me ferais avare de commentaires ... ! ;-)
N.B Tu devrais peut être faire un effort pour te trouver
un pseudonyme plus original !!!
'--------------------------------
Sub CopiePlageFiltré()
Dim N As Integer, A As Long, R As Variant, Rg As Range
N = 1
With Worksheets(1)
.Activate
.Range("A1").Activate
'pour que la boîte de dialogue s'ouvre,
'une des cellules de la plage à filtrée
'doit être active. IL va de soi que la feuille
'où se déroule le filtre doit aussi être la
'feuille active.
.Range("A1").AutoFilter
'Si l'usager clique sur le bouton "annuler" de
'la boîte de filtre personnalisée
If Application.Dialogs(xlDialogFilter).Show(N) False Then
MsgBox "Opération annulée"
Set Rg = Nothing: Exit Sub
Else
Set Rg = .AutoFilter.Range
End If
'Nombre Enregistrement trouvé en A
A = .Range("_FilterDataBase").SpecialCells
(xlCellTypeVisible).Count - 1
End With
'Si aucun enregistrement est trouvé lors du filtre
If A = 0 Then
MsgBox "Aucun enregistrement ne répond à votre
critère."
Selection.AutoFilter: Set Rg = Nothing: Exit Sub
'Si au moins un enregistrement est trouvé :
ElseIf A > 0 Then
'Affichage du nombre d'enregistrements trouvés
'Décision quant à l'action à prendre concernant des
enregistrements.
R = InputBox(A & " enregistrement(s) trouvé(s)." &
vbCrLf & vbCrLf & _
"Quel numéro correspond à l'action à suivre ?" &
vbCrLf & vbCrLf & _
"1 . Annuler" & vbCrLf & _
"2 . Copier vers une autre destination" & vbCrLf
& _
"3 . Colorer les lignes obtenues par ce filtre"
& vbCrLf & _
"4 . Supprimer les lignes obtenues par ce
filtre" & vbCrLf & _
"5 . Additionner une colonne de la plage
filtrée ", "Actions disponibles sur la plage filtrée")
'Choix des actions possibles
Select Case R
Case Is = faux
Selection.AutoFilter
Case 2
'Effacer la plage déjà existante à la
plage destination.
Worksheets(2).Range
("A1").CurrentRegion.Clear
'Redimensionne la plage (sans les 2
lignes(titre et critère))
Set Rg = Rg.Offset(2).Resize
(Rg.Rows.Count - 2, Rg.Columns.Count)
'Copie les données filtrées vers la
destination.
Rg.Copy Worksheets(2).Range("A1")
'Enlève les Flèches du filtre automatique
Selection.AutoFilter
Case 3
'Redimensionne la plage (sans les 2
lignes(titre et critère))
Set Rg = Rg.Offset(2).Resize
(Rg.Rows.Count - 2, Rg.Columns.Count)
'Affecte la couleur à la plage
Rg.Interior.ColorIndex = 3
Selection.AutoFilter
Case 4
Set Rg = Rg.Offset(2).Resize
(Rg.Rows.Count - 2, Rg.Columns.Count)
Rg.Delete xlUp
Selection.AutoFilter
Case 5
'additionne la première colonne de la
plage filtrée
MsgBox Application.Sum(Worksheets
(1).Range("_FilterDataBase") _
.Columns(1).SpecialCells
(xlCellTypeVisible))
'Bien d'autres fonctions de la feuille
sont disponibles et applicable
'à la plage filtrée
Selection.AutoFilter
Case Else
Selection.AutoFilter
End Select
End If
Set Rg = Nothing
End Sub
'--------------------------------
Salutations!
a écrit dans le
message de news:010201c394cc$4dd32bb0$
Désolé Denis, il s'agit du filtre personnalisé, et non
pas du filtre élaboré.
Merci beaucoup
Patrick-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
paramètresqu'ils acceptent.
Salutations!
"Crel" a écrit dans
le message de
news:Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...Désolé
Merci beaucoup
Patrcik
.
.
-----Message d'origine-----
Bonjour anonymous,
Voici un exemple d'un filtre faisant affiché la boîte de
dialogue que tu demandes. Comme la procédure est
me ferais avare de commentaires ... ! ;-)
N.B Tu devrais peut être faire un effort pour te trouver
un pseudonyme plus original !!!
'--------------------------------
Sub CopiePlageFiltré()
Dim N As Integer, A As Long, R As Variant, Rg As Range
N = 1
With Worksheets(1)
.Activate
.Range("A1").Activate
'pour que la boîte de dialogue s'ouvre,
'une des cellules de la plage à filtrée
'doit être active. IL va de soi que la feuille
'où se déroule le filtre doit aussi être la
'feuille active.
.Range("A1").AutoFilter
'Si l'usager clique sur le bouton "annuler" de
'la boîte de filtre personnalisée
If Application.Dialogs(xlDialogFilter).Show(N) False Then
MsgBox "Opération annulée"
Set Rg = Nothing: Exit Sub
Else
Set Rg = .AutoFilter.Range
End If
'Nombre Enregistrement trouvé en A
A = .Range("_FilterDataBase").SpecialCells
(xlCellTypeVisible).Count - 1
End With
'Si aucun enregistrement est trouvé lors du filtre
If A = 0 Then
MsgBox "Aucun enregistrement ne répond à votre
critère."
Selection.AutoFilter: Set Rg = Nothing: Exit Sub
'Si au moins un enregistrement est trouvé :
ElseIf A > 0 Then
'Affichage du nombre d'enregistrements trouvés
'Décision quant à l'action à prendre concernant des
enregistrements.
R = InputBox(A & " enregistrement(s) trouvé(s)." &
vbCrLf & vbCrLf & _
"Quel numéro correspond à l'action à suivre ?" &
vbCrLf & vbCrLf & _
"1 . Annuler" & vbCrLf & _
"2 . Copier vers une autre destination" & vbCrLf
& _
"3 . Colorer les lignes obtenues par ce filtre"
& vbCrLf & _
"4 . Supprimer les lignes obtenues par ce
filtre" & vbCrLf & _
"5 . Additionner une colonne de la plage
filtrée ", "Actions disponibles sur la plage filtrée")
'Choix des actions possibles
Select Case R
Case Is = faux
Selection.AutoFilter
Case 2
'Effacer la plage déjà existante à la
plage destination.
Worksheets(2).Range
("A1").CurrentRegion.Clear
'Redimensionne la plage (sans les 2
lignes(titre et critère))
Set Rg = Rg.Offset(2).Resize
(Rg.Rows.Count - 2, Rg.Columns.Count)
'Copie les données filtrées vers la
destination.
Rg.Copy Worksheets(2).Range("A1")
'Enlève les Flèches du filtre automatique
Selection.AutoFilter
Case 3
'Redimensionne la plage (sans les 2
lignes(titre et critère))
Set Rg = Rg.Offset(2).Resize
(Rg.Rows.Count - 2, Rg.Columns.Count)
'Affecte la couleur à la plage
Rg.Interior.ColorIndex = 3
Selection.AutoFilter
Case 4
Set Rg = Rg.Offset(2).Resize
(Rg.Rows.Count - 2, Rg.Columns.Count)
Rg.Delete xlUp
Selection.AutoFilter
Case 5
'additionne la première colonne de la
plage filtrée
MsgBox Application.Sum(Worksheets
(1).Range("_FilterDataBase") _
.Columns(1).SpecialCells
(xlCellTypeVisible))
'Bien d'autres fonctions de la feuille
sont disponibles et applicable
'à la plage filtrée
Selection.AutoFilter
Case Else
Selection.AutoFilter
End Select
End If
Set Rg = Nothing
End Sub
'--------------------------------
Salutations!
<anonymous@discussions.microsoft.com> a écrit dans le
message de news:010201c394cc$4dd32bb0$a301280a@phx.gbl...
Désolé Denis, il s'agit du filtre personnalisé, et non
pas du filtre élaboré.
Merci beaucoup
Patrick
-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
paramètres
qu'ils acceptent.
Salutations!
"Crel" <nospam-pas-de-pub@club-internet.fr> a écrit dans
le message de
news:uh0zRqBlDHA.1884@TK2MSFTNGP09.phx.gbl...
Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...
Désolé
Merci beaucoup
Patrcik
.
.
-----Message d'origine-----
Bonjour anonymous,
Voici un exemple d'un filtre faisant affiché la boîte de
dialogue que tu demandes. Comme la procédure est
me ferais avare de commentaires ... ! ;-)
N.B Tu devrais peut être faire un effort pour te trouver
un pseudonyme plus original !!!
'--------------------------------
Sub CopiePlageFiltré()
Dim N As Integer, A As Long, R As Variant, Rg As Range
N = 1
With Worksheets(1)
.Activate
.Range("A1").Activate
'pour que la boîte de dialogue s'ouvre,
'une des cellules de la plage à filtrée
'doit être active. IL va de soi que la feuille
'où se déroule le filtre doit aussi être la
'feuille active.
.Range("A1").AutoFilter
'Si l'usager clique sur le bouton "annuler" de
'la boîte de filtre personnalisée
If Application.Dialogs(xlDialogFilter).Show(N) False Then
MsgBox "Opération annulée"
Set Rg = Nothing: Exit Sub
Else
Set Rg = .AutoFilter.Range
End If
'Nombre Enregistrement trouvé en A
A = .Range("_FilterDataBase").SpecialCells
(xlCellTypeVisible).Count - 1
End With
'Si aucun enregistrement est trouvé lors du filtre
If A = 0 Then
MsgBox "Aucun enregistrement ne répond à votre
critère."
Selection.AutoFilter: Set Rg = Nothing: Exit Sub
'Si au moins un enregistrement est trouvé :
ElseIf A > 0 Then
'Affichage du nombre d'enregistrements trouvés
'Décision quant à l'action à prendre concernant des
enregistrements.
R = InputBox(A & " enregistrement(s) trouvé(s)." &
vbCrLf & vbCrLf & _
"Quel numéro correspond à l'action à suivre ?" &
vbCrLf & vbCrLf & _
"1 . Annuler" & vbCrLf & _
"2 . Copier vers une autre destination" & vbCrLf
& _
"3 . Colorer les lignes obtenues par ce filtre"
& vbCrLf & _
"4 . Supprimer les lignes obtenues par ce
filtre" & vbCrLf & _
"5 . Additionner une colonne de la plage
filtrée ", "Actions disponibles sur la plage filtrée")
'Choix des actions possibles
Select Case R
Case Is = faux
Selection.AutoFilter
Case 2
'Effacer la plage déjà existante à la
plage destination.
Worksheets(2).Range
("A1").CurrentRegion.Clear
'Redimensionne la plage (sans les 2
lignes(titre et critère))
Set Rg = Rg.Offset(2).Resize
(Rg.Rows.Count - 2, Rg.Columns.Count)
'Copie les données filtrées vers la
destination.
Rg.Copy Worksheets(2).Range("A1")
'Enlève les Flèches du filtre automatique
Selection.AutoFilter
Case 3
'Redimensionne la plage (sans les 2
lignes(titre et critère))
Set Rg = Rg.Offset(2).Resize
(Rg.Rows.Count - 2, Rg.Columns.Count)
'Affecte la couleur à la plage
Rg.Interior.ColorIndex = 3
Selection.AutoFilter
Case 4
Set Rg = Rg.Offset(2).Resize
(Rg.Rows.Count - 2, Rg.Columns.Count)
Rg.Delete xlUp
Selection.AutoFilter
Case 5
'additionne la première colonne de la
plage filtrée
MsgBox Application.Sum(Worksheets
(1).Range("_FilterDataBase") _
.Columns(1).SpecialCells
(xlCellTypeVisible))
'Bien d'autres fonctions de la feuille
sont disponibles et applicable
'à la plage filtrée
Selection.AutoFilter
Case Else
Selection.AutoFilter
End Select
End If
Set Rg = Nothing
End Sub
'--------------------------------
Salutations!
a écrit dans le
message de news:010201c394cc$4dd32bb0$
Désolé Denis, il s'agit du filtre personnalisé, et non
pas du filtre élaboré.
Merci beaucoup
Patrick-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
paramètresqu'ils acceptent.
Salutations!
"Crel" a écrit dans
le message de
news:Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...Désolé
Merci beaucoup
Patrcik
.
.
N.B Tu devrais peut être faire un effort pour te trouver un pseudonyme plus
original !!!!!!
N.B Tu devrais peut être faire un effort pour te trouver un pseudonyme plus
original !!!!!!
N.B Tu devrais peut être faire un effort pour te trouver un pseudonyme plus
original !!!!!!
N.B Tu devrais peut être faire un effort pour te trouver un pseudonyme plus
original !!!!!!
N.B Tu devrais peut être faire un effort pour te trouver un pseudonyme plus
original !!!!!!
N.B Tu devrais peut être faire un effort pour te trouver un pseudonyme plus
original !!!!!!
Bonjour anonymous,
Voici un exemple d'un filtre faisant affiché la boîte de dialogue que tu
demandes. Comme la procédure est commentée, je
me ferais avare de commentaires ... ! ;-)
N.B Tu devrais peut être faire un effort pour te trouver un pseudonyme
plus original !!!
'--------------------------------
Sub CopiePlageFiltré()
Dim N As Integer, A As Long, R As Variant, Rg As Range
N = 1
With Worksheets(1)
.Activate
.Range("A1").Activate
'pour que la boîte de dialogue s'ouvre,
'une des cellules de la plage à filtrée
'doit être active. IL va de soi que la feuille
'où se déroule le filtre doit aussi être la
'feuille active.
.Range("A1").AutoFilter
'Si l'usager clique sur le bouton "annuler" de
'la boîte de filtre personnalisée
If Application.Dialogs(xlDialogFilter).Show(N) = False Then
MsgBox "Opération annulée"
Set Rg = Nothing: Exit Sub
Else
Set Rg = .AutoFilter.Range
End If
'Nombre Enregistrement trouvé en A
A = .Range("_FilterDataBase").SpecialCells(xlCellTypeVisible).Count -
1
End With
'Si aucun enregistrement est trouvé lors du filtre
If A = 0 Then
MsgBox "Aucun enregistrement ne répond à votre critère."
Selection.AutoFilter: Set Rg = Nothing: Exit Sub
'Si au moins un enregistrement est trouvé :
ElseIf A > 0 Then
'Affichage du nombre d'enregistrements trouvés
'Décision quant à l'action à prendre concernant des enregistrements.
R = InputBox(A & " enregistrement(s) trouvé(s)." & vbCrLf & vbCrLf &
_
"Quel numéro correspond à l'action à suivre ?" & vbCrLf & vbCrLf &
_
"1 . Annuler" & vbCrLf & _
"2 . Copier vers une autre destination" & vbCrLf & _
"3 . Colorer les lignes obtenues par ce filtre" & vbCrLf & _
"4 . Supprimer les lignes obtenues par ce filtre" & vbCrLf & _
"5 . Additionner une colonne de la plage filtrée ", "Actions
disponibles sur la plage filtrée")
'Choix des actions possibles
Select Case R
Case Is = faux
Selection.AutoFilter
Case 2
'Effacer la plage déjà existante à la plage destination.
Worksheets(2).Range("A1").CurrentRegion.Clear
'Redimensionne la plage (sans les 2 lignes(titre et
critère))
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
'Copie les données filtrées vers la destination.
Rg.Copy Worksheets(2).Range("A1")
'Enlève les Flèches du filtre automatique
Selection.AutoFilter
Case 3
'Redimensionne la plage (sans les 2 lignes(titre et
critère))
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
'Affecte la couleur à la plage
Rg.Interior.ColorIndex = 3
Selection.AutoFilter
Case 4
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
Rg.Delete xlUp
Selection.AutoFilter
Case 5
'additionne la première colonne de la plage filtrée
MsgBox
Application.Sum(Worksheets(1).Range("_FilterDataBase") _
.Columns(1).SpecialCells(xlCellTypeVisible))
'Bien d'autres fonctions de la feuille sont disponibles et
applicable
'à la plage filtrée
Selection.AutoFilter
Case Else
Selection.AutoFilter
End Select
End If
Set Rg = Nothing
End Sub
'--------------------------------
Salutations!
a écrit dans le message de
news:010201c394cc$4dd32bb0$
Désolé Denis, il s'agit du filtre personnalisé, et non
pas du filtre élaboré.
Merci beaucoup
Patrick-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
paramètresqu'ils acceptent.
Salutations!
"Crel" a écrit dans
le message de
news:Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...Désolé
Merci beaucoup
Patrcik
.
Bonjour anonymous,
Voici un exemple d'un filtre faisant affiché la boîte de dialogue que tu
demandes. Comme la procédure est commentée, je
me ferais avare de commentaires ... ! ;-)
N.B Tu devrais peut être faire un effort pour te trouver un pseudonyme
plus original !!!
'--------------------------------
Sub CopiePlageFiltré()
Dim N As Integer, A As Long, R As Variant, Rg As Range
N = 1
With Worksheets(1)
.Activate
.Range("A1").Activate
'pour que la boîte de dialogue s'ouvre,
'une des cellules de la plage à filtrée
'doit être active. IL va de soi que la feuille
'où se déroule le filtre doit aussi être la
'feuille active.
.Range("A1").AutoFilter
'Si l'usager clique sur le bouton "annuler" de
'la boîte de filtre personnalisée
If Application.Dialogs(xlDialogFilter).Show(N) = False Then
MsgBox "Opération annulée"
Set Rg = Nothing: Exit Sub
Else
Set Rg = .AutoFilter.Range
End If
'Nombre Enregistrement trouvé en A
A = .Range("_FilterDataBase").SpecialCells(xlCellTypeVisible).Count -
1
End With
'Si aucun enregistrement est trouvé lors du filtre
If A = 0 Then
MsgBox "Aucun enregistrement ne répond à votre critère."
Selection.AutoFilter: Set Rg = Nothing: Exit Sub
'Si au moins un enregistrement est trouvé :
ElseIf A > 0 Then
'Affichage du nombre d'enregistrements trouvés
'Décision quant à l'action à prendre concernant des enregistrements.
R = InputBox(A & " enregistrement(s) trouvé(s)." & vbCrLf & vbCrLf &
_
"Quel numéro correspond à l'action à suivre ?" & vbCrLf & vbCrLf &
_
"1 . Annuler" & vbCrLf & _
"2 . Copier vers une autre destination" & vbCrLf & _
"3 . Colorer les lignes obtenues par ce filtre" & vbCrLf & _
"4 . Supprimer les lignes obtenues par ce filtre" & vbCrLf & _
"5 . Additionner une colonne de la plage filtrée ", "Actions
disponibles sur la plage filtrée")
'Choix des actions possibles
Select Case R
Case Is = faux
Selection.AutoFilter
Case 2
'Effacer la plage déjà existante à la plage destination.
Worksheets(2).Range("A1").CurrentRegion.Clear
'Redimensionne la plage (sans les 2 lignes(titre et
critère))
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
'Copie les données filtrées vers la destination.
Rg.Copy Worksheets(2).Range("A1")
'Enlève les Flèches du filtre automatique
Selection.AutoFilter
Case 3
'Redimensionne la plage (sans les 2 lignes(titre et
critère))
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
'Affecte la couleur à la plage
Rg.Interior.ColorIndex = 3
Selection.AutoFilter
Case 4
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
Rg.Delete xlUp
Selection.AutoFilter
Case 5
'additionne la première colonne de la plage filtrée
MsgBox
Application.Sum(Worksheets(1).Range("_FilterDataBase") _
.Columns(1).SpecialCells(xlCellTypeVisible))
'Bien d'autres fonctions de la feuille sont disponibles et
applicable
'à la plage filtrée
Selection.AutoFilter
Case Else
Selection.AutoFilter
End Select
End If
Set Rg = Nothing
End Sub
'--------------------------------
Salutations!
<anonymous@discussions.microsoft.com> a écrit dans le message de
news:010201c394cc$4dd32bb0$a301280a@phx.gbl...
Désolé Denis, il s'agit du filtre personnalisé, et non
pas du filtre élaboré.
Merci beaucoup
Patrick
-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
paramètres
qu'ils acceptent.
Salutations!
"Crel" <nospam-pas-de-pub@club-internet.fr> a écrit dans
le message de
news:uh0zRqBlDHA.1884@TK2MSFTNGP09.phx.gbl...
Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...
Désolé
Merci beaucoup
Patrcik
.
Bonjour anonymous,
Voici un exemple d'un filtre faisant affiché la boîte de dialogue que tu
demandes. Comme la procédure est commentée, je
me ferais avare de commentaires ... ! ;-)
N.B Tu devrais peut être faire un effort pour te trouver un pseudonyme
plus original !!!
'--------------------------------
Sub CopiePlageFiltré()
Dim N As Integer, A As Long, R As Variant, Rg As Range
N = 1
With Worksheets(1)
.Activate
.Range("A1").Activate
'pour que la boîte de dialogue s'ouvre,
'une des cellules de la plage à filtrée
'doit être active. IL va de soi que la feuille
'où se déroule le filtre doit aussi être la
'feuille active.
.Range("A1").AutoFilter
'Si l'usager clique sur le bouton "annuler" de
'la boîte de filtre personnalisée
If Application.Dialogs(xlDialogFilter).Show(N) = False Then
MsgBox "Opération annulée"
Set Rg = Nothing: Exit Sub
Else
Set Rg = .AutoFilter.Range
End If
'Nombre Enregistrement trouvé en A
A = .Range("_FilterDataBase").SpecialCells(xlCellTypeVisible).Count -
1
End With
'Si aucun enregistrement est trouvé lors du filtre
If A = 0 Then
MsgBox "Aucun enregistrement ne répond à votre critère."
Selection.AutoFilter: Set Rg = Nothing: Exit Sub
'Si au moins un enregistrement est trouvé :
ElseIf A > 0 Then
'Affichage du nombre d'enregistrements trouvés
'Décision quant à l'action à prendre concernant des enregistrements.
R = InputBox(A & " enregistrement(s) trouvé(s)." & vbCrLf & vbCrLf &
_
"Quel numéro correspond à l'action à suivre ?" & vbCrLf & vbCrLf &
_
"1 . Annuler" & vbCrLf & _
"2 . Copier vers une autre destination" & vbCrLf & _
"3 . Colorer les lignes obtenues par ce filtre" & vbCrLf & _
"4 . Supprimer les lignes obtenues par ce filtre" & vbCrLf & _
"5 . Additionner une colonne de la plage filtrée ", "Actions
disponibles sur la plage filtrée")
'Choix des actions possibles
Select Case R
Case Is = faux
Selection.AutoFilter
Case 2
'Effacer la plage déjà existante à la plage destination.
Worksheets(2).Range("A1").CurrentRegion.Clear
'Redimensionne la plage (sans les 2 lignes(titre et
critère))
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
'Copie les données filtrées vers la destination.
Rg.Copy Worksheets(2).Range("A1")
'Enlève les Flèches du filtre automatique
Selection.AutoFilter
Case 3
'Redimensionne la plage (sans les 2 lignes(titre et
critère))
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
'Affecte la couleur à la plage
Rg.Interior.ColorIndex = 3
Selection.AutoFilter
Case 4
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
Rg.Delete xlUp
Selection.AutoFilter
Case 5
'additionne la première colonne de la plage filtrée
MsgBox
Application.Sum(Worksheets(1).Range("_FilterDataBase") _
.Columns(1).SpecialCells(xlCellTypeVisible))
'Bien d'autres fonctions de la feuille sont disponibles et
applicable
'à la plage filtrée
Selection.AutoFilter
Case Else
Selection.AutoFilter
End Select
End If
Set Rg = Nothing
End Sub
'--------------------------------
Salutations!
a écrit dans le message de
news:010201c394cc$4dd32bb0$
Désolé Denis, il s'agit du filtre personnalisé, et non
pas du filtre élaboré.
Merci beaucoup
Patrick-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
paramètresqu'ils acceptent.
Salutations!
"Crel" a écrit dans
le message de
news:Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...Désolé
Merci beaucoup
Patrcik
.
Bonjour anonymous,
Voici un exemple d'un filtre faisant affiché la boîte de dialogue que tu
demandes. Comme la procédure est commentée, je
me ferais avare de commentaires ... ! ;-)
N.B Tu devrais peut être faire un effort pour te trouver un pseudonyme
plus original !!!
'--------------------------------
Sub CopiePlageFiltré()
Dim N As Integer, A As Long, R As Variant, Rg As Range
N = 1
With Worksheets(1)
.Activate
.Range("A1").Activate
'pour que la boîte de dialogue s'ouvre,
'une des cellules de la plage à filtrée
'doit être active. IL va de soi que la feuille
'où se déroule le filtre doit aussi être la
'feuille active.
.Range("A1").AutoFilter
'Si l'usager clique sur le bouton "annuler" de
'la boîte de filtre personnalisée
If Application.Dialogs(xlDialogFilter).Show(N) = False Then
MsgBox "Opération annulée"
Set Rg = Nothing: Exit Sub
Else
Set Rg = .AutoFilter.Range
End If
'Nombre Enregistrement trouvé en A
A = .Range("_FilterDataBase").SpecialCells(xlCellTypeVisible).Count -
1
End With
'Si aucun enregistrement est trouvé lors du filtre
If A = 0 Then
MsgBox "Aucun enregistrement ne répond à votre critère."
Selection.AutoFilter: Set Rg = Nothing: Exit Sub
'Si au moins un enregistrement est trouvé :
ElseIf A > 0 Then
'Affichage du nombre d'enregistrements trouvés
'Décision quant à l'action à prendre concernant des enregistrements.
R = InputBox(A & " enregistrement(s) trouvé(s)." & vbCrLf & vbCrLf &
_
"Quel numéro correspond à l'action à suivre ?" & vbCrLf & vbCrLf &
_
"1 . Annuler" & vbCrLf & _
"2 . Copier vers une autre destination" & vbCrLf & _
"3 . Colorer les lignes obtenues par ce filtre" & vbCrLf & _
"4 . Supprimer les lignes obtenues par ce filtre" & vbCrLf & _
"5 . Additionner une colonne de la plage filtrée ", "Actions
disponibles sur la plage filtrée")
'Choix des actions possibles
Select Case R
Case Is = faux
Selection.AutoFilter
Case 2
'Effacer la plage déjà existante à la plage destination.
Worksheets(2).Range("A1").CurrentRegion.Clear
'Redimensionne la plage (sans les 2 lignes(titre et
critère))
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
'Copie les données filtrées vers la destination.
Rg.Copy Worksheets(2).Range("A1")
'Enlève les Flèches du filtre automatique
Selection.AutoFilter
Case 3
'Redimensionne la plage (sans les 2 lignes(titre et
critère))
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
'Affecte la couleur à la plage
Rg.Interior.ColorIndex = 3
Selection.AutoFilter
Case 4
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
Rg.Delete xlUp
Selection.AutoFilter
Case 5
'additionne la première colonne de la plage filtrée
MsgBox
Application.Sum(Worksheets(1).Range("_FilterDataBase") _
.Columns(1).SpecialCells(xlCellTypeVisible))
'Bien d'autres fonctions de la feuille sont disponibles et
applicable
'à la plage filtrée
Selection.AutoFilter
Case Else
Selection.AutoFilter
End Select
End If
Set Rg = Nothing
End Sub
'--------------------------------
Salutations!
a écrit dans le message de
news:010201c394cc$4dd32bb0$
Désolé Denis, il s'agit du filtre personnalisé, et non
pas du filtre élaboré.
Merci beaucoup
Patrick-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
paramètresqu'ils acceptent.
Salutations!
"Crel" a écrit dans
le message de
news:Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...Désolé
Merci beaucoup
Patrcik
.
Bonjour anonymous,
Voici un exemple d'un filtre faisant affiché la boîte de dialogue que tu
demandes. Comme la procédure est commentée, je
me ferais avare de commentaires ... ! ;-)
N.B Tu devrais peut être faire un effort pour te trouver un pseudonyme
plus original !!!
'--------------------------------
Sub CopiePlageFiltré()
Dim N As Integer, A As Long, R As Variant, Rg As Range
N = 1
With Worksheets(1)
.Activate
.Range("A1").Activate
'pour que la boîte de dialogue s'ouvre,
'une des cellules de la plage à filtrée
'doit être active. IL va de soi que la feuille
'où se déroule le filtre doit aussi être la
'feuille active.
.Range("A1").AutoFilter
'Si l'usager clique sur le bouton "annuler" de
'la boîte de filtre personnalisée
If Application.Dialogs(xlDialogFilter).Show(N) = False Then
MsgBox "Opération annulée"
Set Rg = Nothing: Exit Sub
Else
Set Rg = .AutoFilter.Range
End If
'Nombre Enregistrement trouvé en A
A = .Range("_FilterDataBase").SpecialCells(xlCellTypeVisible).Count -
1
End With
'Si aucun enregistrement est trouvé lors du filtre
If A = 0 Then
MsgBox "Aucun enregistrement ne répond à votre critère."
Selection.AutoFilter: Set Rg = Nothing: Exit Sub
'Si au moins un enregistrement est trouvé :
ElseIf A > 0 Then
'Affichage du nombre d'enregistrements trouvés
'Décision quant à l'action à prendre concernant des enregistrements.
R = InputBox(A & " enregistrement(s) trouvé(s)." & vbCrLf & vbCrLf &
_
"Quel numéro correspond à l'action à suivre ?" & vbCrLf & vbCrLf &
_
"1 . Annuler" & vbCrLf & _
"2 . Copier vers une autre destination" & vbCrLf & _
"3 . Colorer les lignes obtenues par ce filtre" & vbCrLf & _
"4 . Supprimer les lignes obtenues par ce filtre" & vbCrLf & _
"5 . Additionner une colonne de la plage filtrée ", "Actions
disponibles sur la plage filtrée")
'Choix des actions possibles
Select Case R
Case Is = faux
Selection.AutoFilter
Case 2
'Effacer la plage déjà existante à la plage destination.
Worksheets(2).Range("A1").CurrentRegion.Clear
'Redimensionne la plage (sans les 2 lignes(titre et
critère))
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
'Copie les données filtrées vers la destination.
Rg.Copy Worksheets(2).Range("A1")
'Enlève les Flèches du filtre automatique
Selection.AutoFilter
Case 3
'Redimensionne la plage (sans les 2 lignes(titre et
critère))
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
'Affecte la couleur à la plage
Rg.Interior.ColorIndex = 3
Selection.AutoFilter
Case 4
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
Rg.Delete xlUp
Selection.AutoFilter
Case 5
'additionne la première colonne de la plage filtrée
MsgBox
Application.Sum(Worksheets(1).Range("_FilterDataBase") _
.Columns(1).SpecialCells(xlCellTypeVisible))
'Bien d'autres fonctions de la feuille sont disponibles et
applicable
'à la plage filtrée
Selection.AutoFilter
Case Else
Selection.AutoFilter
End Select
End If
Set Rg = Nothing
End Sub
'--------------------------------
Salutations!
<anonymous@discussions.microsoft.com> a écrit dans le message de
news:010201c394cc$4dd32bb0$a301280a@phx.gbl...
Désolé Denis, il s'agit du filtre personnalisé, et non
pas du filtre élaboré.
Merci beaucoup
Patrick
-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
paramètres
qu'ils acceptent.
Salutations!
"Crel" <nospam-pas-de-pub@club-internet.fr> a écrit dans
le message de
news:uh0zRqBlDHA.1884@TK2MSFTNGP09.phx.gbl...
Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...
Désolé
Merci beaucoup
Patrcik
.
Bonjour anonymous,
Voici un exemple d'un filtre faisant affiché la boîte de dialogue que tu
demandes. Comme la procédure est commentée, je
me ferais avare de commentaires ... ! ;-)
N.B Tu devrais peut être faire un effort pour te trouver un pseudonyme
plus original !!!
'--------------------------------
Sub CopiePlageFiltré()
Dim N As Integer, A As Long, R As Variant, Rg As Range
N = 1
With Worksheets(1)
.Activate
.Range("A1").Activate
'pour que la boîte de dialogue s'ouvre,
'une des cellules de la plage à filtrée
'doit être active. IL va de soi que la feuille
'où se déroule le filtre doit aussi être la
'feuille active.
.Range("A1").AutoFilter
'Si l'usager clique sur le bouton "annuler" de
'la boîte de filtre personnalisée
If Application.Dialogs(xlDialogFilter).Show(N) = False Then
MsgBox "Opération annulée"
Set Rg = Nothing: Exit Sub
Else
Set Rg = .AutoFilter.Range
End If
'Nombre Enregistrement trouvé en A
A = .Range("_FilterDataBase").SpecialCells(xlCellTypeVisible).Count -
1
End With
'Si aucun enregistrement est trouvé lors du filtre
If A = 0 Then
MsgBox "Aucun enregistrement ne répond à votre critère."
Selection.AutoFilter: Set Rg = Nothing: Exit Sub
'Si au moins un enregistrement est trouvé :
ElseIf A > 0 Then
'Affichage du nombre d'enregistrements trouvés
'Décision quant à l'action à prendre concernant des enregistrements.
R = InputBox(A & " enregistrement(s) trouvé(s)." & vbCrLf & vbCrLf &
_
"Quel numéro correspond à l'action à suivre ?" & vbCrLf & vbCrLf &
_
"1 . Annuler" & vbCrLf & _
"2 . Copier vers une autre destination" & vbCrLf & _
"3 . Colorer les lignes obtenues par ce filtre" & vbCrLf & _
"4 . Supprimer les lignes obtenues par ce filtre" & vbCrLf & _
"5 . Additionner une colonne de la plage filtrée ", "Actions
disponibles sur la plage filtrée")
'Choix des actions possibles
Select Case R
Case Is = faux
Selection.AutoFilter
Case 2
'Effacer la plage déjà existante à la plage destination.
Worksheets(2).Range("A1").CurrentRegion.Clear
'Redimensionne la plage (sans les 2 lignes(titre et
critère))
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
'Copie les données filtrées vers la destination.
Rg.Copy Worksheets(2).Range("A1")
'Enlève les Flèches du filtre automatique
Selection.AutoFilter
Case 3
'Redimensionne la plage (sans les 2 lignes(titre et
critère))
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
'Affecte la couleur à la plage
Rg.Interior.ColorIndex = 3
Selection.AutoFilter
Case 4
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
Rg.Delete xlUp
Selection.AutoFilter
Case 5
'additionne la première colonne de la plage filtrée
MsgBox
Application.Sum(Worksheets(1).Range("_FilterDataBase") _
.Columns(1).SpecialCells(xlCellTypeVisible))
'Bien d'autres fonctions de la feuille sont disponibles et
applicable
'à la plage filtrée
Selection.AutoFilter
Case Else
Selection.AutoFilter
End Select
End If
Set Rg = Nothing
End Sub
'--------------------------------
Salutations!
a écrit dans le message de
news:010201c394cc$4dd32bb0$
Désolé Denis, il s'agit du filtre personnalisé, et non
pas du filtre élaboré.
Merci beaucoup
Patrick-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
paramètresqu'ils acceptent.
Salutations!
"Crel" a écrit dans
le message de
news:Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...Désolé
Merci beaucoup
Patrcik
.
Bonjour Alixe,
Voici 3 exemples de macro. A copier dans un module standard. Tu dois
adapter les noms des feuilles de la macro selon
ceux de ton application.
Boucle sur la première colonne d'une plage filtrée (cellules visibles
seulement)
'----------------------------
Sub BouclerSurUnePlageFiltrée()
Dim Rg As Range, Are As Range, C As Range
On Error Resume Next
With Worksheets("Feuil1")
'détermine la plage sur laquelle tu as appliqué le filtre
Set Rg = .Range("_FilterDataBase")
'Redimensionne cette plage seulement à la première colonne
'de la plage filtrée pour les cellules visibles de la plage
'filtrée
Set Rg = Rg.Resize(Rg.Rows.Count, 1).SpecialCells(xlCellTypeVisible)
End With
'Une boucle sur les cellules de la colonne 1 de la
'plage filtrée. Va voir l'aide pour l'objet "AREAS"
For Each Are In Rg.Areas
For Each C In Are
MyVar = MyVar & C
Next
Next
'Libère la mémoire des objets
Set Rg = Nothing: Set Are = Nothing: Set C = Nothing
End Sub
'----------------------------
B - Copie les résultats du filtre de la feuille 1 sans la ligne des
étiquettes vers la feuil 2 cellule A1
'--------------------------------------------
Sub BouclerSurUnePlageFiltrée1()
Dim Rg As Range
With Worksheets("Feuil1")
Set Rg = .Range("_FilterDataBase")
Set Rg = Rg.Offset(1).Resize(Rg.Rows.Count - 1, _
Rg.Count).SpecialCells(xlCellTypeVisible)
Rg.Copy Worksheets("Feuil2").Range("A1")
End With
Set Rg = Nothing
End Sub
'----------------------------------
C ) Copie le résultat du filtre avec la ligne "Étiquette" vers la feuil 2
cellule A1
'----------------------------------
Sub BouclerSurUnePlageFiltrée3()
Dim Rg As Range, Are As Range, C As Range
With Worksheets("Feuil1")
.Range("_FilterDataBase").SpecialCells(xlCellTypeVisible). _
Copy Worksheets("Feuil2").Range("A1")
End With
End Sub
'----------------------------------
Salutations!
"Alixe" a écrit dans le message de
news:3f9120e8$0$2781$
Pendant que vous êtes dans les filtres personnalisés, peut-être pourriez
vous m'aider à résoudre un (petit) problème ?
J'aimerai récupérer les valeurs d'une colonne de mon tableau :
je suis donc partie sur une boucle
Selection.cells(i).value
et je concatène le contenu de toutes les cellules de ma sélection dans une
variable
Le problème est que, bien que ma sélection ne porte théoriquement que sur
les cellules visibles (résultat du filtre), les valeurs récupérées dans ma
variable reflète le contenu des toutes les cellules se trouvant entre la
première et la dernière cellule de ma sélection (le filtre n'est donc pas
pris en compte).
Ce que je ne comprends pas, c'est que lorsque je fais Selection.copy,
seules
les cellules visibles sont copiée.
Y-a-t-il un moyen de passer en revue toutes les cellules visibles de ma
selection pour en récupérer les valeurs ?
Merci
"Denis Michon" a écrit dans le message de
news:OIVjb.1511$Bonjour anonymous,
Voici un exemple d'un filtre faisant affiché la boîte de dialogue que tu
demandes. Comme la procédure est commentée, jeme ferais avare de commentaires ... ! ;-)
N.B Tu devrais peut être faire un effort pour te trouver un pseudonyme
plus original !!!
'--------------------------------
Sub CopiePlageFiltré()
Dim N As Integer, A As Long, R As Variant, Rg As Range
N = 1
With Worksheets(1)
.Activate
.Range("A1").Activate
'pour que la boîte de dialogue s'ouvre,
'une des cellules de la plage à filtrée
'doit être active. IL va de soi que la feuille
'où se déroule le filtre doit aussi être la
'feuille active.
.Range("A1").AutoFilter
'Si l'usager clique sur le bouton "annuler" de
'la boîte de filtre personnalisée
If Application.Dialogs(xlDialogFilter).Show(N) = False Then
MsgBox "Opération annulée"
Set Rg = Nothing: Exit Sub
Else
Set Rg = .AutoFilter.Range
End If
'Nombre Enregistrement trouvé en A
A .Range("_FilterDataBase").SpecialCells(xlCellTypeVisible).Count -
1End With
'Si aucun enregistrement est trouvé lors du filtre
If A = 0 Then
MsgBox "Aucun enregistrement ne répond à votre critère."
Selection.AutoFilter: Set Rg = Nothing: Exit Sub
'Si au moins un enregistrement est trouvé :
ElseIf A > 0 Then
'Affichage du nombre d'enregistrements trouvés
'Décision quant à l'action à prendre concernant des
enregistrements.
R = InputBox(A & " enregistrement(s) trouvé(s)." & vbCrLf & vbCrLf
&
_"Quel numéro correspond à l'action à suivre ?" & vbCrLf & vbCrLf
&
_"1 . Annuler" & vbCrLf & _
"2 . Copier vers une autre destination" & vbCrLf & _
"3 . Colorer les lignes obtenues par ce filtre" & vbCrLf & _
"4 . Supprimer les lignes obtenues par ce filtre" & vbCrLf & _
"5 . Additionner une colonne de la plage filtrée ", "Actions
disponibles sur la plage filtrée")
'Choix des actions possibles
Select Case R
Case Is = faux
Selection.AutoFilter
Case 2
'Effacer la plage déjà existante à la plage destination.
Worksheets(2).Range("A1").CurrentRegion.Clear
'Redimensionne la plage (sans les 2 lignes(titre et
critère))Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)'Copie les données filtrées vers la destination.
Rg.Copy Worksheets(2).Range("A1")
'Enlève les Flèches du filtre automatique
Selection.AutoFilter
Case 3
'Redimensionne la plage (sans les 2 lignes(titre et
critère))Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)'Affecte la couleur à la plage
Rg.Interior.ColorIndex = 3
Selection.AutoFilter
Case 4
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)Rg.Delete xlUp
Selection.AutoFilter
Case 5
'additionne la première colonne de la plage filtrée
MsgBox
Application.Sum(Worksheets(1).Range("_FilterDataBase") _.Columns(1).SpecialCells(xlCellTypeVisible))
'Bien d'autres fonctions de la feuille sont disponibles
et
applicable'à la plage filtrée
Selection.AutoFilter
Case Else
Selection.AutoFilter
End Select
End If
Set Rg = Nothing
End Sub
'--------------------------------
Salutations!
a écrit dans le message de
news:010201c394cc$4dd32bb0$Désolé Denis, il s'agit du filtre personnalisé, et non
pas du filtre élaboré.
Merci beaucoup
Patrick-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
paramètresqu'ils acceptent.
Salutations!
"Crel" a écrit dans
le message de
news:Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...Désolé
Merci beaucoup
Patrcik
.
Bonjour Alixe,
Voici 3 exemples de macro. A copier dans un module standard. Tu dois
adapter les noms des feuilles de la macro selon
ceux de ton application.
Boucle sur la première colonne d'une plage filtrée (cellules visibles
seulement)
'----------------------------
Sub BouclerSurUnePlageFiltrée()
Dim Rg As Range, Are As Range, C As Range
On Error Resume Next
With Worksheets("Feuil1")
'détermine la plage sur laquelle tu as appliqué le filtre
Set Rg = .Range("_FilterDataBase")
'Redimensionne cette plage seulement à la première colonne
'de la plage filtrée pour les cellules visibles de la plage
'filtrée
Set Rg = Rg.Resize(Rg.Rows.Count, 1).SpecialCells(xlCellTypeVisible)
End With
'Une boucle sur les cellules de la colonne 1 de la
'plage filtrée. Va voir l'aide pour l'objet "AREAS"
For Each Are In Rg.Areas
For Each C In Are
MyVar = MyVar & C
Next
Next
'Libère la mémoire des objets
Set Rg = Nothing: Set Are = Nothing: Set C = Nothing
End Sub
'----------------------------
B - Copie les résultats du filtre de la feuille 1 sans la ligne des
étiquettes vers la feuil 2 cellule A1
'--------------------------------------------
Sub BouclerSurUnePlageFiltrée1()
Dim Rg As Range
With Worksheets("Feuil1")
Set Rg = .Range("_FilterDataBase")
Set Rg = Rg.Offset(1).Resize(Rg.Rows.Count - 1, _
Rg.Count).SpecialCells(xlCellTypeVisible)
Rg.Copy Worksheets("Feuil2").Range("A1")
End With
Set Rg = Nothing
End Sub
'----------------------------------
C ) Copie le résultat du filtre avec la ligne "Étiquette" vers la feuil 2
cellule A1
'----------------------------------
Sub BouclerSurUnePlageFiltrée3()
Dim Rg As Range, Are As Range, C As Range
With Worksheets("Feuil1")
.Range("_FilterDataBase").SpecialCells(xlCellTypeVisible). _
Copy Worksheets("Feuil2").Range("A1")
End With
End Sub
'----------------------------------
Salutations!
"Alixe" <alixe01@free_sanspub.fr.invalid> a écrit dans le message de
news:3f9120e8$0$2781$626a54ce@news.free.fr...
Pendant que vous êtes dans les filtres personnalisés, peut-être pourriez
vous m'aider à résoudre un (petit) problème ?
J'aimerai récupérer les valeurs d'une colonne de mon tableau :
je suis donc partie sur une boucle
Selection.cells(i).value
et je concatène le contenu de toutes les cellules de ma sélection dans une
variable
Le problème est que, bien que ma sélection ne porte théoriquement que sur
les cellules visibles (résultat du filtre), les valeurs récupérées dans ma
variable reflète le contenu des toutes les cellules se trouvant entre la
première et la dernière cellule de ma sélection (le filtre n'est donc pas
pris en compte).
Ce que je ne comprends pas, c'est que lorsque je fais Selection.copy,
seules
les cellules visibles sont copiée.
Y-a-t-il un moyen de passer en revue toutes les cellules visibles de ma
selection pour en récupérer les valeurs ?
Merci
"Denis Michon" <denis.michon@cgocable.ca> a écrit dans le message de
news:OIVjb.1511$V11.817@charlie.risq.qc.ca...
Bonjour anonymous,
Voici un exemple d'un filtre faisant affiché la boîte de dialogue que tu
demandes. Comme la procédure est commentée, je
me ferais avare de commentaires ... ! ;-)
N.B Tu devrais peut être faire un effort pour te trouver un pseudonyme
plus original !!!
'--------------------------------
Sub CopiePlageFiltré()
Dim N As Integer, A As Long, R As Variant, Rg As Range
N = 1
With Worksheets(1)
.Activate
.Range("A1").Activate
'pour que la boîte de dialogue s'ouvre,
'une des cellules de la plage à filtrée
'doit être active. IL va de soi que la feuille
'où se déroule le filtre doit aussi être la
'feuille active.
.Range("A1").AutoFilter
'Si l'usager clique sur le bouton "annuler" de
'la boîte de filtre personnalisée
If Application.Dialogs(xlDialogFilter).Show(N) = False Then
MsgBox "Opération annulée"
Set Rg = Nothing: Exit Sub
Else
Set Rg = .AutoFilter.Range
End If
'Nombre Enregistrement trouvé en A
A .Range("_FilterDataBase").SpecialCells(xlCellTypeVisible).Count -
1
End With
'Si aucun enregistrement est trouvé lors du filtre
If A = 0 Then
MsgBox "Aucun enregistrement ne répond à votre critère."
Selection.AutoFilter: Set Rg = Nothing: Exit Sub
'Si au moins un enregistrement est trouvé :
ElseIf A > 0 Then
'Affichage du nombre d'enregistrements trouvés
'Décision quant à l'action à prendre concernant des
enregistrements.
R = InputBox(A & " enregistrement(s) trouvé(s)." & vbCrLf & vbCrLf
&
_
"Quel numéro correspond à l'action à suivre ?" & vbCrLf & vbCrLf
&
_
"1 . Annuler" & vbCrLf & _
"2 . Copier vers une autre destination" & vbCrLf & _
"3 . Colorer les lignes obtenues par ce filtre" & vbCrLf & _
"4 . Supprimer les lignes obtenues par ce filtre" & vbCrLf & _
"5 . Additionner une colonne de la plage filtrée ", "Actions
disponibles sur la plage filtrée")
'Choix des actions possibles
Select Case R
Case Is = faux
Selection.AutoFilter
Case 2
'Effacer la plage déjà existante à la plage destination.
Worksheets(2).Range("A1").CurrentRegion.Clear
'Redimensionne la plage (sans les 2 lignes(titre et
critère))
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
'Copie les données filtrées vers la destination.
Rg.Copy Worksheets(2).Range("A1")
'Enlève les Flèches du filtre automatique
Selection.AutoFilter
Case 3
'Redimensionne la plage (sans les 2 lignes(titre et
critère))
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
'Affecte la couleur à la plage
Rg.Interior.ColorIndex = 3
Selection.AutoFilter
Case 4
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)
Rg.Delete xlUp
Selection.AutoFilter
Case 5
'additionne la première colonne de la plage filtrée
MsgBox
Application.Sum(Worksheets(1).Range("_FilterDataBase") _
.Columns(1).SpecialCells(xlCellTypeVisible))
'Bien d'autres fonctions de la feuille sont disponibles
et
applicable
'à la plage filtrée
Selection.AutoFilter
Case Else
Selection.AutoFilter
End Select
End If
Set Rg = Nothing
End Sub
'--------------------------------
Salutations!
<anonymous@discussions.microsoft.com> a écrit dans le message de
news:010201c394cc$4dd32bb0$a301280a@phx.gbl...
Désolé Denis, il s'agit du filtre personnalisé, et non
pas du filtre élaboré.
Merci beaucoup
Patrick
-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
paramètres
qu'ils acceptent.
Salutations!
"Crel" <nospam-pas-de-pub@club-internet.fr> a écrit dans
le message de
news:uh0zRqBlDHA.1884@TK2MSFTNGP09.phx.gbl...
Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...
Désolé
Merci beaucoup
Patrcik
.
Bonjour Alixe,
Voici 3 exemples de macro. A copier dans un module standard. Tu dois
adapter les noms des feuilles de la macro selon
ceux de ton application.
Boucle sur la première colonne d'une plage filtrée (cellules visibles
seulement)
'----------------------------
Sub BouclerSurUnePlageFiltrée()
Dim Rg As Range, Are As Range, C As Range
On Error Resume Next
With Worksheets("Feuil1")
'détermine la plage sur laquelle tu as appliqué le filtre
Set Rg = .Range("_FilterDataBase")
'Redimensionne cette plage seulement à la première colonne
'de la plage filtrée pour les cellules visibles de la plage
'filtrée
Set Rg = Rg.Resize(Rg.Rows.Count, 1).SpecialCells(xlCellTypeVisible)
End With
'Une boucle sur les cellules de la colonne 1 de la
'plage filtrée. Va voir l'aide pour l'objet "AREAS"
For Each Are In Rg.Areas
For Each C In Are
MyVar = MyVar & C
Next
Next
'Libère la mémoire des objets
Set Rg = Nothing: Set Are = Nothing: Set C = Nothing
End Sub
'----------------------------
B - Copie les résultats du filtre de la feuille 1 sans la ligne des
étiquettes vers la feuil 2 cellule A1
'--------------------------------------------
Sub BouclerSurUnePlageFiltrée1()
Dim Rg As Range
With Worksheets("Feuil1")
Set Rg = .Range("_FilterDataBase")
Set Rg = Rg.Offset(1).Resize(Rg.Rows.Count - 1, _
Rg.Count).SpecialCells(xlCellTypeVisible)
Rg.Copy Worksheets("Feuil2").Range("A1")
End With
Set Rg = Nothing
End Sub
'----------------------------------
C ) Copie le résultat du filtre avec la ligne "Étiquette" vers la feuil 2
cellule A1
'----------------------------------
Sub BouclerSurUnePlageFiltrée3()
Dim Rg As Range, Are As Range, C As Range
With Worksheets("Feuil1")
.Range("_FilterDataBase").SpecialCells(xlCellTypeVisible). _
Copy Worksheets("Feuil2").Range("A1")
End With
End Sub
'----------------------------------
Salutations!
"Alixe" a écrit dans le message de
news:3f9120e8$0$2781$
Pendant que vous êtes dans les filtres personnalisés, peut-être pourriez
vous m'aider à résoudre un (petit) problème ?
J'aimerai récupérer les valeurs d'une colonne de mon tableau :
je suis donc partie sur une boucle
Selection.cells(i).value
et je concatène le contenu de toutes les cellules de ma sélection dans une
variable
Le problème est que, bien que ma sélection ne porte théoriquement que sur
les cellules visibles (résultat du filtre), les valeurs récupérées dans ma
variable reflète le contenu des toutes les cellules se trouvant entre la
première et la dernière cellule de ma sélection (le filtre n'est donc pas
pris en compte).
Ce que je ne comprends pas, c'est que lorsque je fais Selection.copy,
seules
les cellules visibles sont copiée.
Y-a-t-il un moyen de passer en revue toutes les cellules visibles de ma
selection pour en récupérer les valeurs ?
Merci
"Denis Michon" a écrit dans le message de
news:OIVjb.1511$Bonjour anonymous,
Voici un exemple d'un filtre faisant affiché la boîte de dialogue que tu
demandes. Comme la procédure est commentée, jeme ferais avare de commentaires ... ! ;-)
N.B Tu devrais peut être faire un effort pour te trouver un pseudonyme
plus original !!!
'--------------------------------
Sub CopiePlageFiltré()
Dim N As Integer, A As Long, R As Variant, Rg As Range
N = 1
With Worksheets(1)
.Activate
.Range("A1").Activate
'pour que la boîte de dialogue s'ouvre,
'une des cellules de la plage à filtrée
'doit être active. IL va de soi que la feuille
'où se déroule le filtre doit aussi être la
'feuille active.
.Range("A1").AutoFilter
'Si l'usager clique sur le bouton "annuler" de
'la boîte de filtre personnalisée
If Application.Dialogs(xlDialogFilter).Show(N) = False Then
MsgBox "Opération annulée"
Set Rg = Nothing: Exit Sub
Else
Set Rg = .AutoFilter.Range
End If
'Nombre Enregistrement trouvé en A
A .Range("_FilterDataBase").SpecialCells(xlCellTypeVisible).Count -
1End With
'Si aucun enregistrement est trouvé lors du filtre
If A = 0 Then
MsgBox "Aucun enregistrement ne répond à votre critère."
Selection.AutoFilter: Set Rg = Nothing: Exit Sub
'Si au moins un enregistrement est trouvé :
ElseIf A > 0 Then
'Affichage du nombre d'enregistrements trouvés
'Décision quant à l'action à prendre concernant des
enregistrements.
R = InputBox(A & " enregistrement(s) trouvé(s)." & vbCrLf & vbCrLf
&
_"Quel numéro correspond à l'action à suivre ?" & vbCrLf & vbCrLf
&
_"1 . Annuler" & vbCrLf & _
"2 . Copier vers une autre destination" & vbCrLf & _
"3 . Colorer les lignes obtenues par ce filtre" & vbCrLf & _
"4 . Supprimer les lignes obtenues par ce filtre" & vbCrLf & _
"5 . Additionner une colonne de la plage filtrée ", "Actions
disponibles sur la plage filtrée")
'Choix des actions possibles
Select Case R
Case Is = faux
Selection.AutoFilter
Case 2
'Effacer la plage déjà existante à la plage destination.
Worksheets(2).Range("A1").CurrentRegion.Clear
'Redimensionne la plage (sans les 2 lignes(titre et
critère))Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)'Copie les données filtrées vers la destination.
Rg.Copy Worksheets(2).Range("A1")
'Enlève les Flèches du filtre automatique
Selection.AutoFilter
Case 3
'Redimensionne la plage (sans les 2 lignes(titre et
critère))Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)'Affecte la couleur à la plage
Rg.Interior.ColorIndex = 3
Selection.AutoFilter
Case 4
Set Rg = Rg.Offset(2).Resize(Rg.Rows.Count - 2,
Rg.Columns.Count)Rg.Delete xlUp
Selection.AutoFilter
Case 5
'additionne la première colonne de la plage filtrée
MsgBox
Application.Sum(Worksheets(1).Range("_FilterDataBase") _.Columns(1).SpecialCells(xlCellTypeVisible))
'Bien d'autres fonctions de la feuille sont disponibles
et
applicable'à la plage filtrée
Selection.AutoFilter
Case Else
Selection.AutoFilter
End Select
End If
Set Rg = Nothing
End Sub
'--------------------------------
Salutations!
a écrit dans le message de
news:010201c394cc$4dd32bb0$Désolé Denis, il s'agit du filtre personnalisé, et non
pas du filtre élaboré.
Merci beaucoup
Patrick-----Message d'origine-----
Bonjour Crel,
Application.Dialogs(xlDialogFilterAdvanced).Show
Regarde dans l'aide VBA sous la rubrique Dialog, tu
devrais obtenir la liste des constante Xldialog et les
paramètresqu'ils acceptent.
Salutations!
"Crel" a écrit dans
le message de
news:Bonjour à toutes et tous
Je désire lancer à partir d'un bouton macro la boite de
filtre personnalisé.
Clément Marcotte m'a indiqué la marche à suivre, mais je
n'y arrive pas...Désolé
Merci beaucoup
Patrcik
.