Gil369
Messages postés120Date d'inscriptionmardi 25 mars 2008StatutMembreDernière intervention 7 novembre 2018
-
25 mars 2008 à 18:23
Gil369
Messages postés120Date d'inscriptionmardi 25 mars 2008StatutMembreDernière intervention 7 novembre 2018
-
28 mars 2008 à 12:52
Bonjour,
je fais un petit programme pour gerer les finances d un club, je bute sur une fonction de choix ! j ai dans mon formulaire 4 boutonoption ( cheque, virement, prelevemnt, especes) tout fonctionne bien dans mon formulaire mais ça coince quand je veux valider pour envoyer sur ma feuille excel
ci joint le debut de mes codes
Private Sub BTN_Valider_Click()
'On teste la saisie de la date...
If Me.TXT_Date.Text = "" Then
MsgBox "Vous devez entrer une date"
Me.TXT_Date.SetFocus
Exit Sub
End If
'On teste la saisie de la pieceN°...
If Me.TXT_PieceN°.Text = "" Then
MsgBox "Vous devez entrer un numero de piece"
Me.TXT_PieceN°.SetFocus
Exit Sub
End If
'On teste la saisie de l'editeur...
If Me.ComboBox_Editeur.Text = "" Then
MsgBox "Vous devez entrer un editeur"
Me.ComboBox_Editeur.SetFocus
Exit Sub
End If
'On teste la saisie du N° de cheque...
If Me.TXT_ChequeN°.Text = "" Then
MsgBox "Vous devez entrer un N° de chèque"
Me.TXT_ChequeN°.SetFocus
Exit Sub
'On teste la saisie du Prelevement...
ElseIf Me.TXT_Prelevement.Text = "" Then
MsgBox "Vous devez entrer Prelevement"
Me.TXT_Prelevement.SetFocus
Exit Sub
'On teste la saisie du virement...
ElseIf Me.TXT_Virement.Text = "" Then
MsgBox "Vous devez entrer virement"
Me.TXT_Virement.SetFocus
Exit Sub
'On teste la saisie d' especes...
ElseIf Me.TXT_Especes.Text = "" Then
MsgBox "Vous devez entrer Especes"
Me.TXT_Especes.SetFocus
Exit Sub
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 26 mars 2008 à 14:00
et ce parceque tu testes sur prélèvement alors que tu as opté pour chèque.
N' appelles ta fonction Test que pour l' objet correspondant à l' option choisie
Private Sub BTN_Valider_Click()
-testes sur la date
-Testes sur l' éditeur
If BTN_Especes = True Then
If TestText (Me.TXT_Especes.Text ,"Vous devez....") Then Exit Sub
ElseIf BTN_Virement = True Then
If TestText (Me.TXT_Virement.Text ,"Vous devez....") Then Exit Sub
ElseIf BTN_Cheque = True Then
If TestText (Me.TXT_Cheque.Text ,"Vous devez....") Then Exit Sub
ElseIf BTN_Prelevement = True Then
If TestText (Me.TXT_Prelevement Text ,"Vous devez....") Then Exit Sub
End If
tu continues le traitement...
Range("Comptes_2008!B65536").End(xlUp).Offset(1, 0).Value = Me.TXT_Date.Value
Range("Comptes_2008!C65536").End(xlUp).Offset(1, 0).Value = Me.TXT_PieceN°.Value
Range("Comptes_2008!D65536").End(xlUp).Offset(1, 0).Value = Me.TXT_ChequeN°.Value
Range("Comptes_2008!E65536").End(xlUp).Offset(1, 0).Value = Me.ComboBox_Editeur.Value
End Sub
n' oublies pas de rendre visible ou pas et enabled ou pas
les objets correspondants à l' option choisie.
Gil369
Messages postés120Date d'inscriptionmardi 25 mars 2008StatutMembreDernière intervention 7 novembre 2018 26 mars 2008 à 14:39
re, apres essai sur la derniere version, j ai un message "erreur de compilation: incompatibilite de type" sur:
Private Sub BTN_Valider_Click()
'On teste la saisie de la date...
If Not TestText(TXT_Date, "une date") Then Exit Sub
'On teste la saisie de la pieceN...
If Not TestText(TXT_PieceN°, "un numéro de pièce") Then Exit Sub
'On teste la saisie de l'editeur...
If Not TestText(ComboBox_Editeur, "un éditeur") Then Exit Sub
If BTN_Especes = True Then
If Not (TestText(Me.TXT_Especes.Text, "Vous devez....")) Then Exit Sub
ElseIf BTN_Virement = True Then
If Not (TestText(Me.TXT_Virement.Text, "Vous devez....")) Then Exit Sub
ElseIf BTN_Cheque = True Then
If Not (TestText(Me.TXT_Cheque.Text, "Vous devez....")) Then Exit Sub
ElseIf BTN_Prelevement = True Then
If Not (TestText(Me.TXT_Prelevement.Text, "Vous devez....")) Then Exit Sub
End If
'On teste la saisie du N de cheque si c'est le paiement par chèque choisi
If BTN_Cheque.Value And Not TestText(TXT_ChequeN°, "un numéro de chèque") Then Exit Sub
'On teste la saisie du prélèvement si c'est le paiement par Prélèvement choisi
If BTN_Prelevement.Value And Not TestText(TXT_Prelevement, "Prélèvement") Then Exit Sub
'On teste la saisie du Virement si c'est le paiement par Virement choisi
If BTN_Virement.Value And Not TestText(TXT_Virement, "Virement") Then Exit Sub
'On teste la saisie des Especes si c'est le paiement par Especes choisi
If BTN_Especes.Value And Not TestText(TXT_Especes, "Especes") Then Exit Sub
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 26 mars 2008 à 14:45
d' abord
Private Sub BTN_Valider_Click()
'On teste la saisie de la date...
If Not TestText(TXT_Date, "une date") Then Exit Sub
'On teste la saisie de la pieceN...
If Not TestText(TXT_PieceN°, "un numéro de pièce") Then Exit Sub
'On teste la saisie de l'editeur...
If Not TestText(ComboBox_Editeur, "un éditeur") Then Exit Sub
'c' est de ma faute !
If BTN_Especes.Value = True Then
If Not (TestText(Me.TXT_Especes.Text, "Vous devez....")) Then Exit Sub
ElseIf BTN_Virement .Value = True Then
If Not (TestText(Me.TXT_Virement.Text, "Vous devez....")) Then Exit Sub
ElseIf BTN_Cheque.Value = True Then
If Not (TestText(Me.TXT_Cheque.Text, "Vous devez....")) Then Exit Sub
ElseIf BTN_Prelevement .Value = True Then
If Not (TestText(Me.TXT_Prelevement.Text, "Vous devez....")) Then Exit Sub
End If
<strike> 'On teste la saisie du N de cheque si c'est le paiement par chèque choisi
If BTN_Cheque.Value And Not TestText(TXT_ChequeN°, "un numéro de chèque") Then Exit Sub
'On teste la saisie du prélèvement si c'est le paiement par Prélèvement choisi
If BTN_Prelevement.Value And Not TestText(TXT_Prelevement, "Prélèvement") Then Exit Sub
'On teste la saisie du Virement si c'est le paiement par Virement choisi
If BTN_Virement.Value And Not TestText(TXT_Virement, "Virement") Then Exit Sub
'On teste la saisie des Especes si c'est le paiement par Especes choisi
If BTN_Especes.Value And Not TestText(TXT_Especes, "Especes") Then Exit Sub
</strike>tu viens de faire les testes.
Tu ne va pas les refaire ! !!
<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />
Gil369
Messages postés120Date d'inscriptionmardi 25 mars 2008StatutMembreDernière intervention 7 novembre 2018 26 mars 2008 à 15:20
re et merci pour tes conseils, je plante sur
Private Sub BTN_Valider_Click()
'On teste la saisie de la date...
If Not TestText(TXT_Date, "une date") Then Exit Sub
'On teste la saisie de la pieceN...
If Not TestText(TXT_PieceN°, "un numéro de pièce") Then Exit Sub
'On teste la saisie de l'editeur...
If Not TestText(ComboBox_Editeur, "un éditeur") Then Exit Sub
If BTN_Especes.Value = True Then
If Not (TestText(Me.TXT_Especes.Text, "Vous devez....")) Then Exit Sub (des la validation = erreur de compilation, incompatibilite de type )
ElseIf BTN_Virement.Value = True Then
If Not (TestText(Me.TXT_Virement.Text, "Vous devez....")) Then Exit Sub
ElseIf BTN_Cheque.Value = True Then
If Not (TestText(Me.TXT_Cheque.Text, "Vous devez....")) Then Exit Sub
ElseIf BTN_Prelevement.Value = True Then
If Not (TestText(Me.TXT_Prelevement.Text, "Vous devez....")) Then Exit Sub
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 26 mars 2008 à 15:25
j' avais déjà corrigé !
If Not (TestText(Me.TXT_Especes.<strike>Text</strike>, "Vous devez....")) Then Exit Sub
le 1 ier paramètre est un objet Me.TXT_Especes
et non du texte <strike>Me.TXT_Especes</strike><strike>.Text
</strike>et donc
If Not (TestText(Me.TXT_Especes, "Vous devez....")) Then Exit Sub
pareil pour les autres.
<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />
/PRE>
Gil369
Messages postés120Date d'inscriptionmardi 25 mars 2008StatutMembreDernière intervention 7 novembre 2018 26 mars 2008 à 22:44
re, ça fonctionne mieux ! en relisant le tout je me suis aperçu que j avais un message d erreur parce que j avais oublie le "N°" sur TXT_Cheque N°
Private Function TestText(Obj As Object, Txt As String) As Boolean
TestText = True
If Obj.Text = vbNullString Then
Call MsgBox("Vous devez entrer " & Txt)
Obj.SetFocus
TestText = False
End If
End Function
Private Sub BTN_Valider_Click()
'On teste la saisie de la date...
If Not TestText(TXT_Date, "une date") Then Exit Sub
'On teste la saisie de la pieceN...
If Not TestText(TXT_PieceN°, "un numéro de pièce") Then Exit Sub
'On teste la saisie de l'editeur...
If Not TestText(ComboBox_Editeur, "un éditeur") Then Exit Sub
If BTN_Cheque.Value = True Then
If Not TestText(Me.TXT_ChequeN°, "Cheque") Then Exit Sub = manquai le N°
ElseIf BTN_Prelevement.Value = True Then
If Not TestText(Me.TXT_Prelevement, "Prelevement") Then Exit Sub
ElseIf BTN_Virement.Value = True Then
If Not TestText(Me.TXT_Virement, "Virement") Then Exit Sub
ElseIf BTN_Especes.Value = True Then
If Not TestText(Me.TXT_Especes, "Especes") Then Exit Sub
End If
j ai egalement supprimer les ( ) sur : If BTN_Cheque.Value = True Then
If Not <strike>(</strike>
TestText(Me.TXT_ChequeN°, "Cheque") <strike>)</strike>Then Exit Sub sans noter de modification dans le fonctionnement
1) par contre si je valide en laissant vide les TXT date, pieceN° ou editeur le msgbox me le signale mais
accepte sans msgbox si je laisse vide un des 4 TXT cheque, prelevement, virement ou especes , dois je intervenir sur le frame pour cela ? sachant que ces 4 optionbuttton sont dans ce frame
2) Pour repondre a Julien a la question de ce matin concernant les TXT grisees quand elles sont inactives : non je n ai pas resolu ce probleme pour le moment
mais mon projet avance petit a petit grace a votre aide precieuse meme si je ne controle pas encore toutes les subtilite de l ecriture vba
A+ Gilles
PS: ou en est le problème d'hier? avec les Textbox Grisé?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 27 mars 2008 à 08:17
Re,
Quelque chose me tracasse. est ce que au final il n'y a pas deux topic pour le même problème.
J'avoue que même après 4 Pages de discution, je n'ai pas l'impression d'avoir saisi le problème.
>[auteur/LIBREMAX/1050148.aspx LIBRE_MAX] : "Au lancement, une option est par défaut à True." ah bon????
De plus le sujet des TextBox Enabled à dejà été traité dans l'autre post et avait donnée cette procédure à appelé à chaque click sur une option
Private Sub DisableControls()
TXT_ChequeN°.Enabled = BTN_Cheque.Value
TXT_Prelevement.Enabled = BTN_Prelevement.Value
TXT_Virement.Enabled = BTN_Virement.Value
TXT_Especes.Enabled = BTN_Especes.Value
End Sub
Gil369
Messages postés120Date d'inscriptionmardi 25 mars 2008StatutMembreDernière intervention 7 novembre 2018 27 mars 2008 à 10:04
Re, tout fonctionne bien avec ces codes : 1 seul optionbutton ne peut etre actif dans le frame et la txtbox correspondante est activee, les 3 autres sont verrouillees.(NICKEL)
1)Je souhaitai seulement pouvoir griser les 3 textbox inactives
2) Activer un msgbox en cas d oubli de cocher 1 optionbutton du frame et du remplissage du textbox correspondant avant de passer au textbox suivant ("categorie")
PS : Les msgbox "date" "pieceN°" et "editeur" sont bien actives en cas d oubli
Private Sub DisableControls()
TXT_ChequeN°.Enabled = BTN_Cheque.Value
TXT_Prelevement.Enabled = BTN_Prelevement.Value
TXT_Virement.Enabled = BTN_Virement.Value
TXT_Especes.Enabled = BTN_Especes.Value
End Sub
Private Sub BTN_Cheque_Click()
Call DisableControls
End Sub
Private Sub INT_ChequeN°_Click()
End Sub
Private Sub TXT_ChequeN°_Change()
End Sub
.... Idem pour les 3 autres
Private Function TestText(Obj As Object, Txt As String) As Boolean
TestText = True
If Obj.Text = vbNullString Then
Call MsgBox("Vous devez entrer " & Txt)
Obj.SetFocus
TestText = False
End If
End Function
Private Sub BTN_Valider_Click()
'On teste la saisie de la date...
If Not TestText(TXT_Date, "une date") Then Exit Sub
'On teste la saisie de la pieceN...
If Not TestText(TXT_PieceN°, "un numéro de pièce") Then Exit Sub
'On teste la saisie de l'editeur...
If Not TestText(ComboBox_Editeur, "un éditeur") Then Exit Sub
If BTN_Cheque.Value = True Then
If Not TestText(Me.TXT_ChequeN°, "Cheque") Then Exit Sub
ElseIf BTN_Prelevement.Value = True Then .... pour les 3 autres
End If
Range("Comptes_2008!B65536").End(xlUp).Offset(1, 0).Value = Me.TXT_Date.Value
Range .......
Call Unload(Me) 'De cette façon, à la prochaine saisie, les TextBoxs sont vides à l'ouverture
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 27 mars 2008 à 11:51
Bonjour,
"Au lancement, une option est par défaut à True."
Pourquoi pas ?
ça fait partie de l' initialisation du formulaire.
Dans un même cas de figure, je choisirais la plus courante.
Cela explique le:
ETAT_INITIAL
TXT_Especes.Enabled=True
+
Dans DisableControls, il manque à mon avis la remise à "" de tous les TXT.
Si je choisi chèques et que je remplis N chèquepuis puis que je
me retracte et que je choisi Espèces,sans remettre à "" le TXT_Cheque, il va figurer dans ma feuille alors que je suis sur espèces.
Pour le topic qui s' éternise, beh , si ça ne dépendait que de nous...!
<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 28 mars 2008 à 12:31
Bonjour,
Mais non Gil ! il ne faut pas le prendre comme ça !
Tu peut poster autant que tu veux...
Ce que voulais dire Julien, c' est que le but est que la solution soit trouvée le plus rapidement possible.
Nous on est dispo à continuer...
C' est à toi qu' on pense.Il faut que ton travail avance.
<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />
/PRE>
Gil369
Messages postés120Date d'inscriptionmardi 25 mars 2008StatutMembreDernière intervention 7 novembre 2018 28 mars 2008 à 12:52
ok, merci mais comme je suis nouveau en vbexcel et sur le site , je ne connais pas les conventions et ne veux pas abuser.
J essaie les "" dans disablecontrols
A+
gilles