Traitement des Boutons d'option texte et boolean (UserForm et BD)

cathodique

XLDnaute Barbatruc
Bonjour,

Je reviens vers vous solliciter votre aide, on m'informe ce matin d'une modification dans notre fichier. Je tiens à remercier Papou-net pour son aide suite à mon post concernant ce fichier. Je remercie aussi Paritec qui m'a aidé pour un problème similaire mais sans Boutons d'option. Paritec avait solutionné le problème en utilisant un module de classe.

Il s'agit de faire une vérification de doublon par userform et activation d'un bouton. Ce code fonctionne bien en traitant les 2 boutons d'option en tant que booléen. Dans la BD, c'est le caption des boutons qui est stocké donc la vérification des doublons doit se faire sur du texte (dans notre cas "JOUR" ou "O/F").

J'ai effectué des tests et par exemple pour:
"01/08/1993, G1, A/O, jour", ce rapport existe -->message d'avertissement, normal
"01/08/1993, G1, A/O, O/F", ce rapport n'existe pas --> message d'avertissement, pas normal;
je dois pouvoir le générer.

Par contre pour l'activation du bouton, ils sont traités en tant que booléens.

Je vous remercie pour votre aide, j'ai beaucoup appris sur ce forum. Merci à toutes et à tous.

Cordialement,
 

Pièces jointes

  • Archivage OptionButton.xlsm
    111 KB · Affichages: 64

Paf

XLDnaute Barbatruc
Re : Traitement des Boutons d'option texte et boolean (UserForm et BD)

Bonjour,

Pas sûr d'avoir tout compris.

Une proposition:
Pourquoi ne pas donner aux optionbutton 1 et 2 la caption "O/F" et "JOUR"

et dans la Sub verifdoublon_New() modifier cette ligne :
Code:
If c.Offset(0, 18) = Saisie_New.OpBt1 Or c.Offset(0, 18) = Saisie_New.OpBt2 Then
en
Code:
If c.Offset(0, 18) = IIf(OpBt1 = True, OpBt1.Caption, OpBt2.Caption) Then
ainsi, si option button1 est coché on fait le test avec O/F, sinon on fait le test avec JOUR

A+
 

cathodique

XLDnaute Barbatruc
Re : Traitement des Boutons d'option texte et boolean (UserForm et BD)

Bonjour Paf,

Je te remercie Paf, mais ta proposition ne fonctionne pas, la vérification ne s'effectue même plus.

Je joins un nouveau fichier, sur le premier j'avais juste oublié de modifier sur l'userform les caption de boutons d'option.

Je te remercie quand même pour ton aide. Tu as vu juste, c'est le caption (texte) qu'il faut prendre en compte, et le fait qu'ils soient activés ou non, plus que on ne peut activer qu'un seul. C'est ce qui est pris en compte pour activer le commandButton "Valider".

ça doit être quelque chose de simple, mais mes connaissances et mon expérience en VBA sont vraiment des plus élémentaires.

merci encore une fois.

Cordialement,
 

Pièces jointes

  • Archivage OptionButton bis.xlsm
    110.8 KB · Affichages: 50

Papou-net

XLDnaute Barbatruc
Re : Traitement des Boutons d'option texte et boolean (UserForm et BD)

Bonjour cathodique,
Bonjour Paf,

Cher ami du neuf-trois,

Je te propose de modifier la procédure "verifdoublon" comme ceci:

Code:
Sub verifdoublon_New()
Dim i&, c As Range, Ob As String
    If Saisie_New.T1 <> "" And Saisie_New.Cb1 <> "" Then
        For Each c In Feuil1.Range("C:C").SpecialCells(xlCellTypeConstants)
          If c = CDate(Saisie_New.T1) And c.Offset(0, 1) = Saisie_New.Cb1 And c.Offset(0, 2) = Saisie_New.Cb2 Then
            Ob = ""
            If Saisie_New.OpBt1 Then Ob = UCase(Saisie_New.OpBt1.Caption)
            If Saisie_New.OpBt2 Then Ob = UCase(Saisie_New.OpBt2.Caption)
            If Ob = c.Offset(0, 15) Then
              ok = 1
              MsgBox "Déjà enregistré, modifier la date!", vbCritical, "Archive Base de Données"
              'Saisie_New.T1 = ""
              Exit Sub
            End If
          End If
        Next
    End If
End Sub
Après quelques essais rapides, je pense que ça fonctionne correctement.

Cordialement.
 

Paf

XLDnaute Barbatruc
Re : Traitement des Boutons d'option texte et boolean (UserForm et BD)

Re,
je n'avais pas tout bien regardé ,

Code:
If c.Offset(0, 18) = Saisie_New.OpBt1 Or c.Offset(0, 18) = Saisie_New.OpBt2 Then
on cherche dans la cellule qui a un décalage de 18 colonnes par rapport à "c" qui est en colonne 3. Donc on cherche en colonne 21 et comme en colonne 21 il n'y a rien, le test est toujours faux! il faudrait If c.Offset(0, 15)

Par ailleurs la caption de OpBt1 est Jour alors que dans la feuille on a la valeur JOUR ce qui est différent ! Donc modifier la caption.

D'autre part, le fait de déclencher le code de vérification de doublon au survol de la USF ne semble pas judicieux, puisqu'il peut être déclenché sans qu'un OpBt soit coché. Mieux vaut déplacer le code de lancement en Private Sub OpBt1_Click() et Private Sub OpBt2_Click()

sinon ma proposition (après modif du décalage) fonctionne:
Code:
If c.Offset(0, 15) = IIf(OpBt1 = True, OpBt1.Caption, OpBt2.Caption) Then

A+
 

cathodique

XLDnaute Barbatruc
[Résolu] : Traitement des Boutons d'option texte et boolean (UserForm et BD)

Bonsoir Papou-net, Bonsoir Paf, Bonsoir Le Forum,

Tout d'abord, toutes mes excuses pour le retard. Avec la rentrée scolaire, je sais plus où donner de la tête.

Je viens de tester le code de Papou-net et il fonctionne très bien. Merci Paf pour tes conseils, concernant les boutons d'option. Normalement, l'un d'eux doit être activer pour permettre l'activation du bouton de validation.

Merci beaucoup à vous deux, grâce à vous je vais pouvoir avancer dans mon projet. Mon problème est résolu, merci.

Cordialement,
 

Statistiques des forums

Discussions
312 081
Messages
2 085 157
Membres
102 798
dernier inscrit
Choky13