VBA liste de validation avec chiffres décimaux

dionys0s

XLDnaute Impliqué
Bonjour le forum.

J'ai un soucis avec une liste de validation

Je voudrais que dans une case soient disponibles uniquement des taux de TVA.

J'ai un peu de mal avec la syntaxe. Quand c'est du texte, il faut mettre un virgules entre les choix possibles comme ceci :

Code:
    With Range(Cells(PremiereLigneRecap, 18), Cells(DerniereLigneRecap, 18)).Validation
    .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=[B]"OUI,NON,PARTIEL"[/B]
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With

Mais que faire dans le cas de chiffres avec virgule ?

j'ai essayé deux codes :

Code:
Formula1:="19,6%;5,5%;2,1%;0%"
ou encore
Code:
Formula1:="19.6%,5.5%,2.1%,0%"
et aucun ne marche :(

Je n'ai pas trouvé sur la FAQ de SilkyRoad ou avec des recherches Google donc je m'en remets à vous.

Merci d'avance pour votre aide ^^

(Edit : j'ai bien sûr essayé
Code:
Formula1:="19,6%,5,5%,2,1%,0%"
sans succès)
 

ballmaster

XLDnaute Occasionnel
Re : VBA liste de validation avec chiffres décimaux

Bizarre,

je me suis enregistré en macro en faisant une validation de type liste en rentrant les taux de TVA et le code est celui-ci

Code:
With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, [B]Formula1:="2,1%;5,5%;19,6%"[/B]
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
 

dionys0s

XLDnaute Impliqué
Re : VBA liste de validation avec chiffres décimaux

Non mais je suppose que ça ne marchera pas, puisque c'est la virgule en elle même qui me pose problème. Si je met un . entre 19 et 6% dans excel ca m'affichera 19.6% en texte et pas 19,6% en pourcentage... Je vais essayer avec & et OR.
 

dionys0s

XLDnaute Impliqué
Re : VBA liste de validation avec chiffres décimaux

Bizarre,

je me suis enregistré en macro en faisant une validation de type liste en rentrant les taux de TVA et le code est celui-ci

Code:
With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, [B]Formula1:="2,1%;5,5%;19,6%"[/B]
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With

Je l'avais essayé aussi et ça me propose ceci :
2 puis 1% puis 5 puis 5% puis 19 puis 6% puis 0%
 

pierrejean

XLDnaute Barbatruc
Re : VBA liste de validation avec chiffres décimaux

Bonjour dionys0s
Salut ballmaster

En attendant mieux

vois si tu peux t'inspirer de ceci
ATTENTION : il y a une evenementielle dans le module de Feuil1
 

Pièces jointes

  • valid_virgule.zip
    8.2 KB · Affichages: 40

ballmaster

XLDnaute Occasionnel
Re : VBA liste de validation avec chiffres décimaux

Slt Pierrejean,

Pfff, à l'évidence, c'était pas si aisé que ca.

J'avais pensé au 55/100 pour le 5.5%, mais pour ce qui est du reste.

Le . = ,

mais le . en macro qui doit s'afficher en , doit bien être possible (avec des [], des {} , ou autre chose), c'est pas possible autrement.

Enfin, bon encore une fois mon ptit cerveau de bourriquet n'a réussi à résoudre ce ptit pb. :D

A+

N'est pas Barbatruc qui veut
 
Dernière édition:

ballmaster

XLDnaute Occasionnel
Re : VBA liste de validation avec chiffres décimaux

Hé ho, :eek:

Je crois que j'ai trouvé une autre astuce, c'est moins propre mais ca fonctionne :

Code:
Sub Macro1()

    Range("E1").FormulaR1C1 = "2.10%"
    Range("E2").FormulaR1C1 = "5.50%"
    Range("E3").FormulaR1C1 = "19.60%"
   
    ActiveWorkbook.Names.Add Name:="tva", RefersToR1C1:="=Feuil1!R1C5:R3C5"
    Range("A1").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=tva"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub
 

Gael

XLDnaute Barbatruc
Re : VBA liste de validation avec chiffres décimaux

Bonjour à tous,

une solution en modifiant temporairement le séparateur décimal:

Code:
Application.DecimalSeparator = "."
    Range("C11").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="12.3%,34.5%,7.89%"
        
    End With
Application.DecimalSeparator = ","

@+

Gael
 

dionys0s

XLDnaute Impliqué
Re : VBA liste de validation avec chiffres décimaux

Hé ho, :eek:

Je crois que j'ai trouvé une autre astuce, c'est moins propre mais ca fonctionne :

Code:
Sub Macro1()

    Range("E1").FormulaR1C1 = "2.10%"
    Range("E2").FormulaR1C1 = "5.50%"
    Range("E3").FormulaR1C1 = "19.60%"
   
    ActiveWorkbook.Names.Add Name:="tva", RefersToR1C1:="=Feuil1!R1C5:R3C5"
    Range("A1").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=tva"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub

Merci bcp Ballmaster :) j'y avais pensé mais justement je souhaitais éviter cette solution. J'utilise cette technique pour les listes évolutives avec un onglet Datas. Mais les TVA n'étant pas sur le point de changer... :p
 

dionys0s

XLDnaute Impliqué
Re : VBA liste de validation avec chiffres décimaux

Bonjour à tous,

une solution en modifiant temporairement le séparateur décimal:

Code:
Application.DecimalSeparator = "."
    Range("C11").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="12.3%,34.5%,7.89%"
        
    End With
Application.DecimalSeparator = ","

@+

Gael

J'ai essayé, je n'ai pas l'impression que ça fonctionne... Tu as fait le test ? Le mien n'est pas concluant. Il propose les bons pourcentages, mais avec un .
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 379
Messages
2 087 764
Membres
103 661
dernier inscrit
fcleves