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 :

15form-test.xlsm (32.73 Ko)

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 Sub

Vous 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 I

Cependant 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".

11form-test.xlsm (30.62 Ko)

Haaf Dan plus rapide .. Bonjour Dan.

Hello Dan,

J'ai testé en remplaçant le code sur la comboBox1_change par le votre et lorsque j'essaie de rajouter un joueur, il n'y a rien qui se passe sur la sheet Database. Aussi j'ai remarqué qu'une donnée apparaît sur la première sheet... Une idée ?

erreur 5

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 sub

Edit : 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 Sub

si 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 Sub

RE 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 ?

18form-test.xlsm (29.69 Ko)

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

Rechercher des sujets similaires à "probleme formulaire vba"