Comment résoudre les Formats Nombre et type incompatible dans un USF ?

P

Patrick

Guest
Bonjour à tout le Forum.
Je n’arrive pas à écrire correctement le code d’un UserForm dans lequel je souhaite saisir des données par l’intermédiaire de TextBox, sous forme de nombre Décimal ou en % du type « 0.0005 ou 0.05 % » Puis, je veux faire des calculs divers avec ces nombres et afficher ensuite les résultats dans d’autres TestBox.
Le résultat est un message = Erreur d’exécution 13 - Type Incompatible .
Quand j’arrive à contourner par des corrections du code le message d’erreur, mes nombres doivent être au formats « Texte » puisque le résultat de a = 0.05 + b =0.07 donne 0.0050.07 ? ? ? ? ?
N.B. Je travail sur Exel 97 !
Dur dur d’être autodidacte avec Excel
Merci pour votre aide.
Patrick
 
@

@+Thierry

Guest
Bonsoir Régine, Yo et Patrick, le Forum


Si tu télécharges le Pack II de mes démos, le fichier USF_Convert-EUR-FRF-INTL.xls devrait répondre à tous tes problèmes de séparateur de décimal, en effet c'est la VERSION 2.0 avec Gestion du Séparateur de Décimal quelque soit la configuration des paramètres régionaux…

En prime tu auras aussi une démo USF_Augment-Percent et bien d'autres surprises, trouvées aussi pas un autodidacte depuis 20 ans !!!

Bonne Nuit

Ah oui le lien :
Leçons et exemples VBA

@+Thierry
 
P

Patrick

Guest
Bonjour Thierry et le Forum.
Merci pour ton aide, mais malgré l’étude des fichiers du Pack II (que j’avais déjà téléchargé ainsi de le Pack I) je ne m’en sort pas. Que se soit avec un point ou une virgule (Le séparateur décimale de mon P.C. ets : Une Virgule " , "
Si dessous le VBA que j’ai essayé d'écris, et qui ne veux rien savoir.

Private Sub UserForm_Activate()
Saisie.Height = 130
a = Format(a, "#,##0,000")
b = Format(b, "#,##0,000")
c = Format(c, "#,##0,000")
Range("A1").Value = ""
Range("A2").Value = ""
Range("A3").Value = ""
Range("A4").Value = ""
Range("A5").Value = ""
---------------------------------------------------------------------------------------------
End Sub
Private Sub Calc_Click()
Dim a, b As Variant
Saisie.Height = 250
' N.B. a et b seront issu d'un calcul compliqué, mais simplifié pour l'étude de la programation
x = a + b
x = Format(x, "#,##0,000")
y = a - b
y = Format(y, "#,##0,000")
'MAJ_NB
' Affiche les valeurs a, b, c, x, y dans les celules de A1 à A5 pour vérification du format des données saisie
'(Disparaitra aprés mise au point du programme.)
Range("A1").Value = a
Range("A2").Value = b
Range("A3").Value = c
Range("A4").Value = x
Range("A5").Value = y
End Sub
-----------------------------------------------------------------------------------------------
Private Sub Fermer_Click()
a = ""
b = ""
c = ""
x = ""
y = ""
Saisie.Hide
End Sub

Je dois probablement oublier quelque chose qui est évident pour toi (et les autres) mais quoi ?
A bientôt
Patrick
 
@

@+Thierry

Guest
Bonjour Patrick, Yo, Régine, le Forum

Comme le signale régulèrement Ti, quand on parle de UserForm ce n'est pas pareils qu'un simple petite procédure indépendante que l'on peut copier/coller pour tester immédiatement... Avec UserForm, il faut se remettre dans le contexte, et franchement c'est long à refaire !!

Donc je te suggère Patrick, puisque ce Forum offre cette facilité de Zipper ton fichier avec ton UserForm et de nous le soummettre ici. On pourra bien plus rapidement te le corriger.

Une autre remarque, nommer des TextBox "a, b, c , x, y.." est une erreur de concept, si ton code est long, avec des casacades de procédures, c'est le meilleur moyen d'être vraiment perdu !!... Une dénomination conventionnelle est toujours préférable (TxbA, TxbB, TxbC....)

A priori, sans tester quoique ce soit, un format "#,##0,000" me semble déjà pas compatible, surtout si ton séparateur est la "," sur ta configuration... essaie "# ##0,000" pour l'affichage dans les TextBox sur l'évènement Exit , mais auparavant dans l'évènement Change récupère la valeur de ce que tu as tapé dans une Variable de type Double, qui te permettra des calculs...

Bon Week End
@+Thierry
 
P

Patrick

Guest
Bonjour Thierry et le Forum.
Si joint mon fichier pour correction.
P.S . Je ne suis pas sur d'utiliser la bonne procédure pour vous envoyer un fichier.
Si ce n'est pas la bonne, merci de me dire comment faire.
Merci d'avance pour votre aide.
Patrick
 

Pièces jointes

  • CORRECTION_POUDRE.zip
    22.4 KB · Affichages: 27

Discussions similaires