OVH Cloud OVH Cloud

Syntaxe en VBA

1 réponse
Avatar
francois
Bonjour.
alors pour commencer desolé si ma question semble evidente mais je suis
novice en VBA et j'apprend seul en testant et sans livre pour m'aider.

voici mon probleme

j'ai un userform avec une dizaine de textbox et je voudrais faire deux
controle sur les valeurs entrée.

tout d'abord je souhaite que la somme des valeur entrée soit strictement
egale a 78
pour ceci je fais :

sommetab1 = Val(UserForm3.TextBox1.Value) + Val(UserForm3.TextBox2.Value) +
Val(UserForm3.TextBox3.Value) + Val(UserForm3.TextBox4.Value) +
Val(UserForm3.TextBox5.Value) + Val(UserForm3.TextBox6.Value) +
Val(UserForm3.TextBox7.Value) + Val(UserForm3.TextBox8.Value) +
Val(UserForm3.TextBox9.Value) + Val(UserForm3.TextBox10.Value) +
Val(UserForm3.TextBox11.Value) + Val(UserForm3.TextBox12.Value)
[G9] = sommetab1

If sommetab1 <> 78 Then
MsgBox "ATTENTION, vous avez certainement classé deux metier avec la meme
valeur.", vbExclamation, _
"ERREUR ... Doublon ?"
Controls("TextBox1").SetFocus
Exit Sub
End If

cependant j'aimerais pour la premiere parti faire un truc du genre
sommetab1=0
for i = 1 to 13
Sommetab1=sommetab1 + Val(UserForm3.TextBox"i".Value)

mais je ne sais pas comment faire varier Val(UserForm3.TextBox12.Value)
j'ai essayé Val(("UserForm3.TextBox" & i".Value")) mais ca ne fonctionne pas

de plus, comment puisje faire pour que soit vérifié que deux valeurs
identique ne soit pas rentrée avec focus sur une des deux valeurs en cas
d'erreur

Merci par avance aux personnes capable de m'aider et merci aux autres pour
toutes les astuces qu'ils peuvent donner

Francois

1 réponse

Avatar
Daniel
Bonjour.
Adapte le code suivant :

Private Sub CommandButton1_Click()
Dim tb As Control, Ctr As Integer
Dim Valeurs(11) As Integer, i As Integer, Pos As String
For Each tb In UserForm1.Controls
If Left(tb.Name, 7) = "TextBox" Then
For j = 0 To UBound(Valeurs)
If tb.Value = Valeurs(j) Then Pos = tb.Name
Next j
Valeurs(i) = tb.Value
i = i + 1
Ctr = Ctr + tb.Value
End If
Next tb
If Pos <> "" Then Controls(Pos).SetFocus
MsgBox Ctr
End Sub


Cordialement.
Daniel

"francois" a écrit dans le message de
news:
Bonjour.
alors pour commencer desolé si ma question semble evidente mais je suis
novice en VBA et j'apprend seul en testant et sans livre pour m'aider.

voici mon probleme

j'ai un userform avec une dizaine de textbox et je voudrais faire deux
controle sur les valeurs entrée.

tout d'abord je souhaite que la somme des valeur entrée soit strictement
egale a 78
pour ceci je fais :

sommetab1 = Val(UserForm3.TextBox1.Value) + Val(UserForm3.TextBox2.Value)
+
Val(UserForm3.TextBox3.Value) + Val(UserForm3.TextBox4.Value) +
Val(UserForm3.TextBox5.Value) + Val(UserForm3.TextBox6.Value) +
Val(UserForm3.TextBox7.Value) + Val(UserForm3.TextBox8.Value) +
Val(UserForm3.TextBox9.Value) + Val(UserForm3.TextBox10.Value) +
Val(UserForm3.TextBox11.Value) + Val(UserForm3.TextBox12.Value)
[G9] = sommetab1

If sommetab1 <> 78 Then
MsgBox "ATTENTION, vous avez certainement classé deux metier avec la meme
valeur.", vbExclamation, _
"ERREUR ... Doublon ?"
Controls("TextBox1").SetFocus
Exit Sub
End If

cependant j'aimerais pour la premiere parti faire un truc du genre
sommetab1=0
for i = 1 to 13
Sommetab1=sommetab1 + Val(UserForm3.TextBox"i".Value)

mais je ne sais pas comment faire varier Val(UserForm3.TextBox12.Value)
j'ai essayé Val(("UserForm3.TextBox" & i".Value")) mais ca ne fonctionne
pas

de plus, comment puisje faire pour que soit vérifié que deux valeurs
identique ne soit pas rentrée avec focus sur une des deux valeurs en cas
d'erreur

Merci par avance aux personnes capable de m'aider et merci aux autres pour
toutes les astuces qu'ils peuvent donner

Francois