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

Un essai à tester. Te convient-il ?

Bye !

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 ?

24monfichier.xlsm (117.38 Ko)

Bonjour

A tester.

Cela te convient-il ?

Bye !

37monfichier-v3.xlsm (105.85 Ko)

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"

Bonjour

Nouvel essai à tester. Te convient-il ?

Bye !

23comonfichier-v4.xlsm (109.01 Ko)

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+

Rechercher des sujets similaires à "recuperer valeurs champs feuille"