Vba excel

tjamgot Messages postés 31 Statut Membre -  
 Tigran -
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

  1. ThauTheme Messages postés 1564 Statut Membre 160
     
    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 

    0
  2. Tigran
     
    Merci je vais essayer de voir et de comprendre. Merci encore
    0