Problème formulaire | VBA
Hello tout le monde,
J'ai une petite requête, j'utilise ce code pour mettre en place un formulaire et ça à l'air de marcher. Je l'ai adapté à mes besoins afin d'y ajouter plus de champs et l'objectif est de l'utiliser afin de remplir une base de données. Quand je souhaite rajouter un "joueur" dans ce cas là, il n'y a pas de problème mais lorsque je souhaite modifié, c'est un peu plus compliqué. Il suffit de cliquer sur un ID déjà créée afin d'afficher toutes ses données et de les modifier et ensuite, appuyer sur le boutton update mais lorsque je le fais, le titre "TITLE" prend la place du nom "NAME" et inversément (dans la BDD). Je ne sais vraiment pas d'où ça vient. Vous pouvez faire le test en appuyant sur le bouton "ADD or UPDATE" de la première sheet et puis tenter de modifier vos informations.
Le fichier en pièce jointe :
Bonjour,
Essayez déjà en modifiant ce code
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
For I = 1 To 27
Select Case I
Case Is < 3: Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1)
Case Is = 3: ComboBox2 = Ws.Cells(Ligne, "D")
Case Is > 3: Me.Controls("TextBox" & I - 1) = Ws.Cells(Ligne, I + 1)
End Select
Next I
End SubVous pouvez adapter votre modification sur base de la partie Select Case dans le code.
Pensez à mettre votre feuille DATABASE mettre au format structuré. Cela changera les codes mais cela peut être plus facile par la suite.
Si ok -->
Bonjour, le problème est que vous alimentez vos textbox avec une boucle quand vous utilisez la combobox ID.
For I = 1 To 27
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
Next ICependant en colonne 4 ce n'est pas une info de textbox mais le contenu de votre combox Title ceci provoque une inversion.
A la fin de la boucle refaire l'alimentation des 2premières textbox et de la combobox2
Idem lors de l'évènement "Update".
Haaf Dan plus rapide .. Bonjour Dan.
J'ai testé en remplaçant le code sur la comboBox1_change par le votre et lorsque j'essaie de rajouter un joueur...Aussi j'ai remarqué qu'une donnée apparaît sur la première sheet... Une idée ?
le code que je vous ai donné n'a rien avoir avec l'ajout mais uniquement avec le changement de votre combobox1
Pour la question de l'ajout, votre erreur est normale puis que vous appelez l'usf depuis votre feuille Dashbord et que votre code d'ajout ne mentionne pas la feuille où doivent aller les données
Dans votre Private Sub CommandButton1_Click(), vous devez mentionner le nom de votre feuille dans chacune des lignes Range("A" & L).Value
Votre code à modifier
'début du code
With Sheets("DATABASE")
.Range("A" & L).Value = ComboBox1
.Range("D" & L).Value = ComboBox2
.Range("B" & L).Value = TextBox1
'le reste du code
End with
End if
End subEdit : pour le bouton UPDATE, votre modifié comme ceci :
Private Sub CommandButton2_Click()
Dim L As Long
Dim I as byte
If MsgBox("Do you confirm the modification of this consultant ?", vbYesNo, "Change confirmation") = vbYes Then
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
With Sheets("DATABASE")
L = .Range("A:A").Find(ComboBox1.Value, LookIn:=xlValues, lookat:=xlWhole).Row
.Range("A" & L).Value = ComboBox1
.Range("D" & L).Value = ComboBox2
.Range("B" & L).Value = TextBox1
.Range("C" & L).Value = TextBox2
For I = 3 To 27
.Cells(L, I + 2) = Controls("Textbox" & I)
Next I
End With
End If
Unload Me
End Subsi ok
Hello,
Pour la modification des éléments, ça fonctionne nickel mais pour l'ajout des joueurs, ça continue de m'afficher les données sur la première sheets... Est-ce que je fais mal l'appel de la feuille ?
'Pour le bouton UPDATE CONSULTANT
Private Sub CommandButton2_Click()
Dim L As Long
Dim I As Byte
If MsgBox("Do you confirm the modification of this consultant ?", vbYesNo, "Change confirmation") = vbYes Then
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
With Sheets("DATABASE")
L = .Range("A:A").Find(ComboBox1.Value, LookIn:=xlValues, lookat:=xlWhole).Row
.Range("A" & L).Value = ComboBox1
.Range("D" & L).Value = ComboBox2
.Range("B" & L).Value = TextBox1
.Range("C" & L).Value = TextBox2
.Range("E" & L).Value = TextBox3
.Range("F" & L).Value = TextBox4
.Range("G" & L).Value = TextBox5
.Range("H" & L).Value = TextBox6
.Range("I" & L).Value = TextBox7
.Range("J" & L).Value = TextBox8
.Range("K" & L).Value = TextBox9
.Range("L" & L).Value = TextBox10
.Range("M" & L).Value = TextBox11
.Range("N" & L).Value = TextBox12
.Range("O" & L).Value = TextBox13
.Range("P" & L).Value = TextBox14
.Range("Q" & L).Value = TextBox15
.Range("R" & L).Value = TextBox16
.Range("S" & L).Value = TextBox17
.Range("T" & L).Value = TextBox18
.Range("U" & L).Value = TextBox19
.Range("V" & L).Value = TextBox20
.Range("W" & L).Value = TextBox21
.Range("X" & L).Value = TextBox22
.Range("Y" & L).Value = TextBox23
.Range("Z" & L).Value = TextBox24
.Range("AA" & L).Value = TextBox25
.Range("AB" & L).Value = TextBox26
.Range("AC" & L).Value = TextBox27
For I = 3 To 27
.Cells(L, I + 2) = Controls("Textbox" & I)
Next I
End With
End If
Unload Me
End SubRE Bonjour, pour l'ajout il y a un problème. vous validez le contenu de la combobox 1 dans la colonne A
Seulement la combobox1 n'est pas sensé être renseignée en mode ajout puisque le numéro ID n'existe pas encore.
Comment composez vous vos numéro ID ?
Il serait peut-être préférable de reserver l'utilisation de la combobox1 au mode intérro-modification et d'utiliser une
Textebox pour la saisie des nouveaux ID ?
Nota dans le code d'ajout la feuille DATABASE n'était pas renseignée donc écriture sur l'onglet en cours.
Re hello,
Yes, XmenPL, ça marche nickel ! Après la question de l'ID était en réflexion. De base, l'idée globale c'est qu'un ID soit attribué automatiquement à chaque ajout d'un joueur. À titre d'exemple, lorsque l'on rajoute un premier joueur, celui-ci se voit attribuer l'ID 1 et si l'on souhaite rajouter un second joueur, ce dernier se voit automatiquement attribuer l'ID 2. Maintenant, je ne sais pas encore comment le faire de manière automatique et je dois encore chercher la façon dont je pourrais procéder mais globalement, l'idée y est. Pour l'instant l'ID doit être entré manuellement par la personne qui complète le formulaire mais à terme, oui je devrais trouver un moyen d'automatiser l'opération et de permettre également la suppression d'un joueur via le formulaire.
En tout cas, un grand merci à vous deux !
Effectivement, à voir à l'utilisation dans l'absolu Ecrire ID1 ID2 .... çà ne pas être d'un grand secours surtout en
mode interrogation : Qui est l'ID29 ?
La variante serait peut-être au moment de la validation de renseigner la colonne A avec La textbox 1 + La texbox 2
Vous auriez ainsi votre combobox1 qui pourra permettre d'interroger par nom prénom.
çà donnerai à la validation une ligne du genre :
WS.Range("A" &L).value=Textbox1.value &" "&Textbox2.value
Ainsi plus besoin de la textbox ID. et le mode interrogation sera sur l'addition du nom et du prénom. (çà limite beaucoup les homonymes )
Désolé je reviens tard
Pour la modification des éléments, ça fonctionne nickel mais pour l'ajout des joueurs, ça continue de m'afficher les données sur la première sheets... Est-ce que je fais mal l'appel de la feuille ?
Je vous l'ai expliqué ici --> https://forum.excel-pratique.com/s/goto/1047607
le code que vous mettez ici https://forum.excel-pratique.com/s/goto/1047632 n'est pas correct. Vous faites deux fois la même chose
C'est uniquement celui dans mon message https://forum.excel-pratique.com/s/goto/1047607 à la ligne EDIT
Cordialement
