virgule dans liste validation

  • Initiateur de la discussion Initiateur de la discussion adrien
  • 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 !

A

adrien

Guest
Bonjour à tous

J'aimerais bien créer a partir de vba des listes de validation. Mais certaines données contiennent des virgules et donc il le prend comme séparateur de données. Comment pourrais-je faire pour le forcer comme caractère et non séparateur ?

Merci d'avance
 
voila un exemple bidon :

Range('A1').Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:='a,b;c'

c'est le code que vba génére lorsque j'enregistre une macro, en créant une liste avec 2 éléments : 'a,b' et 'c'.
Mais lorsque j'exécute ce code vba, il me créé cette fois ci une liste avec 2 éléments : 'a' et 'b;c'.

Voila où est mon problème (j'ai excel 2003)

Adrien
 
Je sais pas si j'ai bien compris, mais tu pourrais peut être essayer de déclarer tes listes (ou plages de données) auparavant par VBA.

Dans le cas ou a et b sont 2 plages de données , tu peux faire (à mettre avant le code de ta liste de validation):
Code:
 Union(range('a'), range('b')).name = 'liste1'
dans le cas ou ce ne sont que des cellules, tu peux faire un code du style:
Code:
range('A1:B2').name = 'liste1'

ensuite, tu change légèrement le code de ta liste de validation:
Code:
Range('A1').Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= xlBetween, Formula1:='liste1 ,c'
si ca marche pas, tu peux essayer de changer ',' en ';', ou encore de faire du 'formula1 = 'liste1' & 'c'

Tiens nous au courant

Bon courage
Arnaud
 
En fait, mes valeurs a, b et c ne sont pas des plages de cellules mais du texte. j'ai mal choisi mon exemple donc je vais en donner un autre.

Je veux par exemple mettre dans une liste les valeurs '20' et '10,5'.
Si j'enregistre une macro en créant cette liste a la main, le code vba me donne :
Range('BH1').Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:='20;10,5'
end with

Mais si, sans toucher à ce code, je l'exécute à nouveau avec F5, il me créé une liste avec les valeurs '20;10' et '5'.
Et si j'inverse les ',' avec les ';', j'obtiens '10;5' au lieu de '10,5' donc ca ne me conviens pas trop.

Merci
 
et tu peux pas mettre tes valeures dans une cellule ??? ca leur permettrait en plus d'être évolutive plutôt que de devoir te retaper ton code à modifier à chaque fois.

Si par exemple ce sont des prix dans ta liste de validation, tu peux choisir de mettre tt tes prix dans la feuille 2 par exemple, les uns en dessous des autres, et avec le code suivant, ca devrait marcher. En plus tu peux rajouter des données, ca le prend en compte tt seul...
Code:
Dim premier as integer ' pour enregistrer le 1er élément de la liste
Dim i as long

premier = true
with sheets('feuil2')
      For i = 1 To .Range('A65536').End(xlUp).Row
            If premier Then
                .Cells(i, 1).Name = 'prix': premier = False
            Else
                Union(Range('prix'), .Cells(i, 1)).Name = 'prix'
            End If
      Next i
end with
'ce code a pour effet de sélectionner et de nommer ttes les valeurs contenues dans la colonne A de la feuille 2 et de les nommer 'prix'
ensuite tu met ton code de liste de validation, comme tt à l'heure, et t'adapte le nom de la formule au nom que t'as donné juste au dessus.

En espérant avoir été assez clair et pu t'aider..

A+
Arnaud

PS: il faut supprimer tt les &nbs p, je sais pas ce que c'est...

Message édité par: adebrux, à: 14/11/2005 15:52

Message édité par: adebrux, à: 14/11/2005 15:54
 
Ok merci beaucoup,
j'espérais ne pas avoir à conserver les valeurs des listes dans une feuille étant donné que j'ai beaucoup de listes.
Ca me prendra pas mal de place en mémoire. mais au moins ca marchera.

merci
Adrien
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
8
Affichages
294
Réponses
5
Affichages
162
Retour