Récupérer des valeurs de champs d'une feuille pour une autre
Bonjour,
J'ai créé une BDD pour gérer les licenciés d'un club
La premiére feuille "Licenciés" comporte 15 champs. J'ai un formulaire (avec 10 "textbox" et 6 "combobox") qui me permet d'alimenter la feuille .
J'ai une deuziéme feuille "Renouvellement" qui va me servir pour renouveller les licences. Elle comporte les 7 premiers champs de la feuille 1
Faut il faire un autres formulaire ? où utiliser le premier ?
J'espérais créer un userform2 avec un champ de recherche qui me permettrait de choisir un nom et à l'aide d'un bouton, remplir les autres champs puis valider pour renseigner ma feuille
Je ne sais pas si je me suis bien expliqué ?
Option Explicit
Dim Ws As Worksheet
Private Sub ComboBox6_Change()
End Sub
'Pour le formulaire
Private Sub UserForm_Initialize()
Dim J As Long
Dim I As Integer
Set Ws = Sheets("Licenciés") 'Correspond au nom de votre onglet dans le fichier Excel
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 10
Me.Controls("TextBox" & I).Visible = True
Next I
'Pour la liste déroulante Catégorie
ComboBox3.ColumnCount = 1
ComboBox3.List() = Array("", "Benjamin", "Minime", "Cadet", "Junior", "Sénior", "Vétéran")
Set Ws = Sheets("Licenciés") 'Correspond au nom de votre onglet dans le fichier Excel
With Me.ComboBox3
For J = 2 To Ws.Range("D" & Rows.Count).End(xlUp).Row
Me.ComboBox3 = Ws.Range("D" & J)
If .ListIndex = -1 Then .AddItem Ws.Range("D" & J)
Next J
End With
For I = 1 To 10
Me.Controls("TextBox" & I).Visible = True
Next I
'Pour la liste déroulante MMA/CNIL
ComboBox4.ColumnCount = 1
ComboBox4.List() = Array("", "J'ai lu", "Je n'ai pas lu")
Set Ws = Sheets("Licenciés") 'Correspond au nom de votre onglet dans le fichier Excel
With Me.ComboBox4
For J = 2 To Ws.Range("G" & Rows.Count).End(xlUp).Row
Me.ComboBox4 = Ws.Range("G" & J)
If .ListIndex = -1 Then .AddItem Ws.Range("G" & J)
Next J
End With
For I = 1 To 10
Me.Controls("TextBox" & I).Visible = True
Next I
'Pour la liste déroulant NMDC
ComboBox5.ColumnCount = 1 '
ComboBox5.List() = Array("", "Nouvelle.", "Mutation", "Duplicata", "Correction")
Set Ws = Sheets("Licenciés") 'Correspond au nom de votre onglet dans le fichier Excel
With Me.ComboBox5
For J = 2 To Ws.Range("L" & Rows.Count).End(xlUp).Row
Me.ComboBox5 = Ws.Range("L" & J)
If .ListIndex = -1 Then .AddItem Ws.Range("L" & J)
Next J
End With
For I = 1 To 10
Me.Controls("TextBox" & I).Visible = True
Next I
'Pour la liste déroulante Classement
ComboBox6.ColumnCount = 1 'Pour la liste déroulante Classement
ComboBox6.List() = Array("", "Elite", "Honneur", "Promotion")
Set Ws = Sheets("Licenciés") 'Correspond au nom de votre onglet dans le fichier Excel
With Me.ComboBox6
For J = 2 To Ws.Range("O" & Rows.Count).End(xlUp).Row
Me.ComboBox6 = Ws.Range("O" & J)
If .ListIndex = -1 Then .AddItem Ws.Range("O" & J)
Next J
End With
For I = 1 To 10
Me.Controls("TextBox" & I).Visible = True
Next I
End Sub
'Pour la liste déroulante Code client
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
ComboBox3 = Ws.Cells(Ligne, "D")
For I = 1 To 10
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
Next I
End Sub
'Pour le bouton Nouveau contact
Private Sub CommandButton1_Click()
Dim L As Integer
If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
L = Sheets("Licenciés").Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement ? la premi?re ligne de tableau non vide
Range("A" & L).Value = ComboBox1
Range("B" & L).Value = TextBox1
Range("C" & L).Value = TextBox2
Range("D" & L).Value = ComboBox3
Range("E" & L).Value = TextBox3
Range("F" & L).Value = TextBox4
Range("G" & L).Value = ComboBox4
Range("H" & L).Value = TextBox5
Range("I" & L).Value = TextBox6
Range("J" & L).Value = TextBox7
Range("K" & L).Value = TextBox8
Range("L" & L).Value = ComboBox5
Range("M" & L).Value = TextBox9
Range("N" & L).Value = TextBox10
Range("O" & L).Value = ComboBox6
End If
End Sub
'Pour le bouton Modifier
Private Sub CommandButton2_Click()
Dim Ligne As Long
Dim I As Integer
If MsgBox("Confirmez-vous la modification de ce contact ?", vbYesNo, "Demande de confirmation de modification") = vbYes Then
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
Ws.Cells(Ligne, "B") = ComboBox2
For I = 1 To 7
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
'Pour le bouton Quitter
Private Sub CommandButton3_Click()
Unload Me
End Sub
Bonjour
En joignant ton fichier, même avec des noms modifiés, tu aurais plus de chances d'avoir des réponses ....
Bye !
Bonjour,
Voila mon fichier. Je désire, à partir de la feuille "Licenciés", récupérer les 7 premiers champs pour remplir la feuille "Renouvellement" à l'aide d'un formulaire.
A l'aide de la combobox 1 je cherche un nom et en cliquant sur le bouton "Aller à", le formulaire se remplit automatiquement et je valide pour renseigner ma feuille "Renouvellement". Ca me permet de faire la liste de renouvellement des licences.
J'ai une erreur d'exécution'424';objet requis
Pour le formulaire de la feuille "Licenciés" -> Ctrl + f
Pour la feuille Renouvellement, il y a un bouton.
Bonjour,
J'ai testé et ça me convient !
Par contre les noms des champs de " B à I" sont remplacé par les champs de la ligne 3 . Dans la feuille "Licenciés"
Je suis tenté par remettre les noms d'origine. Est ce correct ?
Je suppose que le changement a du se produire au cours de tes essais.
wroom69 a écrit :Je suppose que le changement a du se produire au cours de tes essais.
Vraisemblablement !
Bye !
@gmb
Merci beaucoup, je vais passer à la feuille "NMCD"
A+
Bonjour,
Sur le modéle de UserForm2 J'ai créé un UserForm3 pour gérer ma feuille "NMDC" (ça veut dire Nouvelle, Mutation, Duplicata, Correction)
Dans la feuille "Licenciés" les champs vont de A à Q ( Ayant rajouté 2 champs pour ma nouvelle feuille)
Dans la feuille que je veux créer les champs correspondent à A B C E P H I J Q K F L (de la feuille "Licenciés").
Donc à l'affichage du formulaire j'ai juste A B C qui sont bon .
Peut on récupérer les champs (A B C E P H I J Q K F L) pour qu'il s'affiche dans l'ordre du UserForm3 ? Ca m'arrangerait car ça correspondrait aux imprimés du comité !
Ou faut il réorganiser la feuille "Licenciés" pour suivre le bon ordre ?
Bonjour,
Ca doit correspondre à ce que je veux. Mais j'ai cherché où t'a corrigé et je n'ai pas trouvé. Apparement le UserForm3 est pareil.
Encore merci !
wroom69 a écrit :j'ai cherché où t'a corrigé et je n'ai pas trouvé.
Regarde bien :
'Bouton aller A
Private Sub CommandButton1_Click()
Dim no_ligne As Integer
no_ligne = ComboBox2.ListIndex + 2
TextBox1.Value = fl.Cells(no_ligne, 1).Value 'N°
TextBox2.Value = fl.Cells(no_ligne, 2).Value 'Nom
TextBox3.Value = fl.Cells(no_ligne, 3).Value 'Prénom
TextBox4.Value = fl.Cells(no_ligne, 5).Value 'License
TextBox5.Value = fl.Cells(no_ligne, 6).Value 'Date de naissance
TextBox6.Value = fl.Cells(no_ligne, 8).Value 'Adresse
TextBox7.Value = fl.Cells(no_ligne, 9).Value 'CP
TextBox8.Value = fl.Cells(no_ligne, 10).Value 'Ville
TextBox9.Value = fl.Cells(no_ligne, 17).Value 'Sexe
TextBox10.Value = fl.Cells(no_ligne, 11).Value 'Nat
TextBox11.Value = fl.Cells(no_ligne,6).Value 'Cert Méd
ComboBox1.Value = fl.Cells(no_ligne, 12).Value 'NMDC
Bye !
Mais oui c'est évident. J'ai été attiré par les commentaires à droite.
Maintenant je comprend....
A+ et encore merci
Bonjour,
J'ai rectifié une ligne dans 'Bouton aller à
TextBox5.Value = fl.Cells(no_ligne, 6).Value 'Date de naissance
-> j'ai mis (no_ligne, 16) j'avais 2 fois la ligne 6.
Dans la premiére feuille j'ai créé un joueur -> PILATO
Avec le formulaire UserForm3 je l'ai recherché . Tous les champs sont correct. Je valide et j'ai le message d'erreur
Le renouvellement de PILATO a déjà été enregistré.
Bonjour
wroom69 a écrit :-> j'ai mis (no_ligne, 16) j'avais 2 fois la ligne 6.
OK ! C'est parfait.
Avec le formulaire UserForm3 je l'ai recherché . Tous les champs sont corrects. Je valide et j'ai le message d'erreur
Le renouvellement de PILATO a déjà été enregistré.
J’ai téléchargé ton fichier V3 1 et j’ai affiché les UserForm2 puis 3. Dans les 2 cas, quand je choisis ‘’Pilato’’ dans le ComboBox de recherche, tous les champs se remplissent correctement dans la boit de dialogue.
Que fais-tu exactement pour obtenir ce message d’erreur ?
Bye !
Bonjour,
Oui les champs se remplissent correctement mais quand on valide pour transférer sur la feuille, j'ai le message d'erreur .
J'avais changé la ligne
MsgBox "Le renouvellement de " & ComboBox1 & " a déjà été enregistré.", 16
par
MsgBox "Le renouvellement de " & ComboBox1 & " a déjà été enregistré.", 18
sans savoir à quoi correspondait le chiffre 16 (je pensais augmenter de 2 unités car javais 2 champs de plus), mais même avec 16 j'ai le message d'erreur .
A+
wroom69 a écrit :Oui les champs se remplissent correctement mais quand on valide pour transférer sur la feuille, j'ai le message d'erreur
Mais alors, tout va bien !
Ce n'est pas avec la boite de dialogue de l'UserForm2 ni de l'UserForm3 que l'on écrit le nouveau joueur sur la feuille mais avec la boite de dialogue de l'Userform1, celle qui a un bouton ‘’Nouveau joueur’’.
Quand on clique sur ce bouton, les données du nouveau joueur s’écrivent.
Non ?
UserForm1 ->Boite de dialogue -> bouton nouveau joueur ->pour la feuille "Licenciés"
UserForm2 ->Bouton1 (macro) sur la feuille "renouvellement"->boite de dialogue->Pour la feuille "Renouvellement"
Userform3->Boite de dialogue ->recherche joueur->Les champs sont bien remplis->validation pour inscription sur la feuille "NMDC"
J'ai le message d'erreur ici au moment de la validation de la boite de dialogue du userform3 pour inscrire les données sur la feuille "NMDC"
Essai concluant, je te remercie.
A+
Bonjour,
J'ai rajouté un formulaire (UserForm4) pour gérer ma feuille "sociétaires" J'ai copié un peu sur UserForm1 et j'ai un message d'erreur
Erreur de compilation
Nom ambigu détecté
J'ai mis en commentaire la partie qui pose probléme ('Pour la liste déroulante Code client)
J'aimerais que la combobox1 fonctionne comme sur UserForm1, à savoir qu'à l'affichage d'un numéro de joueur, tous les champs se remplissent.
Sinon tous les "textbox" fonctionnent.
A+