Activer un bouton sous conditions

bonjour à tous

j'ai un petit problème que je ne peux pas le résoudre

j'ai un bouton "ajout" que j'ai désactivé dans les propriété du bouton

je veux l'activé sous condition que tout les champs du formulaire soit rempli

seulement je ne peux faire ça que pour un seul champ

' activer le boutan ajouter

Private Sub cbocollaborateur_Change()

If cbocollaborateur <> "" Then

btnajout.Enabled = True

Else

btnajout.Enabled = False

End If

End Sub

Bonjour,

seulement je ne peux faire ça que pour un seul champ

Et pourquoi donc ! Tu peux le faire pour tous les champs !

Cependant rendre le bouton inactif n'est peut-être pas la meilleure méthode, car elle t'oblige à chaque modification du contenu d'un contrôle à vérifier tous les contrôles pour savoir si tu peux rendre le bouton actif. La méthode la plus économique reste de vérifier lorsque l'utilisateur clique sur le bouton pour valider, et de ne donner cours à la validation que si tous les champs sont remplis, et si ce n'est pas le cas le renvoyer remplir les champs manquants...

Cordialement.

JE SUIS NOVICE EN VBA DONC PEUX TU ME DONNER LE CODE

j'ai fait tout les codes mais le problème ils ne fonctionnent pas ensemble, il suffit qu'une case est remplie pour que le bouton ajout est active

' activer le boutan ajouter

Private Sub cbocollaborateur_Change()

If cbocollaborateur <> "" Then

btnajout.Enabled = True

Else

btnajout.Enabled = False

End If

End Sub

' activer le boutan ajouter

Private Sub cbodate_Change()

cbodate = Format(cbodate, "DD/MM/YYYY")

If cbodate <> "" Then

btnajout.Enabled = True

Else

btnajout.Enabled = False

End If

End Sub

' activer le boutan ajouter

Private Sub cbodossier_Change()

If cbodossier <> "" Then

btnajout.Enabled = True

Else

btnajout.Enabled = False

End If

End Sub

' activer le boutan ajouter

Private Sub cbotache_Change()

If cbotache <> "" Then

btnajout.Enabled = True

Else

btnajout.Enabled = False

End If

End Sub

' activer le boutan ajouter

Private Sub txtdebut_Change()

If txtdebut <> "" Then

btnajout.Enabled = True

Else

btnajout.Enabled = False

End If

End Sub

' activer le boutan ajouter

Private Sub Txtfin_Change()

If Txtfin <> "" Then

btnajout.Enabled = True

Else

btnajout.Enabled = False

End If

End Sub

Bonsoir Sassi,

Bien le bonsoir MFerrand

Pour illustrer le propos de MFerrand, soit :

- tu testes à chaque changement de tes contrôles CBO ou TXT...

Public Sub TestValidation()
'
Me.btnajout.Enabled = IIf(Me.cbocollaborateur.Text <> "" And Me.cbodate.Text <> "" And _
    Me.cbodossier.Text <> "" And Me.cbotache.Text <> "" And Me.txtdebut.Text <> "" _
        And Me.Txtfin.Text <> "", True, False)
'
End Sub

... et dans ce cas, dans chaque Sub Change(), tu effaces tout (sauf le formatage d'une des réponses) et tu remplaces par

Call TestValidation

- soit, comme le suggère MFerrand (qui a toujours raison! ), tu valides le déroulement de ta validation lors du clic sur le bouton (qui, tu auras compris, est toujours activé)...

Private Sub btnajout_Click()
'
If Me.cbocollaborateur.Text <> "" And Me.cbodate.Text <> "" And _
    Me.cbodossier.Text <> "" And Me.cbotache.Text <> "" And Me.txtdebut.Text <> "" _
        And Me.Txtfin.Text <> "" Then
        'Déroulement du code
End If
'
End Sub

... et tu peux effacer toutes tes sub Change() sauf celle qui formate une réponse.

Au choix!

A+

merci bien

j(ai choisi : If Me.cbocollaborateur.Text <> "" And Me.cbodate.Text <> "" And _

Me.cbodossier.Text <> "" And Me.cbotache.Text <> "" And Me.txtdebut.Text <> "" _

And Me.Txtfin.Text <> "" Then

'Déroulement du code

End If

'

End Sub

mais elle a fonctionné que pour les 3 premier les autres non!

pour quoi ?


'ajout des donner dans la base de donnérs

Private Sub btnajout_Click()

If Me.cbocollaborateur.Text <> "" And Me.cbodate.Text <> "" And _

Me.cbodossier.Text <> "" And Me.cbotache.Text <> "" And Me.txtdebut.Text <> "" _

And Me.Txtfin.Text <> "" Then

btnajout.Enabled = True

Else

btnajout.Enabled = False

End If

With Sheets("source")

i = 2

Do Until .Cells(i, 1).Value = ""

i = i + 1

Loop

.Cells(i, 1).Value = Me.cbocollaborateur.Value

.Cells(i, 2).Value = Me.cbodate.Value

.Cells(i, 3).Value = Me.cbodossier.Value

.Cells(i, 4).Value = Me.cbotache.Value

.Cells(i, 5).Value = Me.txtdebut.Value

.Cells(i, 6).Value = Me.Txtfin.Value

End With

MsgBox " votre saisie a bien été ajouter", vbOKOnly + vbInformation, "CONFIRMATION"

End Sub

Salut Sassi,

comme je n'ai pas de boule de cristal...

A+

code : 2Scompta@Tunis

Pas compris ton code mais essaie ceci.

Private Sub btnajout_Click()
'
If Me.cbocollaborateur.Text <> "" And Me.cbodate.Text <> "" And _
        Me.cbodossier.Text <> "" And Me.cbotache.Text <> "" And Me.txtdebut.Text <> "" _
                And Me.Txtfin.Text <> "" Then
    With Sheets("source")
        iRow = Range("A" & Rows.Count).End(xlUp).Row + 1
        .Cells(iRow, 1).Value = Me.cbocollaborateur.Value
        .Cells(iRow, 2).Value = Me.cbodate.Value
        .Cells(iRow, 3).Value = Me.cbodossier.Value
        .Cells(iRow, 4).Value = Me.cbotache.Value
        .Cells(iRow, 5).Value = Me.txtdebut.Value
        .Cells(iRow, 6).Value = Me.Txtfin.Value
    End With
    MsgBox "Votre saisie a bien été ajoutée!", vbOKOnly + vbInformation, "CONFIRMATION"
End If
'
End Sub

A+

merci

mais c le même problème ....bouton activé après la saisie de la troisième variable

Si tu as bien suivi les instructions plus haut pour le choix que tu as fait, le bouton est de toute façon TOUJOURS activé.

C'est le clic-bouton qui teste d'abord la validité des données AVANT d'écrire tes données dans ta feuille-cible!

Mais...

A+

curulis57 a écrit :

Bien le bonsoir MFerrand

Pour illustrer le propos de MFerrand, soit :

- tu testes à chaque changement de tes contrôles CBO ou TXT...

Public Sub TestValidation()
'
Me.btnajout.Enabled = IIf(Me.cbocollaborateur.Text <> "" And Me.cbodate.Text <> "" And _
    Me.cbodossier.Text <> "" And Me.cbotache.Text <> "" And Me.txtdebut.Text <> "" _
        And Me.Txtfin.Text <> "", True, False)
'
End Sub

Salut Curulis !

J'ai fort apprécié ce bout de code... mais non choisi par l'intéressé. Je n'en suis pas vraiment surpris mais ya de quoi décourager d'intervenir (du moins de faire un effort pour essayer de coder le plus intelligemment possible !)

Bonne soirée.

Bonsoir MFerrand,

pourquoi as-tu tant apprécié?

C'est vraiment le b.a-ba du b.a-ba pour nous, sans prétention!

Bah, je suppose qu'on a dû tous patauger, à un moment ou à un autre!

Patience et longueur de temps...

A+

Bonjour,

Ne sois pas si modeste ! Tu sais bien qu'écrire une telle expression sous cette forme réclame une bonne pratique régulière, la compréhension de ce que produira le code qu'on écrit, une vue un peu étoffée de différentes façons d'écrire pour produire un même résultat... et qu'on est assez loin de ça quand on débute !

Bonne journée.

Mferrand

Je suis navré de ne pas choisi ta methode, c'est par ce qu'elle.n ai pas la meuimleur mais parce que je suis novice et j ai choisi celle que j'ai pu comprendre ......je te merci pour ton effort et je compte sur toi pour m aider sur les sujet a venir certainement parce que je me mets pour apprendre un peux de vba par mes propre moyen (youtube..forume....)

Merci encore

Rechercher des sujets similaires à "activer bouton conditions"