Erreur sélection 1 paramètre dans une liste

  • Initiateur de la discussion Initiateur de la discussion Justa
  • Date de début Date de début

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 !

Justa

XLDnaute Nouveau
Bonjour à tous,

J'explique mon petit soucis.
J'ai réalisé une Userform avec différentes listes à choix multiple.
Jusque là tout va bien.
Hors si je ne sélectionne qu'1 seul paramètre de la liste, la macro bug après avoir réalisé le travail sur la sélection (comme si elle voulait une 2ème selection) avec une erreur du type :

Erreur d'execution '1004'
Erreur définie par l'application ou par l'objet


une fois le choix dans la liste effectué on lance :
Private Sub CommandButton1_Click()

Sheets("Listes").Select
Sheets.Add
ActiveSheet.Name = "ChoixClients"

Dim n As Integer
n = ListBox1.ListCount

Dim i As Integer, j As Integer
Sheets("ChoixClients").Range("A1:A" & Range("A65536").End(xlUp).Row).ClearContents
j = 0
For i = 0 To n - 1
If ListBox1.Selected(i) Then
j = j + 1
Sheets("ChoixClients").Cells(j, 1).Value = ListBox1.List(i)
End If
Next

ClientChoisis

Application.DisplayAlerts = False
Sheets("ChoixClients").Delete
Application.DisplayAlerts = True

End Sub


Si quelqu'un peut m'aider ça me sera très utile.
Merci beaucoup.
 
Re : Erreur sélection 1 paramètre dans une liste

Bonjour Justa, PierreJean 🙂,
Si je ne m'abuse, la feuille "ChoixClients" est crée en début de macro, mais il n'y a pas de test pour savoir si elle existe déjà... Ne serait-ce pas
Code:
[COLOR=#0000ff]ActiveSheet.Name = "ChoixClients"[/COLOR]
qui plante dans le cas où la feuille existe déjà ?
Bonne journée 😎
 
Re : Erreur sélection 1 paramètre dans une liste

Merci de s'interresser à mon problème.
En fait l'erreur se produit dans la macro ClientChoisis
A l'endroit suivant (rouge):

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:=31, Criteria1:=MonClient
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


Si je comprend bien ce que vba tente de faire le problème vient du fait que la sélection dans l'Userform ne peut pas se limiter à 1 élément.
Si on n'en sélectionne qu'un il tente quand même d'en réaliser un second mais n'a plus de paramètre, à la fois pour réaliser son filtre sur la feuille de base (mais ça ne bug pas) mais surtout pour renommer la feuille ainsi crée puisque son nom serait vide...

J'espère avoir été complète...
 
Re : Erreur sélection 1 paramètre dans une liste

Bonjour Justa, PierreJean 🙂,
Si je ne m'abuse, la feuille "ChoixClients" est crée en début de macro, mais il n'y a pas de test pour savoir si elle existe déjà... Ne serait-ce pas
Code:
[COLOR=#0000ff]ActiveSheet.Name = "ChoixClients"[/COLOR]
qui plante dans le cas où la feuille existe déjà ?
Bonne journée 😎

Merci.
Non je ne pense pas qu'il s'agisse de ça puisqu'en fin de procédure cette feuille est toujours détruite ...
 
Re : Erreur sélection 1 paramètre dans une liste

Re 🙂,
MonClient n'est pas déclarée, donc c'est un objet Range puisqu'il est égal à Cellule, est-ce pour celà (où parce que ta boucle essaye de créer 2 fois la même feuille, comme évoqué précédement) ?
Bonne journée 😎
 
Re : Erreur sélection 1 paramètre dans une liste

Re 🙂,
MonClient n'est pas déclarée, donc c'est un objet Range puisqu'il est égal à Cellule, est-ce pour celà (où parce que ta boucle essaye de créer 2 fois la même feuille, comme évoqué précédement) ?
Bonne journée 😎

La boucle n'essaie pas de créer 2 fois la même feuille à priori. Et lorsque je sélectionne 2 paramètre, les 2 feuilles sont bien crées et la macro s'arrête correctement.

Comment faut-il que je déclare MonClient pour résoudre le problème ?

Merci beaucoup.
 
Re : Erreur sélection 1 paramètre dans une liste

Re 🙂,
Code:
Dim MonClient As String
me paraitrait plus correct. Maintenant, n'as tu pas un nom de client avec des caractères spéciaux \ / * ? [ ] qui ne peuvent pas être pris comme noms d'onglets ? Si c'est le cas, tu peux utiliser des Replace
Code:
MonClient = Replace(MonClient, "/", "_")
pour chacun des caractères spéciaux.
Bon courage 😎
Ajout : si mon client est vide, l'erreur se déclenchera aussi.
 
Dernière édition:
- 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

Discussions similaires

Réponses
10
Affichages
300
Réponses
5
Affichages
293
Réponses
10
Affichages
800
Réponses
7
Affichages
173
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
665
Retour