Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Voila j'ai un petit soucis avec les sélection de mes ListBox :
Mes ListBox s'alimentent via une feuille "Listes".
Après je selectionne les clients dont je souhaite les informations dans la ListBox.
Le résultat de la sélection alimente une feuille crée pour cela.
Je récupère alors chacun des clients sélectionnés dans la feuille pour réaliser un filtre sur une base de données.
Le problème arrive lorsque je n'ai selectionné qu'1 seul client.
Ma macro réalisant le filtre "veut" au moins 2 selections j'ai l'impression.
Voici mon code pour les filtres :
Sub ClientChoisis()
'Extrait les clients dans le même classeur
Dim ZoneJour As Range
Dim cellule As Range
Sheets("ChoixClients").Select
Range("A1").Select
Set ZoneClient = Range(Selection, Selection.End(xlDown))
For Each cellule In ZoneClient
MonClient = cellule
Ne pouvant pas tester ta macro en situation réel, faute de fichier, je ne peux être catégorique, mais à mon avis, ton soucis provient plutôt de cela :
Code:
Set ZoneClient = Range(Selection, [COLOR="Navy"][B]Selection.End(xlDown)[/B][/COLOR])
Lorsque tu n'as qu'un seul client (en A1), et que tu exécute le code suivant : Selection.End(xlDown)
Sauf erreur, Excel sélectionne de A1 à A65536 soit une cellule avec un nom de client et 65.535 cellules vide! D'où le bug.
Si je peux me permettre une dernière remarque, organise mieux ton code : cf. message suivant
Voici ton code ré-organisé, légèrement simplifié et complété pour gérer ton soucis (n'ayant pu tester le code sur ton tableau, je ne garantis pas son bon fonctionnement à 200%, mais normalement c'est bon)
Code:
Sub ClientChoisis()
'Extrait les clients dans le même classeur
Dim ZoneJour As Range
Dim cellule As Range
Sheets("ChoixClients").[A1].Select
If [A2] = "" Then
Set ZoneClient = Range("A1")
Else
Set ZoneClient = Range(Selection, Selection.End(xlDown))
End If
For Each cellule In ZoneClient
MonClient = cellule
Sheets("Base").[A1].Select
Selection.AutoFilter Field:=36, Criteria1:=MonClient
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Sheets("Base").Select
Sheets.Add
ActiveSheet.Paste
[A1].Select
ActiveSheet.Name = MonClient
[COLOR="Navy"] [A1].Select[/COLOR]
Sheets("Base").Select
Application.CutCopyMode = False
Selection.AutoFilter
[A1].Select
Application.CutCopyMode = False
Next
End Sub
J'ai laissé cette ligne : [A1].Select à tout hasard, mais je ne vois pas bien ce qu'elle apporte au code!
Sub ClientChoisis()
Dim ZoneClient As Range
Dim Cellule As Range
With Sheets("ChoixClients")
Set ZoneClient = .Range("A1:A" & .Range("A65000").End(xlUp).Row)
For Each Cellule In ZoneClient
MonClient = Cellule.Value
Sheets.Add
ActiveSheet.Name = MonClient
With Sheets("Base")
.AutoFilterMode = False
.Range("A1").AutoFilter Field:=36, Criteria1:=MonClient
.Cells.SpecialCells(xlCellTypeVisible).Copy Sheets(MonClient).Range("A1")
End With
Next
End With
End Sub
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD