TextBox2.Value = "10.24 €"
Val2 = Left(TextBox2.Value, 4)
Et le point, il ne compte pas ? =>10.2
Comme ton séparateur décimal est le "." Val() te retourne la partie numérique en début de chaine (sinon il faudrait remplacer "," par "." avant)
D'autre part tu ne peux pas déclarer une variable as currency, il faut la déclarer Variant, elle se type lors de l'initialisation et il vaut mieux l'utiliser au plus tôt si tu veux bénéficier de ses avantages.
Au total donc :
Dim Val2 As Variant 'ou Dim Val2 (variant par défaut)
...
Val2 = CCur(Val(TextBox2.Value)) ' Val2 devient Variant/Currency
...
TotalPrix = Val2 + Val3 ' tu auras fait pareil sur Val3
TotalPrix = Val2
Je te laisse faire pareil pour les autres.
Au passage si tu veux tu peux te passer de Val2 et Val3 :
Val1 = CCur(Val(UserForm1.ResumMatos.List(ResumMatos.ListIndex, 9)))
Val1bis = CCur(Val(UserForm1.ResumMatos2.List(ResumMatos2.ListIndex, 1)))
...
TotalPrix = CCur(Val(TextBox2.Value)) + val1
Plus besoin de tester val1, tu additionnes 0 c'est tout.
Tu n'as pas déclaré TotalPrix (entre autres...). Il faut déclarer et typer toutes ses variables, ça évite les erreurs sur le nom très difficiles à trouver. Une erreur de frappe et tu mets 1 semaine à comprendre pourquoi ce n'est pas bon. Et ça dans le meilleur des cas où ça te fait une erreur qui saute aux yeux et que tu cherches, sinon c'est 1 an plus tard que tu t'en aperçois.
Met Option Explicit au début de tous tes modules.
Et si tu veux que ça se fasse automatiquement coche Déclaration obligatoire des variables dans les Options.
eric