Test sur la somme de 2 textbox avec pourcentage

thierry.bayard

XLDnaute Junior
Bonjour,

Je voudrais faire un contrôle sur la somme de 2 textbox dont le total doit faire 100 %.
Pour l'affichage en pourcentage, j'ai mis le code suivant pour chacun des textbox :


Code:
Private Sub Part_UF01_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    'Application du bon format sur les Textbox Part_UF01...
    If Part_UF01.Text = "" Then Exit Sub
    If InStr(1, Part_UF01, "%") > 0 Then Exit Sub
    Part_UF01.Text = Format(Replace(Part_UF01.Text, ".", ",") / 100, "0.00%")
End Sub

Pour faire le test, j'essayais qques choses comme ça :

Code:
If (CDbl(Part_UF01.Value) + CDbl(Part_UF02.Value)) <> 1 then
     msgbox "total différent de 100%"
     Else
     msgbox ("ok"
End If

Le problème est que même lorsque le total est bien de 100, j'ai le msg "total différent de 100%".
J'ai également essayé avec la fonction sum mais sans plus de succès (j'avais un msg "Function non défini")

Merci d'avance pour votre aide

THierry
 

david84

XLDnaute Barbatruc
Re : Test sur la somme de 2 textbox avec pourcentage

Bonjour,
si cela ne fontionne pas c'est que tu ne récupères sûrement pas un nombre (xx,xx% n'est pas un nombre).
Je pense qu'il faudrait repasser des des Replace pour modifier à nouveau la virgule en point et enlever le "%" ramené par Format.
Mais bon, sans un petit fichier exemple pour tester, on navigue à vue...
A+
 

david84

XLDnaute Barbatruc
Re : Test sur la somme de 2 textbox avec pourcentage

Re
à tester :
Code:
Private Sub CommandButton1_Click()
  Dim Nb1, Nb2
    Nb1 = Replace(Part_UF01.Value, ",", ".")
    Nb2 = Replace(Part_UF02.Value, ",", ".")
    If Application.WorksheetFunction.Sum(Nb1, Nb2) <> 1 Then
        MsgBox "Total différent de 100%"
        Else
        MsgBox "ok"
    End If
End Sub
A+
 

david84

XLDnaute Barbatruc
Re : Test sur la somme de 2 textbox avec pourcentage

Merci bcp, ça a l'air de fonctionner.Seule petite limite : l'utilisateur n'a pas l'obligation de compléter tous les textbox. Je contourne avec un petit If = "" alors 0...

Tu n'avais rien précisé à ce sujet...mais ta solution n'oblige pas la saisie.
Je pense qu'il vaut mieux contrôler si les Textox sont renseignées :
Code:
Private Sub CommandButton1_Click()
   Dim Nb1, Nb2
   If Application.WorksheetFunction.Trim(Part_UF01.Value) = vbNullString Then _
   MsgBox "renseigner !": Part_UF01.SetFocus: Exit Sub
   If Application.WorksheetFunction.Trim(Part_UF02.Value) = vbNullString Then _
   MsgBox "renseigner !": Part_UF02.SetFocus: Exit Sub
   
     Nb1 = Replace(Part_UF01.Value, ",", ".")
     Nb2 = Replace(Part_UF02.Value, ",", ".")
     If Application.WorksheetFunction.Sum(Nb1, Nb2) <> 1 Then
         MsgBox "Total différent de 100%"
         Else
         MsgBox "ok"
     End If
 End Sub
Application.WorksheetFunction.Trim permet d'éviter une saisie d'espaces vides (à placer à mo avis également dans les Exit).

Si ce n'est pas déjà fait, pense également à contrôler que la valeur entrée soit bien une valeur numérique, voire à obliger l'utilisateur à n'utiliser que des chiffres et le séparateur décimal.
A+
 

thierry.bayard

XLDnaute Junior
Re : Test sur la somme de 2 textbox avec pourcentage

Merci pour ces conseils.
J'ai mis en application la fonction Trim, ça fonctionne très bien.
Pour ce qui est de limiter la saisie de caractère numérique, je vais retourner faire un petit tour sur le forum (je ne suis pas un spécialiste de VBA, je découvre au fur et à mesure les possibilités offertes... et les pièges à éviter).
Merci encore pour ton aide
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 104
dernier inscrit
JEMADA