[déplacé VB.NET -> VBA] Soucis dans l'emploi d'une string en argument

Signaler
Messages postés
3
Date d'inscription
mardi 15 septembre 2009
Statut
Membre
Dernière intervention
17 septembre 2009
-
Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
-
Salut,

Je dois développer une macro Excel qui doit aller chercher dans une feuille une liste d'entités (des clients) qui serviront dans une autre feuille à créer un menu déroulant pour sélectionner le client dans la liste (procédure de validation)...

Voici le code :

Sub UpD()
Dim chaine As String
i = 2
While Sheets(2).Cells(i, 1) <> ""
chaine = chaine & Chr(34) & Sheets(2).Cells(i, 1)
i = i + 1
Wend

With Columns("B:B").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=chaine
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub

Problème : Dans le menu déroulant qui apparait sur chaque case de ma colonne B j'ai ça :

;client1;client2;client3

alors que je voudrais ça bien évidemment ça :

client1
client2
client3

Ce qui est marrant, c'est que si je vais dans le menu Validation à la main et que je tape la même chose (;client1;client2;client3) puis que je valide, je trouve mes clients bien en ligne !

Bon, je suis d'un niveau plus que ridicule en VB, mais quand même...

8 réponses

Messages postés
372
Date d'inscription
vendredi 27 juillet 2007
Statut
Membre
Dernière intervention
22 juillet 2013
1
Bonjour ,
J'ai eu le meme problème que toi.
La programmation de la liste deroulante avec
l'instruction "Validation" pose problème
dans la liste des trop longues.
La variable "Chaine" trop peut être.Trop de
client ???
J'ai trouvé une autre solution en programmant
un combobox prit dans la barre d'outil
"Formulaire".
Du genre:
Feuil3.Shapes("drop down 11").ControlFormat.AddItem ("text") pour
remplir le combobox ainsi que ca position dans
la cellule.
Je ne programme plus avec "validation".
A++
Messages postés
3
Date d'inscription
mardi 15 septembre 2009
Statut
Membre
Dernière intervention
17 septembre 2009

Bonjour et merci de ta réponse.
Malheureusement, je ne pense pas que ce soit un problème de longueur de chaine, celle pour tester la macro étant constituée de 3 clients.
Merci pour ta solution, malheureusement elle convient mal à mes besoins et aux souhaits de mon boss de stage ! Et aussi, je voudrais vraiment comprendre ce qui se passe pour que "Validation" me refuse ma liste !!!
Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
1
Salut

[quote= NoEnclumeSVP]je voudrais vraiment comprendre ce qui se passe pour que "Validation" me refuse ma liste !!!/quote

Parce que dans l'aide d'Excel il est dit qu'il faut utiliser une virgule pour séparer les éléments de la liste.

chaine  = chaine & "," & Sheets(2).Cells(i, 1)


Pour ce qui est de ton code de remplissage de la variable chaine, à la sortie tu vas te retrouver avec un truc du genre: ",client1,client2,client3"
Avec donc une virgule au début.
Ca marche quand même mais ce n'est pas propre je trouve. A toi de voir.

Bon courage pour la suite et pense à utiliser l'aide, tu peux obtenir rapidement des réponses.

A+
Messages postés
372
Date d'inscription
vendredi 27 juillet 2007
Statut
Membre
Dernière intervention
22 juillet 2013
1
Bonjour ,
Ayr ,
Je n'ai pas vu qu'il utilisait le point-virgule.
Effectivement , cela ne peut pas fonctionnement.
Mais les explications que j'ai donné sont
valables avec une virgule.
Meme avec une virgule , et dès que la chaine
était trop long ,ça ne fonctionnait plus.
Je ne sais pas pourquoi ?

As tu tester "validation" avec une longue chaine ?

DEDENET2
Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
1
Bonjour dedenet2

je viens de tester avec 1000 valeurs et ça à marché; Mais il faut dire que c'est sur Excel 2007. Peut être il y a-t-il un bug avec les version antèrieurs. Je ne peux pas tester.
Messages postés
372
Date d'inscription
vendredi 27 juillet 2007
Statut
Membre
Dernière intervention
22 juillet 2013
1
Bonjour Ayr,
Je travaille encore avec Excel 2000.
C'est peut être le problème !

NoEnclumeSVP ,
As tu reussi à programmer "validation" ?

Dedenet2
Messages postés
3
Date d'inscription
mardi 15 septembre 2009
Statut
Membre
Dernière intervention
17 septembre 2009

Oui oui oui, tout marche nickel, merci z'a tous pour vos réponses... J'ai pas pu jeter de coup d'oeil dans l'aide vu qu'elle n'est pas installée sur le poste où je bosse, et vu que mettre des ; marche aussi en entrant une liste de choix dans le menu Validation je n'ai pas cherché à mettre autre chose...
Avouez que c'est quand même curieux
Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
1
Ben oui, j'aurai commencé avec le point virgule aussi, surtout que l'enregistreur de macro en mets lui aussi... le petit salopiaud