Problème de formulaire associé à un tableau Excel

Bonjour à la congrégation excel.

J'ai essayé de suivre quelques informations ici, et j'ai créée un formulaire pour remplir un tableau excel et j'ai 2 soucis.
1 - Quand je remplit le formulaire, la ligne qui se remplit n'est

pas la 2 ème, celle juste en dessous des titres, mais la 3ème. Et de plus quand je rentre un nouvel adhérent dans le formulaire celui-ci écrase le premier.
2 - J'ai 2 Cbo, un sur le sexe et l'autre sur la fourniture de certificat médical (OUI - NON), mais celui-ci ne s'affiche pas dans mon tableau.
Pourriez-vous s'il vous plait me dire ce qui ne va pas.
Merci.

Bonjour,

Une proposition.

Cordialement

Merci à toi Zebulon2, le fichier fonctionne parfaitement, si je peux abuser de toi pour 2 petites choses

1 - Le format téléphone en 00.00.00.00.00 et Mail en txt@orange.fr

2 - Une fois appuyé sur "Ajout dans la base, se positionné sur la feuille "Source".

Encore merci à toi pour ta réactivité. Très sympa.

Bonjour à tous,

@militaire37000 Quelques points sur le code

'**********************************
'Procédure pour effacer les
'champs du formulaire
'**********************************
Private Sub BtnEffacer_Click()
    CboSexe = ""
    CboCertif = ""
    TxtNom = ""

Utiliser plutôt VbNullString qu'une chaine vide.

'**********************************
'Procédure pour effacer les
'champs du formulaire
'**********************************
Private Sub BtnEffacer_Click()
    CboSexe = vbNullString
    CboCertif = vbNullString
    TxtNom = vbNullString
    TxtPrénom = vbNullString

Ce bout de code :

'***********************************
'Activer le bouton enregistrement
'***********************************
Private Sub TxtNom_Change()
      If TxtNom <> vbNullString Then
      BtnEnregistrement.Enabled = True 'Active le bouton
    Else
      BtnEnregistrement.Enabled = False 'Desactive le bouton
      End If

End Sub

Peut être avantageusement remplacer par :

      BtnEnregistrement.Enabled = (TxtNom.Value > vbNullString)

Dans l'enregistrement,

'***********************************
' Procédure enregistrement
' des adhérents
'***********************************
Private Sub BtnEnregistrement_Click()

    Sheets("Source").Activate
    Range("A1").Select
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select
    ActiveCell = TxtNom.Value
    ActiveCell.Offset(0, 1).Value = TxtPrénom
    ActiveCell.Offset(0, 2).Value = TxtInscription
    ActiveCell.Offset(0, 3).Value = TxtNaissance
    ActiveCell.Offset(0, 5).Value = CboSexe
    ActiveCell.Offset(0, 6).Value = TxtAdresse
    ActiveCell.Offset(0, 7).Value = TxtComplément
    ActiveCell.Offset(0, 8).Value = TxtCP
    ActiveCell.Offset(0, 9).Value = TxtVille
    ActiveCell.Offset(0, 10).Value = TxtTel
    ActiveCell.Offset(0, 11).Value = TxtMail
    ActiveCell.Offset(0, 12).Value = CboCerti
    ActiveCell.Offset(0, 13).Value = TxtCertifMedical

End Sub

Pourquoi ne pas utiliser la force des tableaux structurés, en ajoutant tout simplement une ligne à celui-ci.

Ce code :

'***********************************
' Procédure enregistrement
' des adhérents
'***********************************
Private Sub BtnEnregistrement_Click()
    Sheets("Source").Activate
    Range("A1").Select
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select
    ActiveCell = TxtNom.Value
    ActiveCell.Offset(0, 1).Value = TxtPrénom
    ActiveCell.Offset(0, 2).Value = TxtInscription
    ActiveCell.Offset(0, 3).Value = TxtNaissance
    ActiveCell.Offset(0, 5).Value = CboSexe
    ActiveCell.Offset(0, 6).Value = TxtAdresse
    ActiveCell.Offset(0, 7).Value = TxtComplément
    ActiveCell.Offset(0, 8).Value = TxtCP
    ActiveCell.Offset(0, 9).Value = TxtVille
    ActiveCell.Offset(0, 10).Value = TxtTel
    ActiveCell.Offset(0, 11).Value = TxtMail
    ActiveCell.Offset(0, 12).Value = CboCerti
    ActiveCell.Offset(0, 13).Value = TxtCertifMedical
End Sub

Deviendrait alors :

Private Sub BtnEnregistrement_Click()

    Dim newLine As Excel.ListRow
    ' // J'ai donné un nom de code spécifique aux feuilles.
    Set newLine = vs_Source.Range("tSource").ListObject.ListRows.Add ' // .Add  ajoute à la fin. .Add 1 Ajoute la ligne au début

    With newLine
        .Range(1).Value = TxtNom.Value
        .Range(2).Value = TxtPrénom.Value
        .Range(3).Value = TxtInscription.Value
        .Range(4).Value = TxtNaissance.Value
        .Range(5).Value = CboSexe.Value
        .Range(6).Value = TxtAdresse.Value
        .Range(7).Value = TxtComplément.Value
        .Range(8).Value = TxtCP.Value
        .Range(9).Value = TxtVille.Value
        .Range(10).Value = TxtTel.Value
        .Range(11).Value = TxtMail.Value
        .Range(12).Value = CboCerti.Value
        .Range(13).Value = TxtCertifMedical.Value
    End With
' // On se positionne sur la feuille source
If Not vs_Source Is ActiveSheet Then Application.Goto reference:=vs_Source.Range("A1")
End Sub

Le format téléphone en 00.00.00.00.00 et Mail en txt@orange.fr

Vous pouvez déterminer ces formats directement dans le tableau. sélectionner les colonnes téléphone et appliquer le format voulu, idem pour la colonne Mail

Merci Jean-Paul.

Je vais tester.

re,

Fichier amendé avec les points de Jean-Paul (que je salue) et les formats demandés. pour l'émail ne saisir que le préfixe de l'adresse, si j'ai bien compris la demande.

Cordialement.

Merci à vous deux.

Rechercher des sujets similaires à "probleme formulaire associe tableau"