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 ...
Le voici
Bonjour,
Cela ne manque pas de bizarreries
[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 !