Bonjour,
L'enregistreur de macro n'a pas faux, mais le code ne donne pas le résutat escompté, voici pourquoi...
issu du fil :http://www.developpez.net/forums/sho...d.php?t=559144
Twims a créé une validation de données avec l'enregistreur de macro... avec le résultat suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Sub Macro1() With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="25;75;95" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With End SubSolution :Lorsque je le mets dans mon code, une liste déroulante se crée bien a l'endroit voulu, mais, bizarrement, au lieu d'avoir 3 choix (25 75 95), je n'ai qu'un choix (25;75;95). Encore plus étrange (enfin pour moi...), lorsque j'ouvre le menu Données > Validation et que je clique sur ok dans la boite de dialogue qui s'est ouverte (sans rien toucher aux paramètres), la liste s'affiche correctement (avec les 3 choix l'un en dessous de l'autre).
Je suis perdu la...
où est le problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Sub ItsOK() With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="25,75,95" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With End Sub
tu n'as pas fait d'erreur et l'enregistreur non plus ...
L'explication vient du fonctionnement des divers séparateurs, le séparateur de listes est lié au choix du séparateur décimal en France la virgule, ce qui nous donne le ";" en liste par défaut. C'est l'inverse aux US..
Dans Excel, si tu insères des formules par le tableau, elles sont en Français, si tu passes par vba, elles sont en anglais.
Dans la validation de données, le séparateur de liste du tableau est le ";" mais en vba, c'est la ","
Donc quand tu utilises l'enregistreur, il fonctionne bien, mais basiquement sans opérer la conversion
Ton code est donc faux en vba, mais il est inscrit (mémorisé) dans le tableau comme tel où il est correct, donc quand tu repasses par le menu déroulant, tu revalides ta liste avec les ; et ça marche car c'est du coup la bonne syntaxe pour le contexte de la feuille.
(dans le même genre d'idée, si dans une cellule excel tu tapes 12 "point" 5 avec le pavé numérique tu obtiens 12,5 alors que si tu tapes 12 "point" 5 avec le clavier tu as 12.5 - les 2 "point" sont interprétés différemment et logiquement sans que ça choque personne.. sauf qu'en vba si tu veux 12,5 en F15, il faudra entrer en code
Code :
Didier
Code : Sélectionner tout - Visualiser dans une fenêtre à part range ("F15") = 12.5
Partager