1 choix sur 4 propositions

Gil369 Messages postés 120 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 7 novembre 2018 - 25 mars 2008 à 18:23
Gil369 Messages postés 120 Date d'inscription mardi 25 mars 2008 Statut Membre Derniè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
           
            End If
   
    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!D65536").End(xlUp).Offset(1, 0).Value = Me.TXT_Prelevement.Value
    Range("Comptes_2008!E65536").End(xlUp).Offset(1, 0).Value = Me.ComboBox_Editeur.Value
   
    Unload Me 'De cette façon, à la prochaine saisie, les TextBoxs sont vides à l'ouverture
End Sub
merci de votre aide
Gilles

37 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
25 mars 2008 à 18:55
Salut,

Faudra revoir ta "vérification" de tes conditions, car là tu ne fais que le test sur des champs vide....comme pour la date...car si je met "toto" la condition est vrai, et je passe au reste...pour la date regarde du côté de  : IsDate et voir dans certains cas : Format

A+
Exploreur

 Linux a un noyau, Windows un pépin

Un jeu en flash sympa...? Voir ici
Si vous voulez vous inscrire
mettez comme parrain : exploreur
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
25 mars 2008 à 20:50
Bonsoir,
si tu utilises des Options, c' est parceque tu ne veux prendre en compte qu' un mode de payement parmi les 4.
Tu dois donc tester d' abord sue le choix, ensuite tester sur,
et uniquement sur, les controls correspondants à cette option.
Car si le choix est "espèces", pourquoi tester sur le numéro de chèque, prèlèvement et autres  ? (qui doivent d' ailleur rester vides dans ce cas)


If Option1=True  Then 'espèces
  If Me.TXT_Especes.Text = "" Then
                MsgBox "Vous devez entrer Especes"
                Me.TXT_Especes.SetFocus
                Exit Sub
   End If


ElseIf Option2.Value=True Then 'chèque
  If Me.TXT_ChequeN°.Text = "" Then
      MsgBox "Vous devez entrer un N° de chèque"
      Me.TXT_ChequeN°.SetFocus
       Exit Sub
  End If


ElseIf Option3.Value=True Then 'Prélèvement
    If Me.TXT_Prelevement.Text = "" Then
        MsgBox "Vous devez entrer Prelevement"
         Me.TXT_Prelevement.SetFocus
         Exit Sub
   End If


ElseIf Option4.Value=True Then 'Virement
   If Me.TXT_Virement.Text = "" Then
        MsgBox "Vous devez entrer virement"
         Me.TXT_Virement.SetFocus
         Exit Sub
    End If
End If


                         
<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />


/P>
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
25 mars 2008 à 22:21
Bonsoir,

Peux-tu préciser ta question : "mais ça coince quand je veux valider pour envoyer sur ma feuille excel"

Où est-ce que cela coince ?

Car en terme de logique de programmation (hors test insuffisant, comme dit précédemment (salut à tous), je ne vois pas de véritable problème, ni d'envoi sur Excel, hormis les dernières lignes...

Amicalement,
Us.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 mars 2008 à 08:40
Salut,

Sans revenir sur ce qui a été dit, voici une petite version en couleur et simplifiée du code.

PS: ou en est le problème d'hier? avec les Textbox Grisé?
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<hr />

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
   
   '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
   
 
   Range("Comptes_2008!B65536").end(xlUp).Offset(1, 0).Value = TXT_Date.Value
   Range("Comptes_2008!C65536").end(xlUp).Offset(1, 0).Value = TXT_PieceN°.Value
   Range("Comptes_2008!D65536").end(xlUp).Offset(1, 0).Value = TXT_ChequeN°.Value
   Range("Comptes_2008!D65536").end(xlUp).Offset(1, 0).Value = TXT_Prelevement.Value
   Range("Comptes_2008!E65536").end(xlUp).Offset(1, 0).Value = ComboBox_Editeur.Value
 
   'De cette façon, à la prochaine saisie, les TextBoxs sont vides à l'ouverture
   Call Unload(Me)
End Sub<hr />, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gil369 Messages postés 120 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 7 novembre 2018
26 mars 2008 à 08:44
Bonjour a tous et merci de vos reponses, je suis un vrai novice ( je ne connaisais rien a vba il y a 4 jours ) et inscrit sur ce forum depuis hier.
LIBRE_MAX,  j ai copie tes codes, mais j ai "erreur de compilation, variable non definie" sur option1. Je suis au debut de mon projet et avance petit a petit. jusqu a present je suis arrete sur mon frame (cheque, prelevemnt, virement, especes) j aimerai aussi pouvoir griser les 3 textbox verrouillees. Je ne sais pas si ça se fait, mais je joins l integralite des codes de mon formulaire,  en bleu ce dont je n ai pas encore codé. merci d avance
A+ Gilles

Private Sub Image1_Triathlon_Laneuveville_Click() 
   End Sub


Private Sub INT_Formulaire_de_saisies_Click() 
   End Sub


Private Sub Calendar1_Click()
    TXT_Date.Value = Calendar1.Value
         End Sub


Private Sub INT_Date_Click() 
   End Sub
    
 Private Sub TXT_Date_Change()
      End Sub


Private Sub INT_Piece_Click()
   End Sub
    
Private Sub TXT_PieceN°_Change()
   End Sub


Private Sub INT_Editeur_Click()
   End Sub
    
Private Sub Combobox_Editeur_Initialize()
    Dim i As Byte
     For i = 1 To 100
        ComboBox_Editeur.AddItem "Ligne" & i
    Next i
      End Sub


Private Sub Frame_Nature_Click()
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


Private Sub BTN_Prelevement_Click()
    Call DisableControls
         End Sub
       
        Private Sub INT_Prelevement_Click()
             End Sub
               
                Private Sub TXT_Prelevement_Change()
                     End Sub


Private Sub BTN_Virement_Click()
    Call DisableControls
         End Sub
       
        Private Sub INT_Virement_Click()
             End Sub
               
                Private Sub TXT_Virement_Change()
                     End Sub


Private Sub BTN_Especes_Click()
    Call DisableControls
         End Sub
       
        Private Sub INT_Especes_Click()
            End Sub
               
                Private Sub TXT_Especes_Change()
                     End Sub



Private Sub INT_Categorie_Click()
   End Sub
   
    Private Sub ComboBox_Categorie_Change()
         End Sub



Private Sub INT_Tireur_Click()
   End Sub
   
    Private Sub ComboBox_Tireur_Change()
       End Sub



Private Sub INT_Libelle_Click()
      End Sub
   
Private Sub ComboBox_Libelle_Change()
    End Sub



Private Sub CheckBoxDebit_Click()
   End Sub



Private Sub CheckBox_Credit_Click()
   End Sub



Private Sub INT_Montant_Click()
   End Sub
   
    Private Sub TXT_Montant_Change()
       End Sub


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
   
   
            If Option1.Value = True Then 'chèque
            If Me.TXT_ChequeN°.Text = "" Then
            MsgBox "Vous devez entrer un N° de chèque"
            Me.TXT_ChequeN°.SetFocus
                Exit Sub
        End If
       
            ElseIf Option2.Value = True Then 'Prélèvement
            If Me.TXT_Prelevement.Text = "" Then
            MsgBox "Vous devez entrer Prelevement"
            Me.TXT_Prelevement.SetFocus
                Exit Sub
                    End If


            ElseIf Option3.Value = True Then 'Virement
            If Me.TXT_Virement.Text = "" Then
             MsgBox "Vous devez entrer virement"
            Me.TXT_Virement.SetFocus
                Exit Sub
                    End If


            ElseIf Option4 = True Then 'espèces
            If Me.TXT_Especes.Text = "" Then
            MsgBox "Vous devez entrer Especes"
             Me.TXT_Especes.SetFocus
                Exit Sub
                    End If


    End If
         
    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
   
    Unload Me 'De cette façon, à la prochaine saisie, les TextBoxs sont vides à l'ouverture


End Sub


Private Sub LanceFRM_Accueil_Click()
    FRM_Accueilshow
         End Sub


Private Sub BTN_Fermer_Click()
   Unload Me
         End Sub


Private Sub BTN_Annuler_Click()
    Unload
         End Sub


Private Sub Label1_Click()


End Sub




Private Sub UserForm_Click()


End Sub


 
0
Gil369 Messages postés 120 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 7 novembre 2018
26 mars 2008 à 08:44
Bonjour a tous et merci de vos reponses, je suis un vrai novice ( je ne connaisais rien a vba il y a 4 jours ) et inscrit sur ce forum depuis hier.
LIBRE_MAX,  j ai copie tes codes, mais j ai "erreur de compilation, variable non definie" sur option1. Je suis au debut de mon projet et avance petit a petit. jusqu a present je suis arrete sur mon frame (cheque, prelevemnt, virement, especes) j aimerai aussi pouvoir griser les 3 textbox verrouillees. Je ne sais pas si ça se fait, mais je joins l integralite des codes de mon formulaire,  en bleu ce dont je n ai pas encore codé. merci d avance
A+ Gilles

Private Sub Image1_Triathlon_Laneuveville_Click() 
   End Sub


Private Sub INT_Formulaire_de_saisies_Click() 
   End Sub


Private Sub Calendar1_Click()
    TXT_Date.Value = Calendar1.Value
         End Sub


Private Sub INT_Date_Click() 
   End Sub
    
 Private Sub TXT_Date_Change()
      End Sub


Private Sub INT_Piece_Click()
   End Sub
    
Private Sub TXT_PieceN°_Change()
   End Sub


Private Sub INT_Editeur_Click()
   End Sub
    
Private Sub Combobox_Editeur_Initialize()
    Dim i As Byte
     For i = 1 To 100
        ComboBox_Editeur.AddItem "Ligne" & i
    Next i
      End Sub


Private Sub Frame_Nature_Click()
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


Private Sub BTN_Prelevement_Click()
    Call DisableControls
         End Sub
       
        Private Sub INT_Prelevement_Click()
             End Sub
               
                Private Sub TXT_Prelevement_Change()
                     End Sub


Private Sub BTN_Virement_Click()
    Call DisableControls
         End Sub
       
        Private Sub INT_Virement_Click()
             End Sub
               
                Private Sub TXT_Virement_Change()
                     End Sub


Private Sub BTN_Especes_Click()
    Call DisableControls
         End Sub
       
        Private Sub INT_Especes_Click()
            End Sub
               
                Private Sub TXT_Especes_Change()
                     End Sub



Private Sub INT_Categorie_Click()
   End Sub
   
    Private Sub ComboBox_Categorie_Change()
         End Sub



Private Sub INT_Tireur_Click()
   End Sub
   
    Private Sub ComboBox_Tireur_Change()
       End Sub



Private Sub INT_Libelle_Click()
      End Sub
   
Private Sub ComboBox_Libelle_Change()
    End Sub



Private Sub CheckBoxDebit_Click()
   End Sub



Private Sub CheckBox_Credit_Click()
   End Sub



Private Sub INT_Montant_Click()
   End Sub
   
    Private Sub TXT_Montant_Change()
       End Sub


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
   
   
            If Option1.Value = True Then 'chèque
            If Me.TXT_ChequeN°.Text = "" Then
            MsgBox "Vous devez entrer un N° de chèque"
            Me.TXT_ChequeN°.SetFocus
                Exit Sub
        End If
       
            ElseIf Option2.Value = True Then 'Prélèvement
            If Me.TXT_Prelevement.Text = "" Then
            MsgBox "Vous devez entrer Prelevement"
            Me.TXT_Prelevement.SetFocus
                Exit Sub
                    End If


            ElseIf Option3.Value = True Then 'Virement
            If Me.TXT_Virement.Text = "" Then
             MsgBox "Vous devez entrer virement"
            Me.TXT_Virement.SetFocus
                Exit Sub
                    End If


            ElseIf Option4 = True Then 'espèces
            If Me.TXT_Especes.Text = "" Then
            MsgBox "Vous devez entrer Especes"
             Me.TXT_Especes.SetFocus
                Exit Sub
                    End If


    End If
         
    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
   
    Unload Me 'De cette façon, à la prochaine saisie, les TextBoxs sont vides à l'ouverture


End Sub


Private Sub LanceFRM_Accueil_Click()
    FRM_Accueilshow
         End Sub


Private Sub BTN_Fermer_Click()
   Unload Me
         End Sub


Private Sub BTN_Annuler_Click()
    Unload
         End Sub


Private Sub Label1_Click()


End Sub




Private Sub UserForm_Click()


End Sub


 
0
Gil369 Messages postés 120 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 7 novembre 2018
26 mars 2008 à 08:49
Salut Julien,
je viens de voir ta proposition, je dois m absenter ce matin mais je reviens vite essayer ta version et te tiens au courant, j ai posté plus haut mon formulaire entier sans savoir si ça se fait, ni les conventions de ce site !
A+
Gilles
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 mars 2008 à 09:05
Re,
Petite version en couleur avec quelques COMMENTAIRES importants.

QUAND tu as une erreur comme celle ci;
"erreur de compilation, variable non definie" sur option1

C'est que soit il manque Dim Option1 as TypeDeDonnees, mais dans l'exemple de [auteur/LIBREMAX/1050148.aspx LIBRE_MAX] , c'était juste pour t'aiguiller vers les optionbutton.

Option Explicit

Private Sub Calendar1_Click()
   TXT_Date.Value = Calendar1.Value
End Sub<hr />
'QUI APPELLE CETTE PROCEDURE?
'Combobox_Editeur n'est PAS le nom de ton Formulaire?
'ET de ton combobox????? evite si tu ne veux pas
'te melanger les pinceaux
Private Sub Combobox_Editeur_Initialize()
Dim i As Byte
   For i = 1 To 100
       ComboBox_Editeur.AddItem "Ligne" & i
   Next i
End Sub<hr />
'Private Sub Frame_Nature_Click()
'INUTILE TU NE PEUX PAS METTRE D'AUTRE PROCEDURE DANS
'UNE PROCEDURE
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<hr />
Private Sub BTN_Cheque_Click()
   Call DisableControls
End Sub<hr />      
Private Sub BTN_Prelevement_Click()
   Call DisableControls
End Sub<hr />      

Private Sub BTN_Virement_Click()
   Call DisableControls
End Sub<hr />      
   
Private Sub BTN_Especes_Click()
   Call DisableControls
End Sub<hr />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<hr />
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
 
  '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
 

  Range("Comptes_2008!B65536").End(xlUp).Offset(1, 0).Value = TXT_Date.Value
  Range("Comptes_2008!C65536").End(xlUp).Offset(1, 0).Value = TXT_PieceN°.Value
  Range("Comptes_2008!D65536").End(xlUp).Offset(1, 0).Value = TXT_ChequeN°.Value
  Range("Comptes_2008!D65536").End(xlUp).Offset(1, 0).Value = TXT_Prelevement.Value
  Range("Comptes_2008!E65536").End(xlUp).Offset(1, 0).Value = ComboBox_Editeur.Value

  'De cette façon, à la prochaine saisie, les TextBoxs sont vides à l'ouverture
  Call Unload(Me)
End Sub<hr />
Private Sub LanceFRM_Accueil_Click()
   FRM_Accueilshow
End Sub<hr />
Private Sub BTN_Fermer_Click()
  Call Unload(Me)
End Sub<hr />
Private Sub BTN_Annuler_Click()
   'INUTILE DONNERA UNE ERREUR
   'Unload
End Sub<hr />, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
0
Gil369 Messages postés 120 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 7 novembre 2018
26 mars 2008 à 11:27
Re, avant de tester tout ça et surtout d essayer de "comprendre", quand tu me dis :

C'est que soit il manque Dim Option1 as TypeDeDonnees, mais dans l'exemple de LIBRE_MAX , c'était juste pour t'aiguiller vers les optionbutton.

pour :   If Option1.Value = True Then 'chèque
            If Me.TXT_ChequeN°.Text = "" Then
            MsgBox "Vous devez entrer un N° de chèque"
            Me.TXT_ChequeN°.SetFocus
                Exit Sub
        End If
Option 1 , 2 etc doit etre remplacé par le nom du bouton ou du texte ?

Je rame sec, mais je me soigne !
A+ Gilles
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 mars 2008 à 11:31
Re,
Regarde mon code tu comprendra => Par BTN_X

@+: Ju£i?n
Pensez: Réponse acceptée
0
Gil369 Messages postés 120 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 7 novembre 2018
26 mars 2008 à 12:18
re,
avant tout est ce que je dois valider "reponse acceptee" a chaque lecture ??

Autrement je plante sur : obj.setfocus quand je valide mon formulaire de saisies

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 'chèque
            If Me.TXT_ChequeN°.Text = "" Then
            MsgBox "Vous devez entrer un N° de chèque"
            Me.TXT_ChequeN°.SetFocus
                Exit Sub
        End If
       
            ElseIf BTN_Prelevement.Value = True Then 'Prélèvement
            If Me.TXT_Prelevement.Text = "" Then
            MsgBox "Vous devez entrer Prelevement"
            Me.TXT_Prelevement.SetFocus
                Exit Sub
                    End If


            ElseIf BTN_Virement.Value = True Then 'Virement
            If Me.TXT_Virement.Text = "" Then
             MsgBox "Vous devez entrer virement"
            Me.TXT_Virement.SetFocus
                Exit Sub
                    End If


            ElseIf BTN_Especes = True Then 'espèces
            If Me.TXT_Especes.Text = "" Then
            MsgBox "Vous devez entrer Especes"
             Me.TXT_Especes.SetFocus
                Exit Sub
                    End If




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
   


         
    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
   
    Call Unload(Me)  'De cette façon, à la prochaine saisie, les TextBoxs sont vides à l'ouverture


End Sub

A+ Gilles
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 mars 2008 à 12:24
Re,
1- NOn
2- Quel est l'erreur?

@+: Ju£i?n
Pensez: Réponse acceptée
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
26 mars 2008 à 12:34
Salut tout le monde,
Peut être qu' il faudra tester sur le type de l' obj avant.
(Certains objets n' int pas de focus).
If Obj.Text = vbNullString Then
       Call MsgBox("Vous devez entrer " & Txt)
       If TypeOf(Obj)="TextBox" Then Obj.SetFocus
       TestText = False
   End If

<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />
/PRE>
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
26 mars 2008 à 12:39
ou alors
Private Function TestText(Obj As TextBox, Txt As String) As Boolean
   TestText = True
   If Obj.Text = vbNullString Then
       Obj.SetFocus
      Call MsgBox("Vous devez entrer " & Txt)
 
     TestText = False
   End If
End Function

Passes le message après, car il a tendance à interrompre le traitement.

<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />
/PRE>
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 mars 2008 à 12:47
Re,
j'ai mis Object Car il y a un comboBox dans le lot je crois.

Donc peu etre faut il tester. mais théoriquement tu ne passes à la porcédure que ce que tu sais avoir un SetFocus.

@+: Ju£i?n
Pensez: Réponse acceptée
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
26 mars 2008 à 13:00
Théoriquement oui, mais l' erreur du SetFocus est assez courante.
Même pour un control désigné.
J' en recontre parfois même dans:
Private Sub TextBox1_Validate(Cancel As Boolean)
 If .....Then
   TextBox1.SetFocus
   Cancel=True ' ou False
End If
End Sub


et ce, sans raison apparente.
                         
<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />


/P>
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
26 mars 2008 à 13:04
Validate est un maivais exemple.
Le control a déjà le focus
Mais la remarque reste valable.

<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
<hr />
/PRE>
0
Gil369 Messages postés 120 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 7 novembre 2018
26 mars 2008 à 13:25
re,
quand je coche "optionbuton cheque"  et qu ensuite j entre un N° de cheque dans "textbox cheque", si je valide, j ai le msgbox "entrer prelevement", en validant par OK  : "erreur d execution2110, le focus ne peut etre deplace car celui ci est invisible, non active, ou d un type n acceptant pas le focus" et le debogage me ramene sur

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

A+ Gilles
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 mars 2008 à 13:29
Salut,
Et bien l'erreur t'aide.

Est ce que au moment ou tu souhaites faire le SetFocus sur OBJ, OBJ est VISIBLE, ENABLED?

@+: Ju£i?n
Pensez: Réponse acceptée
0
Gil369 Messages postés 120 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 7 novembre 2018
26 mars 2008 à 13:51
re, je viens d essayer en passant le message apres; pas d amelioration


Merci A+


Gilles


 
0
Rejoignez-nous