Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 vba : pb format de variable

Bernard38

XLDnaute Nouveau
Hello le forum, c'est re-moi
J'ai trouvé une solution mais par curiosité, savez-vous pourquoi ma variable me donne une incompatibilité de type dans ce cas :
- j'ai un userform qui récupère une valeur saisie par l'utilisateur qui peut être un nombre à virgule c'est Me.txt_Pcol_Tx1_Cotise (textbox donc valeur = string)
- j'ai une variable déclarée en Double : dblTxCot
- je souhaite récupérer la valeur de la textbox dans cette variable sachant que l'utilisateur peut avoir mis un "." si c'est un chiffre à virgule. Il faut impérativement que la variable du double car elle va être utilisée plus tard dans un calcul.

Dans mon test, ma valeur de textbox est "1.2"
Je pensais que le code suivant était bon... et ça plante avec une incompatibilité de type :

If Me.txt_Pcol_Tx1_Cotise = "" Then dblTxCot = 0 Else dblTxCot = CDbl(Replace(Me.txt_Pcol_Tx1_Cotise, ".", ","))

Mais je suis obligé de déclarer ma variable en Variant et de mettre le code comme ça :
If Me.txt_Pcol_Tx1_Cotise = "" Then dblTxCot = 0 Else dblTxCot = Me.txt_Pcol_Tx1_Cotise.Value: dblTxCot = CDbl(Replace(dblTxCot, ".", ","))

J'ai râté un truc qq part ou c'est normal ?
Merci ++
 
Dernière édition:

wDog66

XLDnaute Occasionnel
Bonjour Bernard38

Si vous avez déclaré votre variable au bon endroit, il ne doit pas y avoir d'erreur

Voici ce que j'ai fait et testé sans problème
VB:
Option Explicit

Dim dblTxCot As Double

Private Sub txt_Pcol_Tx1_Cotise_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  If Me.txt_Pcol_Tx1_Cotise = "" Then dblTxCot = 0 Else dblTxCot = CDbl(Replace(Me.txt_Pcol_Tx1_Cotise, ".", ","))
End Sub

A+
 

Discussions similaires

Réponses
13
Affichages
575
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…