Vba excel

Fermé
tjamgot Messages postés 27 Date d'inscription jeudi 21 février 2013 Statut Membre Dernière intervention 11 août 2023 - 26 juin 2019 à 15:12
 Tigran - 28 juin 2019 à 02:00
Bonjour,

Comment saisir plusieurs champ : ex: (plusieurs txt, cbo) en vba excel pour:
- Si il ni a rien d’écrit dans les champs "Le btn enregistrer est en mode (enabled fals) bloquer ".
- Si tous les champs sont remplis "le btn enregistrer est activé " envoiler sur la feuille de "Saisie"
merci.

ps : Je suis novice en VBA j'essaie de faire un petit programme de gestion

2 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
27 juin 2019 à 09:01
Bonjour Tjamgot, bonjour le forum,

J'utilise la propriété [Tag] des contrôles qui renvoient leur valeur vers le tableau (TextBoxes, Comboboxes, etc.), Je leur attribue la valeur de la colonne où leur valeur doit être renvoyée.
Par exemple : propriété [Tag] de la TextBox1 = A / propriété [Tag] de la ComboBox1 = B / propriété [Tag] de la TextBox2 = C / etc.
Puis ce code sur le bouton Enregistrer (à adapter à ton cas) :

Private Sub CommandButton1_Click()
Dim CTRL As Control 'déclare la variable CTRL (ConTRôLe)
Dim PLV As Integer 'déclare la variable LI (Première Ligne Vide)

'Empêcher les champs non renseignés
For Each CTRL In Me.Controls 'boucle sur tous les contrôles de l'Userform en cours
    If CTRL.Tag <> "" Then 'condition 1 : si la propriété [Tag] du contrôle n'est pas vide
        If CTRL.Value = "" Then 'condition 2 : si le contrôle est vide
            MsgBox "Vous devez renseigner ce champ !" 'message
            CTRL.SetFocus 'place le curseur dans le contrôle
            Exit Sub 'sort de la procédure
        End If 'fin de la condition 2
    End If 'fin de la condition 1
Next CTRL 'prochain contrôle de la boucle

'renvoyer les données de Userform dans le tableau
PLV = Worksheets("Feuil1").Cells(Application.Rows.Count, "A").End(xlUp).Row + 1 'définit la première ligne vide PLV de la colonne A
For Each CTRL In Me.Controls 'boucle sur tous les contrôles de l'Userform en cours
    'renvoie la valeur du contrôle dans la cellulue ligne=LI, colonne=propriété [Tag] du contrôle
    Worksheets("Feuil1").Cells(LI, CTRL.Tag).Value = CTRL.Value
Next CTRL 'prochain contrôle de la boucle
End Sub 

Merci je vais essayer de voir et de comprendre. Merci encore