Problème Saisie des données Formulaire VBA

Bonjour,

Je souhaite réaliser un code VBA pour mon formulaire de saisie de donnée et je rencontre 2-3 petits problèmes.

Je possède 8 colones, et le but est que je puisse saisir mes données dans un formulaire qui transferera automatiquement les données dans leurs colonnes respectives.

Voici le nom de chaque colonne et leurs caractéristiques :

ID (combobox1) A1; First Name (Textbox1)B1 ; Last Name (Textbox2)C1 ; Gender (combobox2)D1; Nationality (combobox3)E1; Adress (Textbox3) F1; Postcode (textbox4) G1; Suburb (textbox5) H1.

Voici mon code avec en note les problèmes que je rencontre (je sens que je suis proche du résultat mais je bloque depuis plus de 2h maintenant) :

Option Explicit
Dim Ws As Worksheet

Private Sub UserForm_Player()
Dim J As Long
 Dim I As Integer
]ComboBox2.ColumnCount = 1
 ComboBox2.List() = Array("", "Male", "Female", "Other")
 ComboBox2.ColumnCount = 1
 ComboBox3.List() = Array("", "Australia", "France", "Spain") 'Dans mon formulaire je voudrai avoir le choix entre ces 3 options pour chaque combobox mais rien n'apparait dans les listes déroulantes.
 Set Ws = Sheets("CompleteDataPlayer")
 With Me.ComboBox1
 For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
 .AddItem Ws.Range("A" & J)
 Next J
 End With
 For I = 1 To 5
 Me.Controls("TextBox" & I).Visible = True
 Next I
End Sub

Private Sub ComboBox1_Change() ' Idem pour le combobox1 qui représente le numéro d'ID de chaque personne. Lorsque je tape "1", je devrai avoir automatiquement toutes les informations concernant cette personne.
 Dim Ligne As Long
 Dim I As Integer

 If Me.ComboBox1.ListIndex = -1 Then Exit Sub
 Ligne = Me.ComboBox1.ListIndex + 2
 ComboBox2 = Ws.Cells(Ligne, "D")
 ComboBox3 = Ws.Cells(Ligne, "E")
 For I = 1 To 5
 Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
 Next I
End Sub

Private Sub CommandButton1_Click() 'Problème également à ce niveau, lorsque je clique sur le bouton 1(qui est = à "add new contact"), je reçois bien le msgbox mais lorsque je clique sur "ok", rien ne se passe, les informations ne s'ajoute pas à la base de donnée.
 Dim L As Integer
 Dim yourmsgbox As String
 yourmsgbox = MsgBox("Are you sure to validate?", vbOKCancel, "Confirmation")
If yourmsgbox = vbOK Then
 L = Sheets("CompleteDataPlayer").Range("a65536").End(xlUp).Row + 1
 Range("A" & L).Value = ComboBox1
 Range("B" & L).Value = TextBox1
 Range("C" & L).Value = TextBox2
 Range("D" & L).Value = ComboBox2
 Range("E" & L).Value = ComboBox3
 Range("F" & L).Value = TextBox3
 Range("G" & L).Value = TextBox4
 Range("H" & L).Value = TextBox5
 End If
End Sub

Private Sub CommandButton2_Click() 'Même problème qu'avec le bouton 1, rje reçois le msgbox mais rien ne se passe au niveau de la data (j'ai vérifié l'orthographe de ma feuille est bonne)
 Dim Ligne As Long
 Dim I As Integer
 Dim yourmsgbox As String
 yourmsgbox = MsgBox("Are you sure to modify?", vbOKCancel, "Confirmation")
If yourmsgbox = vbOK Then
 If Me.ComboBox1.ListIndex = -1 Then Exit Sub
 Ligne = Me.ComboBox1.ListIndex + 2
 Ws.Cells(Ligne, "D") = ComboBox2
 Ws.Cells(Ligne, "E") = ComboBox3
 For I = 1 To 5
 If Me.Controls("TextBox" & I).Visible = True Then
 Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)
 End If
 Next I
 End If
End Sub
Private Sub CommandButton3_Click()
 Unload Me
End Sub

J'ai la sensation qu'une petite erreur, ou deux empêche la formulaire de bien fonctionner, j'espère que vous pourriez m'aider à la résoudre!

Je vous remercie d'avance,

cdlt

Bonjour,

Pour éviter à tous ceux qui auraient envie de t'aider ... de " reconstruire ton formulaire " pour le tester ...

il serait judicieux de joindre ton fichier ...

29formulaire.xlsm (24.65 Ko)

Le voici

Bonjour,

Cela ne manque pas de bizarreries , à commencer par l'invention d'un nouvel évènement !

[Indenté, le code pourrait être plaisant à lire, non indenté c'est toujours pénible...]

Erf désolé si l'ordre ne semble pas bon, j'ai pourtant suivi le tutoriel à la lettre :/ .(monassitanteexcel sur YouTube)

J'essaie de m'auto former au maximum mais apparement ce n'est pas encore ça^^

apparement ce n'est pas encore ça^^

Pas vraiment, mais pas à pas tu vas finir par apprendre !

Tu te rends dans le Module de ton Userform, là tu déroules la liste déroulante de gauche et tu cliques sur UserForm, cela aura pour effet d'afficher la déclaration de procédure par défaut de l'objet Userform, qui est Click (et qui est par ailleurs fort rarement utilisée) et de placer le curseur dans la proc. à écrire.

Tu laisses le curseur où il est et tu vas dérouler la liste de droite qui, alors, t'affichera tous les évènements disponibles pour l'objet. Tu pourras faire ton choix de l'évènement adéquat, puis ensuite effacer la déclaration non utilisée.

Cette méthode est utilisable pour tous les contrôles du Userform et il a toujours été recommandé de l'utiliser pour programmer un évènement de contrôle ou du Userform lui-même.

Cordialement.

Merci pour ce conseil!

J'ai trouver une solution à mon problème, merci encore,

Jordi

Tant mieux pour toi !

Mais je me permets de te faire observer que apprendre est certainement plus productif que trouver des solutions, tout simplement parce que apprenant, on sait (on en sait plus à tout le moins !), on comprend ce que l'on fait, et on devient apte à construire des solutions, au lieu d'avoir à les chercher...

Cordialement.

Tant mieux pour toi !

Mais je me permets de te faire observer que apprendre est certainement plus productif que trouver des solutions, tout simplement parce que apprenant, on sait (on en sait plus à tout le moins !), on comprend ce que l'on fait, et on devient apte à construire des solutions, au lieu d'avoir à les chercher...

Cordialement.

@ MFerrand

Pourquoi ne pas suggérer à Sébastien d'inscrire ce Message en lettres d'Or au Fronton du FORUM ...

Salut James !

Bonne journée à toi !

Rechercher des sujets similaires à "probleme saisie donnees formulaire vba"