Filtre et plage de cellules
Fermé
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
-
20 oct. 2015 à 08:17
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022 - 24 oct. 2015 à 10:17
pascalou83400 Messages postés 273 Date d'inscription dimanche 20 juillet 2014 Statut Membre Dernière intervention 24 janvier 2022 - 24 oct. 2015 à 10:17
A voir également:
- Filtre et plage de cellules
- Photo filtre gratuit - Télécharger - Retouche d'image
- Excel additionner des cellules - Guide
- Verrouiller cellules excel - Guide
- Filtre manga - Guide
- Fonction filtre excel n'existe pas - Forum Excel
15 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
20 oct. 2015 à 10:24
20 oct. 2015 à 10:24
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
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
20 oct. 2015 à 14:22
20 oct. 2015 à 14:22
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
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
20 oct. 2015 à 14:50
20 oct. 2015 à 14:50
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
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
20 oct. 2015 à 15:51
20 oct. 2015 à 15:51
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
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
20 oct. 2015 à 16:09
20 oct. 2015 à 16:09
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.
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
20 oct. 2015 à 21:51
20 oct. 2015 à 21:51
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
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
21 oct. 2015 à 16:54
21 oct. 2015 à 16:54
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...
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
22 oct. 2015 à 18:10
22 oct. 2015 à 18:10
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
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
22 oct. 2015 à 19:17
22 oct. 2015 à 19:17
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
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
22 oct. 2015 à 23:33
22 oct. 2015 à 23:33
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
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
23 oct. 2015 à 09:25
23 oct. 2015 à 09:25
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
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
23 oct. 2015 à 16:41
23 oct. 2015 à 16:41
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
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
23 oct. 2015 à 19:48
23 oct. 2015 à 19:48
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.
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
24 oct. 2015 à 09:42
24 oct. 2015 à 09:42
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...
pascalou83400
Messages postés
273
Date d'inscription
dimanche 20 juillet 2014
Statut
Membre
Dernière intervention
24 janvier 2022
24 oct. 2015 à 10:17
24 oct. 2015 à 10:17
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