Besoin Aide : Activation Bouton Ajout si des champs sont rempli

Edoliie

XLDnaute Nouveau
Bonjour,

Je n'arrive pas à faire fonctionner l'activation de mon bouton ajout une fois les champs rempli.
A l'ouverture de mon formulaire le bouton "AJ_FORAJST" est activé.
Si tout les champs ne sont pas complété, si on clique sur le bouton celui-ci se désactive.
Mais une fois les champs complété le bouton reste désactivé, il faut quitter et rouvrir le formulaire.

Voici mes lignes de code :

VB:
Private Sub AJ_FORAJST_Click()

'******************************************************
'Obligation de compléter champs
'******************************************************

Me.AJ_FORAJST.Enabled = False 'Desactivé

    If Len(Me.RSTB_FORAJST) <> "" Then
    ElseIf Len(Me.ADTB1_FORAJST) <> "" Then
    ElseIf Len(Me.CPTB_FORAJST) <> "" Then
    ElseIf Len(Me.VITB_FORAJST) <> "" Then
    ElseIf Len(Me.SITB_FORAJST) <> "" Then
    ElseIf Len(Me.FJCB_FORAJST) <> "" Then
        Me.AJ_FORAJST.Enabled = True 'Activé

'******************************************************
' Procédure d'ajouter de nouvel éléments dans la base
' de donnée dans la source "FEU_ST"
'******************************************************

Else

    Sheets("FEU_ST").Activate 'Activer la feuille source
    Range("A1").Select 'Sélectionner la première cellule du tableau
    Selection.End(xlDown).Select 'Sélectionner la dernière ligne du tableau
    Selection.Offset(1, 0).Select 'Sélection de la dernière ligne + une ligne en bas
        ActiveCell = RSTB_FORAJST.Value
        ActiveCell.Offset(0, 1).Value = ADTB1_FORAJST
        ActiveCell.Offset(0, 2).Value = ADTB2_FORAJST
        ActiveCell.Offset(0, 3).Value = CPTB_FORAJST
        ActiveCell.Offset(0, 4).Value = VITB_FORAJST
        ActiveCell.Offset(0, 5).Value = TLTB_FORAJST
        ActiveCell.Offset(0, 6).Value = MLTB_FORAJST
        ActiveCell.Offset(0, 7).Value = SITB_FORAJST
        ActiveCell.Offset(0, 8).Value = FJCB_FORAJST

'******************************************************
' Procédure pour réinitialiser le formulaire
'******************************************************

    RSTB_FORAJST = ""
    ADTB1_FORAJST = ""
    ADTB2_FORAJST = ""
    CPTB_FORAJST = ""
    VITB_FORAJST = ""
    TLTB_FORAJST = ""
    MLTB_FORAJST = ""
    SITB_FORAJST = ""
    FJCB_FORAJST = ""

End If

End Sub

Je vous remercie par avance de l'aide que vous pourrez m'apporter.
 
Dernière édition:

kingfadhel

XLDnaute Impliqué
Bonsoir à tous,

Juste un changement dans le bloc if

VB:
Private Sub AJ_FORAJST_Click()

'******************************************************
'Obligation de compléter champs
'******************************************************

'Me.AJ_FORAJST.Enabled = False 'Desactivé

    If Len(Me.RSTB_FORAJST) <> "" Then
    ElseIf Len(Me.ADTB1_FORAJST) <> "" Then
    ElseIf Len(Me.CPTB_FORAJST) <> "" Then
    ElseIf Len(Me.VITB_FORAJST) <> "" Then
    ElseIf Len(Me.SITB_FORAJST) <> "" Then
    ElseIf Len(Me.FJCB_FORAJST) <> "" Then
       '_____ Me.AJ_FORAJST.Enabled = True 'Activé

'******************************************************
' Procédure d'ajouter de nouvel éléments dans la base
' de donnée dans la source "FEU_ST"
'******************************************************



    Sheets("FEU_ST").Activate 'Activer la feuille source
    Range("A1").Select 'Sélectionner la première cellule du tableau
    Selection.End(xlDown).Select 'Sélectionner la dernière ligne du tableau
    Selection.Offset(1, 0).Select 'Sélection de la dernière ligne + une ligne en bas
        ActiveCell = RSTB_FORAJST.Value
        ActiveCell.Offset(0, 1).Value = ADTB1_FORAJST
        ActiveCell.Offset(0, 2).Value = ADTB2_FORAJST
        ActiveCell.Offset(0, 3).Value = CPTB_FORAJST
        ActiveCell.Offset(0, 4).Value = VITB_FORAJST
        ActiveCell.Offset(0, 5).Value = TLTB_FORAJST
        ActiveCell.Offset(0, 6).Value = MLTB_FORAJST
        ActiveCell.Offset(0, 7).Value = SITB_FORAJST
        ActiveCell.Offset(0, 8).Value = FJCB_FORAJST

'******************************************************
' Procédure pour réinitialiser le formulaire
'******************************************************

    RSTB_FORAJST = ""
    ADTB1_FORAJST = ""
    ADTB2_FORAJST = ""
    CPTB_FORAJST = ""
    VITB_FORAJST = ""
    TLTB_FORAJST = ""
    MLTB_FORAJST = ""
    SITB_FORAJST = ""
    FJCB_FORAJST = ""
   
Else
Msgbox "Tous les champs sont obligatoires"
End If
End Sub
 

Jacky67

XLDnaute Barbatruc
Bonsoir,
Perso, je laisserais ce bouton actif et ceci comme code
VB:
Private Sub AJ_FORAJST_Click()
    Dim TousRempli As Boolean
    '******************************************************
    'Obligation de compléter champs
    '******************************************************
    TousRempli = Me.RSTB_FORAJST <> "" And _
                 Me.ADTB1_FORAJST <> "" And _
                 Me.CPTB_FORAJST <> "" And _
                 Me.VITB_FORAJST <> "" And _
                 Me.SITB_FORAJST <> "" And _
                 Me.FJCB_FORAJST <> ""
    If Not TousRempli Then
        MsgBox "Donnée(s) manquante(s)", , "Information"
    Else
        '******************************************************
        ' Procédure d'ajouter de nouvel éléments dans la base
        ' de donnée dans la source "FEU_ST"
        '******************************************************

'*******  Suite de la procédure******
NB: Toutes les 'box' ne sont pas controlées
 
Dernière édition:

Edoliie

XLDnaute Nouveau
Bonsoir,
Perso, je laisserais ce bouton actif et ceci comme code
NB: Toutes les 'box' ne sont pas controlées

Je vous remercie, cela a résolu mon problème
J'ai juste du corriger un peu le code pour qu'il fonctionne

VB:
Private Sub AJ_FORAJST_Click()
    Dim TousRempli As Boolean
    '******************************************************
    'Obligation de compléter champs
    '******************************************************
    TousRempli = Me.RSTB_FORAJST <> "" 
    TousRempli = Me.ADTB1_FORAJST <> "" 
    TousRempli = Me.CPTB_FORAJST <> "" 
    TousRempli = Me.VITB_FORAJST <> "" 
    TousRempli = Me.SITB_FORAJST <> "" 
    TousRempli = Me.FJCB_FORAJST <> ""
    If Not TousRempli Then
        MsgBox "Donnée(s) manquante(s)", , "Information"
    Else
        '******************************************************
        ' Procédure d'ajouter de nouvel éléments dans la base
        ' de donnée dans la source "FEU_ST"
        '******************************************************

'*******  Suite de la procédure******
 

Jacky67

XLDnaute Barbatruc
J'ai juste du corriger un peu le code pour qu'il fonctionne
RE..
Heu….
Le code copié tel quel, il n'y a rien à corriger pour qu'il fonctionne
l'instruction "TousRempli" peut-être écrite sur une ligne
J'avais mis des " _" (espace+tiret bas) pour forcer VBA à aller à la ligne pour une meilleure lisibilité.

VB:
Private Sub AJ_FORAJST_Click()
    Dim TousRempli As Boolean
    '******************************************************
    'Obligation de compléter champs
    '******************************************************
    TousRempli = Me.RSTB_FORAJST <> "" And Me.ADTB1_FORAJST <> "" And Me.CPTB_FORAJST <> "" And Me.VITB_FORAJST <> "" And Me.SITB_FORAJST <> "" And Me.FJCB_FORAJST <> ""
    If Not TousRempli Then
        MsgBox "Donnée(s) manquante(s)", , "Information"
    Else

        '******************************************************
        ' Procédure d'ajouter de nouvel éléments dans la base
        ' de donnée dans la source "FEU_ST"
        '******************************************************
'*******  Suite de la procédure******
Mais l'essentiel étant que cela fonctionne o_O;)
Ce dont je doute , avec ton code c'est "Me.FJCB_FORAJST " (la dernière vérifiée) qui l'emporte, si cette box à elle seule est saisie, le code considère comme tous saisie.

Bonne nuit
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 136
Membres
112 667
dernier inscrit
foyoman