Pb ListBox 1 seule selection

Justa

XLDnaute Nouveau
Bonjour,

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

Sheets("Base").Select
Range("A1").Select

Selection.AutoFilter Field:=36, Criteria1:=MonClient

Lorsqu'il n'y a qu'un seul client dans la liste, pour le 2ème filtre MonClient = Vide


Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Sheets("Base").Select
Sheets.Add
ActiveSheet.Paste
Range("A1").Select
ActiveSheet.Name = MonClient

Range("A1").Select

Sheets("Base").Select
Application.CutCopyMode = False
Selection.AutoFilter
Range("A1").Select

Application.CutCopyMode = False

Next
End Sub


Merci de votre aide.

Justine
 

Excel-lent

XLDnaute Barbatruc
Re : Pb ListBox 1 seule selection

Bonsoir et bienvenu sur le forum Justa,

Rien à redire sur ce post!

Formules de politesse, question posé correctement et de façon clair.

Mais par contre, si je peux me permettre, concernant ton précédant post tu aurais pu répondre, ou tout au moins remercier JCGL pour sa réponse!

Ca ne coute rien et fait toujours plaisir et montre que tu porte un minimum d'intérêt à la réponse concernant TA question! ;)

Justa à dit:
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

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!

Bonne Pâque
 

kjin

XLDnaute Barbatruc
Re : Pb ListBox 1 seule selection

Bonsoir,
Salut Excel-lent :)
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
Bin comme toi, sans fichier...
A+
kjin
 

Discussions similaires

Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
312 305
Messages
2 087 089
Membres
103 464
dernier inscrit
Inconnu2