J'ai un classeur avec plusieurs feuilles ayant exactement les m=EAmes
colonnes. Ces colonnes sont en mode filtre automatique. Lorsque je
param=E8tre manuellement mes filtres automatiques sur l'une des
feuilles, j'aimerais pouvoir r=E9cup=E9rer le param=E9trage du filtarge que
j'ai effectu=E9 pour le reproduire sur toutes les autres feuilles. Cela
m'=E9viterait ainsi de devoir reproduire sur toutes mes feuilles les
m=EAmes op=E9rations de filtrage, d'autant plus que j'ai 108 colonnes, 17
feuilles, et que je suis susceptible de faire des filtres
personnalis=E9s.
Quelqu'un sait-il comment faire cela dans une macro SVP ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
isabelle
bonjour Maia,
Dim w As Worksheet Dim filterArray() Dim currentFiltRange As String
Sub LireFilters() 'lire le filtre de Feuil1 Set w = Worksheets("Feuil1") With w.AutoFilter currentFiltRange = .Range.Address With .Filters ReDim filterArray(1 To .Count, 1 To 3) For f = 1 To .Count With .Item(f) If .On Then filterArray(f, 1) = .Criteria1 If .Operator Then filterArray(f, 2) = .Operator filterArray(f, 3) = .Criteria2 End If End If End With Next End With End With
End Sub
Sub RestoreFilters() 'applique un filtre identique à la Feuil1 sur la feuille active Set w = ActiveSheet w.AutoFilterMode = False For col = 1 To UBound(filterArray(), 1) If Not IsEmpty(filterArray(col, 1)) Then If filterArray(col, 2) Then w.Range(currentFiltRange).AutoFilter field:=col, _ Criteria1:=filterArray(col, 1), _ Operator:=filterArray(col, 2), _ Criteria2:=filterArray(col, 3) Else w.Range(currentFiltRange).AutoFilter field:=col, _ Criteria1:=filterArray(col, 1) End If End If Next End Sub
isabelle
Le 2010-02-18 08:32, Maïa a écrit :
Bonjour,
J'ai un classeur avec plusieurs feuilles ayant exactement les mêmes colonnes. Ces colonnes sont en mode filtre automatique. Lorsque je paramètre manuellement mes filtres automatiques sur l'une des feuilles, j'aimerais pouvoir récupérer le paramétrage du filtarge que j'ai effectué pour le reproduire sur toutes les autres feuilles. Cela m'éviterait ainsi de devoir reproduire sur toutes mes feuilles les mêmes opérations de filtrage, d'autant plus que j'ai 108 colonnes, 17 feuilles, et que je suis susceptible de faire des filtres personnalisés.
Quelqu'un sait-il comment faire cela dans une macro SVP ?
D'avance merci
bonjour Maia,
Dim w As Worksheet
Dim filterArray()
Dim currentFiltRange As String
Sub LireFilters() 'lire le filtre de Feuil1
Set w = Worksheets("Feuil1")
With w.AutoFilter
currentFiltRange = .Range.Address
With .Filters
ReDim filterArray(1 To .Count, 1 To 3)
For f = 1 To .Count
With .Item(f)
If .On Then
filterArray(f, 1) = .Criteria1
If .Operator Then
filterArray(f, 2) = .Operator
filterArray(f, 3) = .Criteria2
End If
End If
End With
Next
End With
End With
End Sub
Sub RestoreFilters() 'applique un filtre identique à la Feuil1 sur la
feuille active
Set w = ActiveSheet
w.AutoFilterMode = False
For col = 1 To UBound(filterArray(), 1)
If Not IsEmpty(filterArray(col, 1)) Then
If filterArray(col, 2) Then
w.Range(currentFiltRange).AutoFilter field:=col, _
Criteria1:=filterArray(col, 1), _
Operator:=filterArray(col, 2), _
Criteria2:=filterArray(col, 3)
Else
w.Range(currentFiltRange).AutoFilter field:=col, _
Criteria1:=filterArray(col, 1)
End If
End If
Next
End Sub
isabelle
Le 2010-02-18 08:32, Maïa a écrit :
Bonjour,
J'ai un classeur avec plusieurs feuilles ayant exactement les mêmes
colonnes. Ces colonnes sont en mode filtre automatique. Lorsque je
paramètre manuellement mes filtres automatiques sur l'une des
feuilles, j'aimerais pouvoir récupérer le paramétrage du filtarge que
j'ai effectué pour le reproduire sur toutes les autres feuilles. Cela
m'éviterait ainsi de devoir reproduire sur toutes mes feuilles les
mêmes opérations de filtrage, d'autant plus que j'ai 108 colonnes, 17
feuilles, et que je suis susceptible de faire des filtres
personnalisés.
Quelqu'un sait-il comment faire cela dans une macro SVP ?
Dim w As Worksheet Dim filterArray() Dim currentFiltRange As String
Sub LireFilters() 'lire le filtre de Feuil1 Set w = Worksheets("Feuil1") With w.AutoFilter currentFiltRange = .Range.Address With .Filters ReDim filterArray(1 To .Count, 1 To 3) For f = 1 To .Count With .Item(f) If .On Then filterArray(f, 1) = .Criteria1 If .Operator Then filterArray(f, 2) = .Operator filterArray(f, 3) = .Criteria2 End If End If End With Next End With End With
End Sub
Sub RestoreFilters() 'applique un filtre identique à la Feuil1 sur la feuille active Set w = ActiveSheet w.AutoFilterMode = False For col = 1 To UBound(filterArray(), 1) If Not IsEmpty(filterArray(col, 1)) Then If filterArray(col, 2) Then w.Range(currentFiltRange).AutoFilter field:=col, _ Criteria1:=filterArray(col, 1), _ Operator:=filterArray(col, 2), _ Criteria2:=filterArray(col, 3) Else w.Range(currentFiltRange).AutoFilter field:=col, _ Criteria1:=filterArray(col, 1) End If End If Next End Sub
isabelle
Le 2010-02-18 08:32, Maïa a écrit :
Bonjour,
J'ai un classeur avec plusieurs feuilles ayant exactement les mêmes colonnes. Ces colonnes sont en mode filtre automatique. Lorsque je paramètre manuellement mes filtres automatiques sur l'une des feuilles, j'aimerais pouvoir récupérer le paramétrage du filtarge que j'ai effectué pour le reproduire sur toutes les autres feuilles. Cela m'éviterait ainsi de devoir reproduire sur toutes mes feuilles les mêmes opérations de filtrage, d'autant plus que j'ai 108 colonnes, 17 feuilles, et que je suis susceptible de faire des filtres personnalisés.
Quelqu'un sait-il comment faire cela dans une macro SVP ?
D'avance merci
isabelle
au cas ou il y aurait des coupure de ligne involontaire, http://cjoint.com/?cspGoP0vbQ
isabelle
Le 2010-02-18 09:02, isabelle a écrit :
bonjour Maia,
Dim w As Worksheet Dim filterArray() Dim currentFiltRange As String
Sub LireFilters() 'lire le filtre de Feuil1 Set w = Worksheets("Feuil1") With w.AutoFilter currentFiltRange = .Range.Address With .Filters ReDim filterArray(1 To .Count, 1 To 3) For f = 1 To .Count With .Item(f) If .On Then filterArray(f, 1) = .Criteria1 If .Operator Then filterArray(f, 2) = .Operator filterArray(f, 3) = .Criteria2 End If End If End With Next End With End With
End Sub
Sub RestoreFilters() 'applique un filtre identique à la Feuil1 sur la feuille active Set w = ActiveSheet w.AutoFilterMode = False For col = 1 To UBound(filterArray(), 1) If Not IsEmpty(filterArray(col, 1)) Then If filterArray(col, 2) Then w.Range(currentFiltRange).AutoFilter field:=col, _ Criteria1:=filterArray(col, 1), _ Operator:=filterArray(col, 2), _ Criteria2:=filterArray(col, 3) Else w.Range(currentFiltRange).AutoFilter field:=col, _ Criteria1:=filterArray(col, 1) End If End If Next End Sub
isabelle
Le 2010-02-18 08:32, Maïa a écrit :
Bonjour,
J'ai un classeur avec plusieurs feuilles ayant exactement les mêmes colonnes. Ces colonnes sont en mode filtre automatique. Lorsque je paramètre manuellement mes filtres automatiques sur l'une des feuilles, j'aimerais pouvoir récupérer le paramétrage du filtarge que j'ai effectué pour le reproduire sur toutes les autres feuilles. Cela m'éviterait ainsi de devoir reproduire sur toutes mes feuilles les mêmes opérations de filtrage, d'autant plus que j'ai 108 colonnes, 17 feuilles, et que je suis susceptible de faire des filtres personnalisés.
Quelqu'un sait-il comment faire cela dans une macro SVP ?
D'avance merci
au cas ou il y aurait des coupure de ligne involontaire,
http://cjoint.com/?cspGoP0vbQ
isabelle
Le 2010-02-18 09:02, isabelle a écrit :
bonjour Maia,
Dim w As Worksheet
Dim filterArray()
Dim currentFiltRange As String
Sub LireFilters() 'lire le filtre de Feuil1
Set w = Worksheets("Feuil1")
With w.AutoFilter
currentFiltRange = .Range.Address
With .Filters
ReDim filterArray(1 To .Count, 1 To 3)
For f = 1 To .Count
With .Item(f)
If .On Then
filterArray(f, 1) = .Criteria1
If .Operator Then
filterArray(f, 2) = .Operator
filterArray(f, 3) = .Criteria2
End If
End If
End With
Next
End With
End With
End Sub
Sub RestoreFilters() 'applique un filtre identique à la Feuil1 sur la
feuille active
Set w = ActiveSheet
w.AutoFilterMode = False
For col = 1 To UBound(filterArray(), 1)
If Not IsEmpty(filterArray(col, 1)) Then
If filterArray(col, 2) Then
w.Range(currentFiltRange).AutoFilter field:=col, _
Criteria1:=filterArray(col, 1), _
Operator:=filterArray(col, 2), _
Criteria2:=filterArray(col, 3)
Else
w.Range(currentFiltRange).AutoFilter field:=col, _
Criteria1:=filterArray(col, 1)
End If
End If
Next
End Sub
isabelle
Le 2010-02-18 08:32, Maïa a écrit :
Bonjour,
J'ai un classeur avec plusieurs feuilles ayant exactement les mêmes
colonnes. Ces colonnes sont en mode filtre automatique. Lorsque je
paramètre manuellement mes filtres automatiques sur l'une des
feuilles, j'aimerais pouvoir récupérer le paramétrage du filtarge que
j'ai effectué pour le reproduire sur toutes les autres feuilles. Cela
m'éviterait ainsi de devoir reproduire sur toutes mes feuilles les
mêmes opérations de filtrage, d'autant plus que j'ai 108 colonnes, 17
feuilles, et que je suis susceptible de faire des filtres
personnalisés.
Quelqu'un sait-il comment faire cela dans une macro SVP ?
au cas ou il y aurait des coupure de ligne involontaire, http://cjoint.com/?cspGoP0vbQ
isabelle
Le 2010-02-18 09:02, isabelle a écrit :
bonjour Maia,
Dim w As Worksheet Dim filterArray() Dim currentFiltRange As String
Sub LireFilters() 'lire le filtre de Feuil1 Set w = Worksheets("Feuil1") With w.AutoFilter currentFiltRange = .Range.Address With .Filters ReDim filterArray(1 To .Count, 1 To 3) For f = 1 To .Count With .Item(f) If .On Then filterArray(f, 1) = .Criteria1 If .Operator Then filterArray(f, 2) = .Operator filterArray(f, 3) = .Criteria2 End If End If End With Next End With End With
End Sub
Sub RestoreFilters() 'applique un filtre identique à la Feuil1 sur la feuille active Set w = ActiveSheet w.AutoFilterMode = False For col = 1 To UBound(filterArray(), 1) If Not IsEmpty(filterArray(col, 1)) Then If filterArray(col, 2) Then w.Range(currentFiltRange).AutoFilter field:=col, _ Criteria1:=filterArray(col, 1), _ Operator:=filterArray(col, 2), _ Criteria2:=filterArray(col, 3) Else w.Range(currentFiltRange).AutoFilter field:=col, _ Criteria1:=filterArray(col, 1) End If End If Next End Sub
isabelle
Le 2010-02-18 08:32, Maïa a écrit :
Bonjour,
J'ai un classeur avec plusieurs feuilles ayant exactement les mêmes colonnes. Ces colonnes sont en mode filtre automatique. Lorsque je paramètre manuellement mes filtres automatiques sur l'une des feuilles, j'aimerais pouvoir récupérer le paramétrage du filtarge que j'ai effectué pour le reproduire sur toutes les autres feuilles. Cela m'éviterait ainsi de devoir reproduire sur toutes mes feuilles les mêmes opérations de filtrage, d'autant plus que j'ai 108 colonnes, 17 feuilles, et que je suis susceptible de faire des filtres personnalisés.
Quelqu'un sait-il comment faire cela dans une macro SVP ?
D'avance merci
Maïa
On 18 fév, 15:02, isabelle wrote:
bonjour Maia,
Dim w As Worksheet Dim filterArray() Dim currentFiltRange As String
Sub LireFilters() 'lire le filtre de Feuil1 Set w = Worksheets("Feuil1") With w.AutoFilter currentFiltRange = .Range.Address With .Filters ReDim filterArray(1 To .Count, 1 To 3) For f = 1 To .Count With .Item(f) If .On Then filterArray(f, 1) = .Criteri a1 If .Operator Then filterArray(f, 2) = .Operator filterArray(f, 3) = .Criteria2 End If End If End With Next End With End With
End Sub
Sub RestoreFilters() 'applique un filtre identique à la Feuil1 sur la feuille active Set w = ActiveSheet w.AutoFilterMode = False For col = 1 To UBound(filterArray(), 1) If Not IsEmpty(filterArray(col, 1)) Then If filterArray(col, 2) Then w.Range(currentFiltRange).AutoFilter field:= col, _ Criteria1:=filterArray(col, 1), _ Operator:=filterArray(col, 2 ), _ Criteria2:=filterArray(col, 3) Else w.Range(currentFiltRange).AutoFilter field:= col, _ Criteria1:=filterArray(col, 1) End If End If Next End Sub
isabelle
Le 2010-02-18 08:32, Maïa a écrit :
> Bonjour,
> J'ai un classeur avec plusieurs feuilles ayant exactement les mêmes > colonnes. Ces colonnes sont en mode filtre automatique. Lorsque je > paramètre manuellement mes filtres automatiques sur l'une des > feuilles, j'aimerais pouvoir récupérer le paramétrage du filtarge que > j'ai effectué pour le reproduire sur toutes les autres feuilles. Cela > m'éviterait ainsi de devoir reproduire sur toutes mes feuilles les > mêmes opérations de filtrage, d'autant plus que j'ai 108 colonnes, 17 > feuilles, et que je suis susceptible de faire des filtres > personnalisés.
> Quelqu'un sait-il comment faire cela dans une macro SVP ?
> D'avance merci- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour,
Merci pour la réponse. Je vais la tester au plus vite !
On 18 fév, 15:02, isabelle <i@v> wrote:
bonjour Maia,
Dim w As Worksheet
Dim filterArray()
Dim currentFiltRange As String
Sub LireFilters() 'lire le filtre de Feuil1
Set w = Worksheets("Feuil1")
With w.AutoFilter
currentFiltRange = .Range.Address
With .Filters
ReDim filterArray(1 To .Count, 1 To 3)
For f = 1 To .Count
With .Item(f)
If .On Then
filterArray(f, 1) = .Criteri a1
If .Operator Then
filterArray(f, 2) = .Operator
filterArray(f, 3) = .Criteria2
End If
End If
End With
Next
End With
End With
End Sub
Sub RestoreFilters() 'applique un filtre identique à la Feuil1 sur la
feuille active
Set w = ActiveSheet
w.AutoFilterMode = False
For col = 1 To UBound(filterArray(), 1)
If Not IsEmpty(filterArray(col, 1)) Then
If filterArray(col, 2) Then
w.Range(currentFiltRange).AutoFilter field:= col, _
Criteria1:=filterArray(col, 1), _
Operator:=filterArray(col, 2 ), _
Criteria2:=filterArray(col, 3)
Else
w.Range(currentFiltRange).AutoFilter field:= col, _
Criteria1:=filterArray(col, 1)
End If
End If
Next
End Sub
isabelle
Le 2010-02-18 08:32, Maïa a écrit :
> Bonjour,
> J'ai un classeur avec plusieurs feuilles ayant exactement les mêmes
> colonnes. Ces colonnes sont en mode filtre automatique. Lorsque je
> paramètre manuellement mes filtres automatiques sur l'une des
> feuilles, j'aimerais pouvoir récupérer le paramétrage du filtarge que
> j'ai effectué pour le reproduire sur toutes les autres feuilles. Cela
> m'éviterait ainsi de devoir reproduire sur toutes mes feuilles les
> mêmes opérations de filtrage, d'autant plus que j'ai 108 colonnes, 17
> feuilles, et que je suis susceptible de faire des filtres
> personnalisés.
> Quelqu'un sait-il comment faire cela dans une macro SVP ?
> D'avance merci- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour,
Merci pour la réponse. Je vais la tester au plus vite !
Dim w As Worksheet Dim filterArray() Dim currentFiltRange As String
Sub LireFilters() 'lire le filtre de Feuil1 Set w = Worksheets("Feuil1") With w.AutoFilter currentFiltRange = .Range.Address With .Filters ReDim filterArray(1 To .Count, 1 To 3) For f = 1 To .Count With .Item(f) If .On Then filterArray(f, 1) = .Criteri a1 If .Operator Then filterArray(f, 2) = .Operator filterArray(f, 3) = .Criteria2 End If End If End With Next End With End With
End Sub
Sub RestoreFilters() 'applique un filtre identique à la Feuil1 sur la feuille active Set w = ActiveSheet w.AutoFilterMode = False For col = 1 To UBound(filterArray(), 1) If Not IsEmpty(filterArray(col, 1)) Then If filterArray(col, 2) Then w.Range(currentFiltRange).AutoFilter field:= col, _ Criteria1:=filterArray(col, 1), _ Operator:=filterArray(col, 2 ), _ Criteria2:=filterArray(col, 3) Else w.Range(currentFiltRange).AutoFilter field:= col, _ Criteria1:=filterArray(col, 1) End If End If Next End Sub
isabelle
Le 2010-02-18 08:32, Maïa a écrit :
> Bonjour,
> J'ai un classeur avec plusieurs feuilles ayant exactement les mêmes > colonnes. Ces colonnes sont en mode filtre automatique. Lorsque je > paramètre manuellement mes filtres automatiques sur l'une des > feuilles, j'aimerais pouvoir récupérer le paramétrage du filtarge que > j'ai effectué pour le reproduire sur toutes les autres feuilles. Cela > m'éviterait ainsi de devoir reproduire sur toutes mes feuilles les > mêmes opérations de filtrage, d'autant plus que j'ai 108 colonnes, 17 > feuilles, et que je suis susceptible de faire des filtres > personnalisés.
> Quelqu'un sait-il comment faire cela dans une macro SVP ?
> D'avance merci- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Bonjour,
Merci pour la réponse. Je vais la tester au plus vite !
Maïa
Bonjour,
Le code fonctionne très bien si j'ai plus de lignes dans la feuille sur laquelle j'effectue le filtre que sur les autres.
En effet si j'ai moins de lignes sur la feuille dans laquelle j'effectue le filtre et que je fais tourner la macro, toutes mes lignes ne sont pas filtrées sur les autres feuilles.
Y a-t-il une solution pour prendre en compte toutes les lignes des feuilles => j'ai des feuilles avec toujours le même nombre de colonnes (et le même intitulé), mais avec un nombre de lignes variable.
Merci
Bonjour,
Le code fonctionne très bien si j'ai plus de lignes dans la feuille
sur laquelle j'effectue le filtre que sur les autres.
En effet si j'ai moins de lignes sur la feuille dans laquelle
j'effectue le filtre et que je fais tourner la macro, toutes mes
lignes ne sont pas filtrées sur les autres feuilles.
Y a-t-il une solution pour prendre en compte toutes les lignes des
feuilles => j'ai des feuilles avec toujours le même nombre de colonnes
(et le même intitulé), mais avec un nombre de lignes variable.
Le code fonctionne très bien si j'ai plus de lignes dans la feuille sur laquelle j'effectue le filtre que sur les autres.
En effet si j'ai moins de lignes sur la feuille dans laquelle j'effectue le filtre et que je fais tourner la macro, toutes mes lignes ne sont pas filtrées sur les autres feuilles.
Y a-t-il une solution pour prendre en compte toutes les lignes des feuilles => j'ai des feuilles avec toujours le même nombre de colonnes (et le même intitulé), mais avec un nombre de lignes variable.
Merci
isabelle
bonjour Maïa,
as tu modifier cette ligne, Set w = Worksheets("Feuil1") par Set w = Activesheet pour l'adapter à la feuille ou tu exécute la macro
isabelle
Le 2010-03-11 10:25, Maïa a écrit :
Bonjour,
Le code fonctionne très bien si j'ai plus de lignes dans la feuille sur laquelle j'effectue le filtre que sur les autres.
En effet si j'ai moins de lignes sur la feuille dans laquelle j'effectue le filtre et que je fais tourner la macro, toutes mes lignes ne sont pas filtrées sur les autres feuilles.
Y a-t-il une solution pour prendre en compte toutes les lignes des feuilles => j'ai des feuilles avec toujours le même nombre de colonnes (et le même intitulé), mais avec un nombre de lignes variable.
Merci
bonjour Maïa,
as tu modifier cette ligne,
Set w = Worksheets("Feuil1")
par
Set w = Activesheet
pour l'adapter à la feuille ou tu exécute la macro
isabelle
Le 2010-03-11 10:25, Maïa a écrit :
Bonjour,
Le code fonctionne très bien si j'ai plus de lignes dans la feuille
sur laquelle j'effectue le filtre que sur les autres.
En effet si j'ai moins de lignes sur la feuille dans laquelle
j'effectue le filtre et que je fais tourner la macro, toutes mes
lignes ne sont pas filtrées sur les autres feuilles.
Y a-t-il une solution pour prendre en compte toutes les lignes des
feuilles => j'ai des feuilles avec toujours le même nombre de colonnes
(et le même intitulé), mais avec un nombre de lignes variable.
as tu modifier cette ligne, Set w = Worksheets("Feuil1") par Set w = Activesheet pour l'adapter à la feuille ou tu exécute la macro
isabelle
Le 2010-03-11 10:25, Maïa a écrit :
Bonjour,
Le code fonctionne très bien si j'ai plus de lignes dans la feuille sur laquelle j'effectue le filtre que sur les autres.
En effet si j'ai moins de lignes sur la feuille dans laquelle j'effectue le filtre et que je fais tourner la macro, toutes mes lignes ne sont pas filtrées sur les autres feuilles.
Y a-t-il une solution pour prendre en compte toutes les lignes des feuilles => j'ai des feuilles avec toujours le même nombre de colonnes (et le même intitulé), mais avec un nombre de lignes variable.
Merci
Maïa
Le problème vient du fait que la macro LireFilters détecte la plage à filtrer sur la feuille dont je veux copier le filtre => par exemple $A $1:$IP$231 dans currentfiltrange
Du coup, lorsque je fais tourner la macro RestoreFilters sur les autres feuilles, ça ne filtre que jusqu'à la ligne 231, même si les autres feuilles ont par exemple 400 lignes. Il faudraitq ue je puisse redéfinir le currentfiltrange à chaque fois que j'applique la macro RestoreFilters, mais je ne sais pas comment faire.
Maïa
Le problème vient du fait que la macro LireFilters détecte la plage à
filtrer sur la feuille dont je veux copier le filtre => par exemple $A
$1:$IP$231 dans currentfiltrange
Du coup, lorsque je fais tourner la macro RestoreFilters sur les
autres feuilles, ça ne filtre que jusqu'à la ligne 231, même si les
autres feuilles ont par exemple 400 lignes. Il faudraitq ue je puisse
redéfinir le currentfiltrange à chaque fois que j'applique la macro
RestoreFilters, mais je ne sais pas comment faire.
Le problème vient du fait que la macro LireFilters détecte la plage à filtrer sur la feuille dont je veux copier le filtre => par exemple $A $1:$IP$231 dans currentfiltrange
Du coup, lorsque je fais tourner la macro RestoreFilters sur les autres feuilles, ça ne filtre que jusqu'à la ligne 231, même si les autres feuilles ont par exemple 400 lignes. Il faudraitq ue je puisse redéfinir le currentfiltrange à chaque fois que j'applique la macro RestoreFilters, mais je ne sais pas comment faire.
Maïa
isabelle
bonjour Maïa,
j'ai modifié la deuxième macro comme ca :
Sub RestoreFilters() 'applique un filtre identique à la Feuil1 sur la feuille active Set w = ActiveSheet With w.AutoFilter currentFiltRange1 = .Range.Address .AutoFilterMode = False For col = 1 To UBound(filterArray(), 1) If Not IsEmpty(filterArray(col, 1)) Then If filterArray(col, 2) Then w.Range(currentFiltRange1).AutoFilter field:=col, _ Criteria1:=filterArray(col, 1), _ Operator:=filterArray(col, 2), _ Criteria2:=filterArray(col, 3) Else w.Range(currentFiltRange1).AutoFilter field:=col, _ Criteria1:=filterArray(col, 1) End If End If Next End With End Sub
isabelle
Le 2010-03-12 06:08, Maïa a écrit :
Le problème vient du fait que la macro LireFilters détecte la plage à filtrer sur la feuille dont je veux copier le filtre => par exemple $A $1:$IP$231 dans currentfiltrange
Du coup, lorsque je fais tourner la macro RestoreFilters sur les autres feuilles, ça ne filtre que jusqu'à la ligne 231, même si les autres feuilles ont par exemple 400 lignes. Il faudraitq ue je puisse redéfinir le currentfiltrange à chaque fois que j'applique la macro RestoreFilters, mais je ne sais pas comment faire.
Maïa
bonjour Maïa,
j'ai modifié la deuxième macro comme ca :
Sub RestoreFilters() 'applique un filtre identique à la Feuil1 sur la
feuille active
Set w = ActiveSheet
With w.AutoFilter
currentFiltRange1 = .Range.Address
.AutoFilterMode = False
For col = 1 To UBound(filterArray(), 1)
If Not IsEmpty(filterArray(col, 1)) Then
If filterArray(col, 2) Then
w.Range(currentFiltRange1).AutoFilter field:=col, _
Criteria1:=filterArray(col, 1), _
Operator:=filterArray(col, 2), _
Criteria2:=filterArray(col, 3)
Else
w.Range(currentFiltRange1).AutoFilter field:=col, _
Criteria1:=filterArray(col, 1)
End If
End If
Next
End With
End Sub
isabelle
Le 2010-03-12 06:08, Maïa a écrit :
Le problème vient du fait que la macro LireFilters détecte la plage à
filtrer sur la feuille dont je veux copier le filtre => par exemple $A
$1:$IP$231 dans currentfiltrange
Du coup, lorsque je fais tourner la macro RestoreFilters sur les
autres feuilles, ça ne filtre que jusqu'à la ligne 231, même si les
autres feuilles ont par exemple 400 lignes. Il faudraitq ue je puisse
redéfinir le currentfiltrange à chaque fois que j'applique la macro
RestoreFilters, mais je ne sais pas comment faire.
Sub RestoreFilters() 'applique un filtre identique à la Feuil1 sur la feuille active Set w = ActiveSheet With w.AutoFilter currentFiltRange1 = .Range.Address .AutoFilterMode = False For col = 1 To UBound(filterArray(), 1) If Not IsEmpty(filterArray(col, 1)) Then If filterArray(col, 2) Then w.Range(currentFiltRange1).AutoFilter field:=col, _ Criteria1:=filterArray(col, 1), _ Operator:=filterArray(col, 2), _ Criteria2:=filterArray(col, 3) Else w.Range(currentFiltRange1).AutoFilter field:=col, _ Criteria1:=filterArray(col, 1) End If End If Next End With End Sub
isabelle
Le 2010-03-12 06:08, Maïa a écrit :
Le problème vient du fait que la macro LireFilters détecte la plage à filtrer sur la feuille dont je veux copier le filtre => par exemple $A $1:$IP$231 dans currentfiltrange
Du coup, lorsque je fais tourner la macro RestoreFilters sur les autres feuilles, ça ne filtre que jusqu'à la ligne 231, même si les autres feuilles ont par exemple 400 lignes. Il faudraitq ue je puisse redéfinir le currentfiltrange à chaque fois que j'applique la macro RestoreFilters, mais je ne sais pas comment faire.
Maïa
Maïa
Bonjour Isabelle,
En modifiant la macro ça marche effectivement. Merci ! J'ai enfin pu construire un fichier efficace.
Pour info, j'ai par contre j'ai remarqué que la macro ne reproduisait pas les fonctions tri croissant et tri décroissant des filtres automatiques.
Maïa
Bonjour Isabelle,
En modifiant la macro ça marche effectivement. Merci ! J'ai enfin pu
construire un fichier efficace.
Pour info, j'ai par contre j'ai remarqué que la macro ne reproduisait
pas les fonctions tri croissant et tri décroissant des filtres
automatiques.