Partage
  • Partager sur Facebook
  • Partager sur Twitter

VBA Excel

formulaire de saisies

    26 mars 2012 à 13:04:06

    Bonjour,

    Je dois réaliser un fichier excel avec un formulaire de saisie.
    J'ai trouvé sur internet un code qui m'intéresse, que j'ai modifié +- selon mes besoins et que je vous présente ci-dessous car tous ne va pas comme je veux.
    Je précise que je suis débutant, que j'ai zappé des cours pour passer directement à la saisie de formulaire car c'est urgent.
    A l'ouverture du fichier excel, le formulaire se met en route mais sur la deuxième textbox.
    Je voudrais modifier le nom des textbox dans le code pour l'adapter à mes besoins, mais là erreur.
    Même chose quand je veux rajouter une colonne dans le code.
    Pouvez-vous m'aider à modifier ce code simplement sans fioriture de manière à ce que je puis (pour un débutant) le modifier si je dois rajouter des informations.
    Voici ci dessous le code que j'utilise et qui fonctionne. Mais quand je change les label dans le code et dans les propriétés des textbox, erreur.
    J'ai aussi joint une image pour essayé d'être plus clair.
    Je vous remercie tous d'avance.

    Private Sub CommandButton_Fermer_Click()
    Unload Me
    End Sub

    Private Sub CommandButton_Ajouter_Click()
    'Coloration des Labels en noir
    Label_Civilite.ForeColor = RGB(0, 0, 0)
    Label_Nom.ForeColor = RGB(0, 0, 0)
    Label_Prenom.ForeColor = RGB(0, 0, 0)
    Label_Adresse.ForeColor = RGB(0, 0, 0)
    Label_Lieu.ForeColor = RGB(0, 0, 0)

    'Contrôles de contenu
    If TextBox_Civilite.Value = "" Then
    Label_Civilite.ForeColor = RGB(255, 0, 0)
    ElseIf TextBox_Nom.Value = "" Then 'SI pas de "nom" ...
    Label_Nom.ForeColor = RGB(255, 0, 0) 'Label "nom" en rouge
    ElseIf TextBox_Prenom.Value = "" Then
    Label_Prenom.ForeColor = RGB(255, 0, 0)
    ElseIf TextBox_Adresse.Value = "" Then
    Label_Adresse.ForeColor = RGB(255, 0, 0)
    ElseIf TextBox_Lieu.Value = "" Then
    Label_Lieu.ForeColor = RGB(255, 0, 0)

    Else
    'Si le formulaire est complet, on insère les valeurs sur la feuille
    Dim no_ligne As Integer


    'no_ligne = N° de ligne de la dernière cellule non vide de la colonne +1
    no_ligne = Range("A65536").End(xlUp).Row + 1

    'Insertion des valeurs sur la feuille
    Cells(no_ligne, 1) = TextBox_Civilite.Value
    Cells(no_ligne, 2) = TextBox_Nom.Value
    Cells(no_ligne, 3) = TextBox_Prenom.Value
    Cells(no_ligne, 4) = TextBox_Adresse.Value
    Cells(no_ligne, 5) = TextBox_Lieu.Value

    'Après insertion, on remet les valeurs initiales
    TextBox_Civilite.Value = ""
    TextBox_Nom.Value = ""
    TextBox_Prenom.Value = ""
    TextBox_Adresse.Value = ""
    TextBox_Lieu.Value = ""

    End If
    End Sub

    Private Sub UserForm_Click()

    End Sub
    • Partager sur Facebook
    • Partager sur Twitter
      27 mars 2012 à 11:50:54

      Salut.

      La prochaine fois utilise les balises zCodes associées, ton code sera plus lisible. ;)

      Sinon j'ai bidouillé un peu ton code et pour moi ça donne ceci (testé et validé sous Excel 2003).
      Private Sub CommandButton_Fermer_Click()
        'appui sur le bouton "fermer" décharge le formulaire
        Unload Me
      End Sub
      
      Private Sub UserForm_Initialize()
        'initialisation du formulaire
        'les labels sont de couleur noire
        Label_Civilite.ForeColor = RGB(0, 0, 0)
        Label_Nom.ForeColor = RGB(0, 0, 0)
        Label_Prenom.ForeColor = RGB(0, 0, 0)
        Label_Adresse.ForeColor = RGB(0, 0, 0)
        Label_Lieu.ForeColor = RGB(0, 0, 0)
      End Sub
      
      Private Sub CommandButton_Ajouter_Click()
        'vérification des champs
        'chacun dans un if différent
        'puisque les champs sont indépendants
        'le 2ème n'est pas forcément vérifié à la suite du 1er
        
        'selon ce mode opératoire
        'si c'est vide alors on le colore en rouge
        'sinon on le colore en noir (car pas vide)
        If TextBox_Civilite.Value = "" Then
          Label_Civilite.ForeColor = RGB(255, 0, 0)
        Else
          Label_Civilite.ForeColor = RGB(0, 0, 0)
        End If
        If TextBox_Nom.Value = "" Then
          Label_Nom.ForeColor = RGB(255, 0, 0)
        Else
          Label_Nom.ForeColor = RGB(0, 0, 0)
        End If
        If TextBox_Prenom.Value = "" Then
          Label_Prenom.ForeColor = RGB(255, 0, 0)
        Else
          Label_Prenom.ForeColor = RGB(0, 0, 0)
        End If
        If TextBox_Adresse.Value = "" Then
          Label_Adresse.ForeColor = RGB(255, 0, 0)
        Else
          Label_Adresse.ForeColor = RGB(0, 0, 0)
        End If
        If TextBox_Lieu.Value = "" Then
          Label_Lieu.ForeColor = RGB(255, 0, 0)
        Else
          Label_Lieu.ForeColor = RGB(0, 0, 0)
        End If
        
        'si on détecte un champ vide parmi tous
        'alors on quitte la procédure
        '--> aura pour effet d'annuler le clic sur le bouton d'ajout
        If TextBox_Civilite.Value = "" Or _
            TextBox_Nom.Value = "" Or _
            TextBox_Prenom.Value = "" Or _
            TextBox_Adresse.Value = "" Or _
            TextBox_Lieu.Value = "" Then
            Exit Sub
        End If
          
        'Si le formulaire est complet,
        'on insère les valeurs sur la feuille
        Dim no_ligne As Integer
      
        'no_ligne = N° de ligne de la dernière cellule
        'non vide de la colonne +1
        no_ligne = Range("A65536").End(xlUp).Row + 1
          
        'Insertion des valeurs sur la feuille
        Cells(no_ligne, 1) = TextBox_Civilite.Value
        Cells(no_ligne, 2) = TextBox_Nom.Value
        Cells(no_ligne, 3) = TextBox_Prenom.Value
        Cells(no_ligne, 4) = TextBox_Adresse.Value
        Cells(no_ligne, 5) = TextBox_Lieu.Value
          
        'Après insertion, on remet les valeurs initiales
        TextBox_Civilite.Value = ""
        TextBox_Nom.Value = ""
        TextBox_Prenom.Value = ""
        TextBox_Adresse.Value = ""
        TextBox_Lieu.Value = ""
      
      End Sub
      
      • Partager sur Facebook
      • Partager sur Twitter

      Le Kansas City Shuffle.. c’est quand tout le monde regarde à gauche et que tu vas à droite.

      VBA Excel

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown