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.
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 = vbNullStringCe 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 SubPeut ê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 SubPourquoi 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 SubDeviendrait 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 SubLe 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.