VBA EXCEL : problème de procédure
Résolu
dreamerforever
-
Bidouilleu_R Messages postés 1209 Statut Membre -
Bidouilleu_R Messages postés 1209 Statut Membre -
Bonjour,
Je cherche à faire une procédure en mettant en paramètres un label et une textbox.
Voici mon code d'origine :
Private Sub 1erarticle_Change()
If montant1.Caption < 0 Then
remise1.Value = ""
If remise1.Text = "" Then Exit Sub
MsgBox "Le prix T.T.C doit être positif !"
Exit Sub
End If
End Sub
Private Sub 2emearticle_Change()
If montant2.Caption < 0 Then
remise2.Value = ""
If remise2.Text = "" Then Exit Sub
MsgBox "Le prix T.T.C doit être positif !"
Exit Sub
End If
End Sub
.....
Je dispose d'une vingtaine d'articles. Donc je suppose qu'il y a une autre façon de faire plutôt que de faire des copier/coller 20 fois.
Du coup, j'ai eu l'idée de faire appel à une procédure mais cela ne fonctionne pas (incompatibilité de type)
'Procédure permettant d'afficher l'erreur
Private Sub article(ByVal remise As TextBox, ByVal montant As Label)
montant As Label
remise As TextBox
If montant.Caption < 0 Then
remise.Value = ""
If remise.Text = "" Then Exit Sub
MsgBox "Le prix T.T.C doit être positif !"
Exit Sub
End If
End Sub
Private Sub 1erarticle_Change()
Call article(remise1, montant1)
End Sub
Private Sub 2emearticle_Change()
Call article(remise2, montant2)
End Sub
--------
Comment résoudre ce problème ?
En vous remerciant par avance pour vos éventuelles réponses.
Je cherche à faire une procédure en mettant en paramètres un label et une textbox.
Voici mon code d'origine :
Private Sub 1erarticle_Change()
If montant1.Caption < 0 Then
remise1.Value = ""
If remise1.Text = "" Then Exit Sub
MsgBox "Le prix T.T.C doit être positif !"
Exit Sub
End If
End Sub
Private Sub 2emearticle_Change()
If montant2.Caption < 0 Then
remise2.Value = ""
If remise2.Text = "" Then Exit Sub
MsgBox "Le prix T.T.C doit être positif !"
Exit Sub
End If
End Sub
.....
Je dispose d'une vingtaine d'articles. Donc je suppose qu'il y a une autre façon de faire plutôt que de faire des copier/coller 20 fois.
Du coup, j'ai eu l'idée de faire appel à une procédure mais cela ne fonctionne pas (incompatibilité de type)
'Procédure permettant d'afficher l'erreur
Private Sub article(ByVal remise As TextBox, ByVal montant As Label)
montant As Label
remise As TextBox
If montant.Caption < 0 Then
remise.Value = ""
If remise.Text = "" Then Exit Sub
MsgBox "Le prix T.T.C doit être positif !"
Exit Sub
End If
End Sub
Private Sub 1erarticle_Change()
Call article(remise1, montant1)
End Sub
Private Sub 2emearticle_Change()
Call article(remise2, montant2)
End Sub
--------
Comment résoudre ce problème ?
En vous remerciant par avance pour vos éventuelles réponses.
A voir également:
- VBA EXCEL : problème de procédure
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
3 réponses
je ferai comme ça...
1) je controlerai tous les textboxes avec un code placé dans un bouton
( par exemple le bouton valider ici c'est commandButton1)
2) en cas de probleme ( ici je teste le vide ) tu reviens sur le textbox qui pose problème et il faudra de nouveau revalider.
En espérant t'aider
Private Sub CommandButton1_Click()
Dim Ctrl As Control
Dim i As Integer
i = 1
For Each Ctrl In UserForm1.Controls
If TypeOf Ctrl Is MSForms.TextBox Then
If Ctrl.Value = "" Then
Ctrl.SetFocus
s = MsgBox(" Erreur ce controle est vide : " & Ctrl.Name, vbCritical, " erreur Alerte")
Exit Sub
End If
i = i + 1
End If
Next
End Sub
1) je controlerai tous les textboxes avec un code placé dans un bouton
( par exemple le bouton valider ici c'est commandButton1)
2) en cas de probleme ( ici je teste le vide ) tu reviens sur le textbox qui pose problème et il faudra de nouveau revalider.
En espérant t'aider
Private Sub CommandButton1_Click()
Dim Ctrl As Control
Dim i As Integer
i = 1
For Each Ctrl In UserForm1.Controls
If TypeOf Ctrl Is MSForms.TextBox Then
If Ctrl.Value = "" Then
Ctrl.SetFocus
s = MsgBox(" Erreur ce controle est vide : " & Ctrl.Name, vbCritical, " erreur Alerte")
Exit Sub
End If
i = i + 1
End If
Next
End Sub
Je ne crois pas que cette réponse répond pas à la question de Dreamerforever. Avec cette solution il devra quand même faire ses 20 copier - coller ...