Filtre et plage de cellules
pascalou83400
Messages postés
277
Date d'inscription
Statut
Membre
Dernière intervention
-
pascalou83400 Messages postés 277 Date d'inscription Statut Membre Dernière intervention -
pascalou83400 Messages postés 277 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
S.O.S j'ai écrit ce code dans une boucle de 12 feuilles qui ne fonctionne pas comme j'aurais voulu, je demande de mettre les filtres sur ma ligne 17, avec le code suivant :
Range("A17:A17").Select
With Selection
.AutoFilter
End With
Sauf que , comme je lui demande d'appuyer sur le bouton (enfin j'imagine) une fois il met le filtre et une fois il l'enlève.
Et je ne vois pas comment lui demandait de le mettre et basta ???
J'ai trouvé ce code , mais c'est toujours le même problème.
If Not Worksheets(I).AutoFilterMode Then Worksheets(I).[A17].AutoFilter
Et ma 2eme question est la suivante :
si dans le code .Cells(Cel.Row, 3).Interior.ColorIndex = 4 , je veux déclarer une plage de cellules (ex A à C), on l'écrit comment ?
Merci pour votre aide.
A+
Pascal
S.O.S j'ai écrit ce code dans une boucle de 12 feuilles qui ne fonctionne pas comme j'aurais voulu, je demande de mettre les filtres sur ma ligne 17, avec le code suivant :
Range("A17:A17").Select
With Selection
.AutoFilter
End With
Sauf que , comme je lui demande d'appuyer sur le bouton (enfin j'imagine) une fois il met le filtre et une fois il l'enlève.
Et je ne vois pas comment lui demandait de le mettre et basta ???
J'ai trouvé ce code , mais c'est toujours le même problème.
If Not Worksheets(I).AutoFilterMode Then Worksheets(I).[A17].AutoFilter
Et ma 2eme question est la suivante :
si dans le code .Cells(Cel.Row, 3).Interior.ColorIndex = 4 , je veux déclarer une plage de cellules (ex A à C), on l'écrit comment ?
Merci pour votre aide.
A+
Pascal
A voir également:
- Filtre et plage de cellules
- Photo filtre 7 gratuit - Télécharger - Retouche d'image
- Formule excel pour additionner plusieurs cellules - Guide
- Filtre whatsapp - Accueil - Messagerie instantanée
- Verrouiller cellules excel - Guide
- Filtre teams - Accueil - Visio
15 réponses
Bonjour Pascal
Pas bien compris ta première question. La fonction AutoFilter nécessite des arguments (Field et Criteria1 au moins) sinon elle supprime le filtre automatique...
Pour ta deuxième question, essaie :
ou
Pas bien compris ta première question. La fonction AutoFilter nécessite des arguments (Field et Criteria1 au moins) sinon elle supprime le filtre automatique...
Pour ta deuxième question, essaie :
.Range(.Cells(Cel.Row, 1), .Cells(Cel.Row, 3)).Interior.ColorIndex = 4
ou
.Cells(Cel.Row,1).Resize(1, 3).Interior.ColorIndex = 4
Bonjour ThauTheme,
Merci pour ton aide je vais essayer ton code.
Pour ma 1ere question, je cherche à mettre le filtre sur toutes mes feuilles en passant par le vba.
Mais je ne sais pas comment l'écrire dans ma boucle.
A+
Pascal
Merci pour ton aide je vais essayer ton code.
Pour ma 1ere question, je cherche à mettre le filtre sur toutes mes feuilles en passant par le vba.
Mais je ne sais pas comment l'écrire dans ma boucle.
A+
Pascal
Re,
Peut-être comme ça (Field et Criteria1 à compléter)
Peut-être comme ça (Field et Criteria1 à compléter)
Dim O As Worksheet 'déclare la variable O (onglets) For Each O In Sheets 'boucle sur tous les onglets O du classeur 'si l'onglet O n'est pas filtré, utilise le filtre automatique en A17 If O.FilterMode = False Then O.Range("A17").AutoFilter Field:=..., Criteria1:=... Next O 'prochain onglet de la boucle
ha oui je crois comprendre pourquoi ma question n'est pas explicite.
Je cherche à mettre le filtre mais uniquement le menu déroulant (les petits carrés) pour pouvoir l'utiliser à la demande.
Je cherche à mettre le filtre mais uniquement le menu déroulant (les petits carrés) pour pouvoir l'utiliser à la demande.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
Dans ce cas...
Devrait fonctionner.
Dans ce cas...
Dim O As Worksheet 'déclare la variable O (onglets) For Each O In Sheets 'boucle sur tous les onglets O du classeur 'si l'onglet O n'est pas filtré, utilise le filtre automatique en A17 If O.FilterMode = False Then O.Range("A17").AutoFilter Next O 'prochain onglet de la boucle
Devrait fonctionner.
Bon pour la plage pas de problème ça marche, je t'en remercie.
Si je peux abuser comment je peux mettre les cellules en fond neutre, car je n'ai pas toujours la même sélection donc je dois enlever les cellules vertes avant de faire à nouveau le passage de la sélection.
J'ai écrit ce code mais ca ne fonctionne pas.
' Met les celulle en vert dans la colonne C si dans Colonne AK = "Notre Sélection" ThemeColor = xlThemeColorDark1
Dim Cel As Range
'Nom de feuille à adapter ' ActiveWorkbook.Worksheets("Feuil1")'
With Worksheets(I)
'Balayage de la colonne AK, jusqu'à la dernière cellule renseignée
For Each Cel In .Range("AK18:AK" & .Range("AK" & Rows.Count).End(xlUp).Row)
'Si la cellule contient "Notre Sélection"
If Cel.Value = "Notre Sélection" Then
'alors, remplir la cellule correspondante en colonne A/D en vert
.Cells(Cel.Row, 1).Resize(1, 4).Interior.ColorIndex = 4
' mais si il n'y a pas Notre Selection alors on met un fond neutre
.Cells(Cel.Row, 1).Resize(1, 4).Interior.ColorIndex = 4
Else
If Cel.Value = " " Then
.Cells(Cel.Row, 3).Interior.ColorIndex = xlNone
End If
Next Cel
End With
Mais pour le code du filtre je n'ai pas tout compris la déclaration de l'onglet 0.
Bonne Soirée.
Pascal
Si je peux abuser comment je peux mettre les cellules en fond neutre, car je n'ai pas toujours la même sélection donc je dois enlever les cellules vertes avant de faire à nouveau le passage de la sélection.
J'ai écrit ce code mais ca ne fonctionne pas.
' Met les celulle en vert dans la colonne C si dans Colonne AK = "Notre Sélection" ThemeColor = xlThemeColorDark1
Dim Cel As Range
'Nom de feuille à adapter ' ActiveWorkbook.Worksheets("Feuil1")'
With Worksheets(I)
'Balayage de la colonne AK, jusqu'à la dernière cellule renseignée
For Each Cel In .Range("AK18:AK" & .Range("AK" & Rows.Count).End(xlUp).Row)
'Si la cellule contient "Notre Sélection"
If Cel.Value = "Notre Sélection" Then
'alors, remplir la cellule correspondante en colonne A/D en vert
.Cells(Cel.Row, 1).Resize(1, 4).Interior.ColorIndex = 4
' mais si il n'y a pas Notre Selection alors on met un fond neutre
.Cells(Cel.Row, 1).Resize(1, 4).Interior.ColorIndex = 4
Else
If Cel.Value = " " Then
.Cells(Cel.Row, 3).Interior.ColorIndex = xlNone
End If
Next Cel
End With
Mais pour le code du filtre je n'ai pas tout compris la déclaration de l'onglet 0.
Bonne Soirée.
Pascal
Re,
Ton code corrigé :
une autre méthode (non testée) :
J'ai déclaré l'onglet O pour boucler avec une variable mais rien ne t'empêche de la déclarer Sh et de boucler For Each Sh in Sheets...
Ton code corrigé :
Dim PL As Range Dim PLV As Range ' Met les celulle en vert dans la colonne C si dans Colonne AK = "Notre Sélection" ThemeColor = xlThemeColorDark1 Dim Cel As Range 'Nom de feuille à adapter ' ActiveWorkbook.Worksheets("Feuil1")' With Worksheets(I) 'Balayage de la colonne AK, jusqu'à la dernière cellule renseignée For Each Cel In .Range("AK18:AK" & .Range("AK" & Rows.Count).End(xlUp).Row) 'Si la cellule contient "Notre Sélection" If Cel.Value = "Notre Sélection" Then 'alors, remplir la cellule correspondante en colonne A/D en vert .Cells(Cel.Row, 1).Resize(1, 4).Interior.ColorIndex = 4 Else ' mais si il n'y a pas Notre Selection alors on met un fond neutre .Cells(Cel.Row, 3).Resize(1, 4).Interior.ColorIndex = xlNone End If Next Cel End With
une autre méthode (non testée) :
Dim PL As Range Dim PLV As Range 'Nom de feuille à adapter ' ActiveWorkbook.Worksheets("Feuil1")' With Worksheets(I) Set PL = .Range("A18:D" & .Cells(Application.Rows.Count, 1).End(xlUp).Row) PL.Interior.ColorIndex = xlNone .Range("A17").AutoFilter Field:=37, Criteria1:="Notre Sélection" Set PLV = PL.SpecialCells(xlCellTypeVisible) PLV.Interior.ColorIndex = 4 .Range("A17").AutoFilter End With
J'ai déclaré l'onglet O pour boucler avec une variable mais rien ne t'empêche de la déclarer Sh et de boucler For Each Sh in Sheets...
Bonjour ThauTheme,
Désolé de le retour tardif, merci pour tes réponses, je vais mettre en pratique tes codes et je te reviens vers toi.
Encore mille mercis.
Bonne journée
Pascal
Désolé de le retour tardif, merci pour tes réponses, je vais mettre en pratique tes codes et je te reviens vers toi.
Encore mille mercis.
Bonne journée
Pascal
Bon je n'ai pas reussi à inserer le code autofilter dans la boucle.
Je mets la boucle avec laquelle je travaille :
Sub Rognerunrectangleavecuncoindiagonal3_Cliquer()
' Variables globales
Dim nbWS As Integer
Dim totalRows As Integer
Dim totalCols As Integer
Dim CheminFichier As String
Dim NomFichier As String
nbWS = ActiveWorkbook.Worksheets.Count
' Chez Pascal
CheminFichier = "W:\PALMACEA Commun\Tarifs et Dispo clients PALMACEA\Tarifs PALMACEA\Tarifs départ clients PALMACEA\ESPAGNE\"
For I = 1 To 1 ' nbWS - 1
NomFichier = ActiveWorkbook.Worksheets(I).Name
j'ai mis :
Dim O As Worksheets(I) 'déclare la variable O (onglets)
For Each O In Sheets 'boucle sur tous les onglets O du classeur
'si l'onglet O n'est pas filtré, utilise le filtre automatique en A17
If O.FilterMode = False Then O.Range("A17").AutoFilter
Next O 'prochain onglet de la boucle
Je n'ai pas tout compris le code ?
Merci pour ton aide.
Bonne soirée
Pascal
Je mets la boucle avec laquelle je travaille :
Sub Rognerunrectangleavecuncoindiagonal3_Cliquer()
' Variables globales
Dim nbWS As Integer
Dim totalRows As Integer
Dim totalCols As Integer
Dim CheminFichier As String
Dim NomFichier As String
nbWS = ActiveWorkbook.Worksheets.Count
' Chez Pascal
CheminFichier = "W:\PALMACEA Commun\Tarifs et Dispo clients PALMACEA\Tarifs PALMACEA\Tarifs départ clients PALMACEA\ESPAGNE\"
For I = 1 To 1 ' nbWS - 1
NomFichier = ActiveWorkbook.Worksheets(I).Name
j'ai mis :
Dim O As Worksheets(I) 'déclare la variable O (onglets)
For Each O In Sheets 'boucle sur tous les onglets O du classeur
'si l'onglet O n'est pas filtré, utilise le filtre automatique en A17
If O.FilterMode = False Then O.Range("A17").AutoFilter
Next O 'prochain onglet de la boucle
Je n'ai pas tout compris le code ?
Merci pour ton aide.
Bonne soirée
Pascal
Re,
Difficile de comprendre un bout de code, je préfère avoir l'intégralité pour mieux le cerner...
Si tu mélanges les deux boucles ça va pas marcher. Essaie comme ça :
Difficile de comprendre un bout de code, je préfère avoir l'intégralité pour mieux le cerner...
Si tu mélanges les deux boucles ça va pas marcher. Essaie comme ça :
Sub Rognerunrectangleavecuncoindiagonal3_Cliquer() ' Variables globales Dim nbWS As Integer Dim totalRows As Integer Dim totalCols As Integer Dim CheminFichier As String Dim NomFichier As String nbWS = ActiveWorkbook.Worksheets.Count ' Chez Pascal CheminFichier = "W:\PALMACEA Commun\Tarifs et Dispo clients PALMACEA\Tarifs PALMACEA\Tarifs départ clients PALMACEA\ESPAGNE\" For I = 1 To nbWS - 1 NomFichier = ActiveWorkbook.Worksheets(I).Name 'si l'onglet O n'est pas filtré, utilise le filtre automatique en A17 If Sheets(I).FilterMode = False Then Sheets(I).Range("A17").AutoFilter Next I 'prochain onglet de la boucle End Sub
Bonjour THAUTHEME
Bon la je sèche, impossible de le mettre dans la boucle, voila le dernier code que j'ai écrit, après x essais :
' Dim O As Worksheet 'déclare la variable O (onglets)
With Worksheets(I)
For Each Sheets(I) In Worksheets(I) 'boucle sur tous les onglets O du classeur
'si l'onglet O n'est pas filtré, utilise le filtre automatique en A17
If Sheets(I).FilterMode = False Then Sheets(I).Range("A17").AutoFilter
End If
Next I 'prochain onglet de la boucl
end with
Merci pour ta patience.
Bonne journée
Pascal
Bon la je sèche, impossible de le mettre dans la boucle, voila le dernier code que j'ai écrit, après x essais :
' Dim O As Worksheet 'déclare la variable O (onglets)
With Worksheets(I)
For Each Sheets(I) In Worksheets(I) 'boucle sur tous les onglets O du classeur
'si l'onglet O n'est pas filtré, utilise le filtre automatique en A17
If Sheets(I).FilterMode = False Then Sheets(I).Range("A17").AutoFilter
End If
Next I 'prochain onglet de la boucl
end with
Merci pour ta patience.
Bonne journée
Pascal
Re,
Pourquoi tu compliques ?!...
Soit tu utilises la liste des onglets du classeur avec une variable de type objet Worksheet que tu nomes à ta convenance (j'utilise O par exemple) et tu boucles For Each O in Sheets, soit tu utilises le nombre des onglets du classeur avec une variable de type Integer que tu nommes a ta convenance (I par exemple) et tu boucles For I = 1 to Sheets.Count. Toi, tu mélanges les deux ce n'est pas possible. Voici les deux possibilités qui fonctionnent :
Pourquoi tu compliques ?!...
Soit tu utilises la liste des onglets du classeur avec une variable de type objet Worksheet que tu nomes à ta convenance (j'utilise O par exemple) et tu boucles For Each O in Sheets, soit tu utilises le nombre des onglets du classeur avec une variable de type Integer que tu nommes a ta convenance (I par exemple) et tu boucles For I = 1 to Sheets.Count. Toi, tu mélanges les deux ce n'est pas possible. Voici les deux possibilités qui fonctionnent :
Dim O as Worksheet For Each O in Sheets If O.FilterMode = False Then O.Range("A17").AutoFilter Next O
Dim I as Integer For I = 1 To Sheets.Count If Sheets(I).FilterMode = False Then Sheets(I).Range("A17").AutoFilter Next I
je n'arrive pas à comprendre les codes.
j'ai essayé les 2 celui la plante au niveau de O.Range("A17").AutoFilter
Dim O As Worksheet
For Each O In Sheets
If O.FilterMode = False Then O.Range("A17").AutoFilter
Next O
et le 2eme il ne passe pas du tout.
Désolé je suis plus que novice.
j'ai essayé les 2 celui la plante au niveau de O.Range("A17").AutoFilter
Dim O As Worksheet
For Each O In Sheets
If O.FilterMode = False Then O.Range("A17").AutoFilter
Next O
et le 2eme il ne passe pas du tout.
Désolé je suis plus que novice.
Bonjour,
On va pas y passer 20 ans ! Place ton fichier chez un hébergeur quelconque, explique ce que tu désires précisément et on trouvera peut-être une solution à ton problème...
On va pas y passer 20 ans ! Place ton fichier chez un hébergeur quelconque, explique ce que tu désires précisément et on trouvera peut-être une solution à ton problème...
Bonjour ThauTheme,
Je te remercie pour ton aide, je sais je ne suis pas très doué en vba.
J'avance à petit pas, et tu fais parti des gens qui m'ont fait avancer avec une grande patience.
Pour ma part si tu as besoin de conseil en jardinage, la c'est mon domaine et ça sera avec grand plaisir.
Encore merci.
Bonne Week end.
Pascal
Je te remercie pour ton aide, je sais je ne suis pas très doué en vba.
J'avance à petit pas, et tu fais parti des gens qui m'ont fait avancer avec une grande patience.
Pour ma part si tu as besoin de conseil en jardinage, la c'est mon domaine et ça sera avec grand plaisir.
Encore merci.
Bonne Week end.
Pascal