données Validation par macro

pierrejean

XLDnaute Barbatruc
bonjour a tous

mon probleme:

entrer une liste elaborée par macro dans données validation d'une cellule

dans le fichier ci-joint sur une ligne j'ais des infos avec des doublons
par macro je crée un string (sans les doublons) que je mets en validation
malheureusement le resultat n'est pas celui espéré
Comparez les cellules A2 et A4

et merci d'avance pour la solution (ou au moins une piste)

Pierre
 

Pièces jointes

  • donnees_validation.xls
    26.5 KB · Affichages: 97

fifi

XLDnaute Occasionnel
Re : données Validation par macro

désoél Pierrejean , je ne voies pas comment faire :s
ton code est déjà un petit niveau au desssus de celui que je fait.


mai sje profite de ton post pour ajouter une question sur les liste de validation (si tu permets bien sur).
comment faire pour que la source de la liste de validation soit extérieur à la feuille? il y a une combien ou bien...


Et justement la question que tu poses au forum devrait me permettre de contourner ce probléme.


Fifi le Lyonnais :D
 

Pierrot93

XLDnaute Barbatruc
Re : données Validation par macro

Bonjour Pierrejean, Fifi

A priori, il faut plutôt mettre des "," dans le code plutôt que des ";" :

Code:
For n = 1 To Coldiv.Count
liste = liste & Coldiv(n) & ","
Next n

A près test, chez moi ca marche

cf aide vba

XlValidateList Formula1 obligatoire. Formula2 ignoré. L'argument Formula1 doit contenir soit une liste de valeurs délimitées par des virgules, soit une référence de feuille de calcul à cette liste.

bonne soirée à toi
@+

PS pour FIFI, utiliser les plages nommées, insertion, noms,
 
Dernière édition:

Taoueret

XLDnaute Nouveau
Re : données Validation par macro

Bonjour à tous,
J'ai un problème avec la construction de ma liste.
je récupère des données d'une base Oracle et je construis ma liste à l'aide du recordset :
Code:
    'create the list of elements
    While Not rs.EOF
        mylist = mylist & rs.Fields(0) & ","
        rs.MoveNext
    Wend
    mylist = Left(mylist, Len(mylist) - 1)

    target.Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=mylist
        ...
    Wend
Mon problème vient du fait que j'ai des enregistrements du style "nom,prenom" Et il me considère la virgule comme un séparateur. J'ai donc au final dans ma liste déroulante une ligne nom une ligne prenom. Comment éviter ce problème? J'ai essayé en mettant "nom,prenom" entre guillemets ( mylist = mylist &"""" & rs.Fields(0) & """," ) mais ça m'affiche "nom sur une ligne et prenom" sur la suivante... :mad:

En espérant que vous pourrez m'aider
 

pierrejean

XLDnaute Barbatruc
Re : données Validation par macro

bonjour Taoueret

A tester:
Code:
'create the list of elements
    While Not rs.EOF
        mylist = mylist & rs.Fields(0) & "[COLOR=red];[/COLOR]"
        rs.MoveNext
    Wend
    mylist = Left(mylist, Len(mylist) - 1)
    [COLOR=red]mylist=replace(mylist,","," ")[/COLOR]
[COLOR=red]    mylist=replace(mylist";",",")
[/COLOR]    target.Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=mylist
        ...
    Wend
 

Taoueret

XLDnaute Nouveau
Re : données Validation par macro

effectivement ça marche mais pour des raisons de visibilié, je souhaite vraiment afficher la virgule (j'ai des personnes avec plusieurs nom et prénoms)... Quand les données sont dans des cellules, il se fiche pas mal de la virgule... Si tu as une aure idée qui me permettrait de garder la virgule, je suis preneuse :)

Merci
 

pierrejean

XLDnaute Barbatruc
Re : données Validation par macro

re

la seule voie que je puisse entrevoir consiste a passer par le relais d'une plage de cellule

quelque chose du genre (a adapter pour utiliser une colonne libre : ds l'exemple la colonne B)

A tester

Code:
ligne = 1
While Not rs.EOF
  Range("B" & ligne) = rs.Fields(0)
  rs.MoveNext
  ligne = ligne + 1
Wend
formule = "=$B$1:$B$" & ligne - 1
target.Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=formule        ...
    Wend
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 228
Messages
2 086 421
Membres
103 205
dernier inscrit
zch