Finalisation formulaire saisie liste déroulante
Bonjour,
Ce week-end, je me suis penché sur la création d'un formulaire de saisie dans Excel. J'ai très peu de pratique de VBA...
Grâce à plusieurs liens et notamment au blog Cellule EXCEL que je remercie au passage, j'ai réussi à construire un formulaire de saisie qui ressemble à quelque chose... enfin je le crois.
Reste que je sèche sur mon formulaire notamment pour la 1ere liste déroulante dont je suis incapable de récupérer les données qui proviennent d'une colonne de mon fichier. Il s'agit pour moi de choisir dans cette liste déroulante un N° d'enregistrement et de remplir les champs suivants en fonction du N° choisi pour faire une modification éventuelle.
Puis pour le textbox intitulé "Code de l'association", je ne sais pas comment faire pour que le code de l'association s'affiche en fonction du choix que j'ai fait dans la liste déroulante au-dessus.
Voici mon fichier
Si un membre de ce groupe pouvait y regarder pour me dire ce qui ne va pas... ou au moins me donner une piste pour savoir vers où chercher car là je bloque.
D'avance, Merci bien.
Salut et bienvenue sur le Forum,
Ta demande n’est pas très claire. Dans ta ComboBox1, tu peux choisir des noms selon la liste sur la feuille ‘CodAsso’. Mais tu précises : « Il s'agit pour moi de choisir dans cette liste déroulante un N° d'enregistrement ». C’est selon moi contradictoire.
Mais comme tu dis encore : « et de remplir les champs suivants en fonction du N° choisi », je me dis que tu désires choisir une personne dans la liste ComboBox1 et que le numéro « CodAsso » correspondant de la feuille ‘CodAsso’, en colonne B, apparaisse dans le TextBox3. C’est ce que réalise le code ci-dessous, dans le fichier ci-joint :
Private Sub ComboBox1_Change()
TextBox3 = Sheets("CodAsso").Range("B" & Application.WorksheetFunction.Match(ComboBox1, Sheets("CodAsso").Range("A:A"), 0))
End SubSi ce n’est pas ça, tu dois être plus précis dans ta demande.
A te relire.
Le code que tu me fournis apporte une solution pour afficher le CodAsso qui correspond à l'association que j'ai sélectionnée via la liste déroulante. C'est ce que je cherchais à obtenir dans la 2ème partie de ma question. Merci pour ton aide.
Pour la 1ère partie, voici ce que je souhaite obtenir :
La 1ere liste déroulante devrait me permettre de sélectionner un enregistrement en choisissant son NumEnr (Colonne A Feuille "Saisie") . Une fois ma sélection faite les champs suivants afficheraient les valeurs de l'enregistrement choisi.
Par exemple, si je choisis le "6" dans la 1ère liste déroulante, le résultat serait l'affichage de :
"Adelante" dans la 2ème liste déroulante
"1" dans le textbox "Code de l'association"
"01/01/2014" dans le textbox "Date"
"3" dans le textbox "Nombre ASA".
L'idée serait que je puisse choisir un enregistrement de ma liste d'enregistrement d'afficher les valeurs dans mon Userform et d'apporter les corrections éventuelles puis cliquer sur le bouton "Modifier" pour enregistrer les modification dans ma liste de données.
Par contre, je ne sais pas s'il est possible d'utiliser un seul et même Userform pour rechercher des enregistrements à modifier (Bouton "Modifier") et saisir de nouveaux enregistrements (Bouton "Nouvelle saisie").
Si cela se trouve, je cherhce à obtenir quelque chose qui est impossible !!??!!
Re,
Pitipier a écrit :Par contre, je ne sais pas s'il est possible d'utiliser un seul et même Userform pour rechercher des enregistrements à modifier (Bouton "Modifier") et saisir de nouveaux enregistrements (Bouton "Nouvelle saisie").
Je pense que oui, il n’y a pas grand-chose d’impossible avec Excel. Par contre il faut bien comprendre ce que tu désires (ou plutôt faut-il plutôt que tu saches bien ce que tu désires ?).
Pour l’instant, j’ai créé une deuxième macro ‘Private Sub ComboBox2_Change’ qui remplit le formulaire comme tu sembles le vouloir sur la base des données de la feuille ‘Saisie’. Comme ma première macro ‘Private Sub ComboBox1_Change’ est toujours en place, si tu modifies alors le ComboBox1, seul le TextBox3 est modifié en plus. Est-ce ce que tu désires ou cette macro ‘Private Sub ComboBox1_Change’ devient inutile vu la deuxième macro mise en place ?
Maintenant j’ai également créé un nouveau ‘Nom’ (dynamique celui-ci) et j’ai modifié la macro ‘Private Sub UserForm_Initialize’ de manière à charger le ComboBox2 lors de l’ouverture de la forme [ par la ligne ComboBox2.RowSource = ("Liste_NumEnr") ]. Lorsque tu ouvres ton formulaire et que choisis un nouveau ‘numero enregistrement’, les champs en-dessous se modifient automatiquement, mais si tu inscrits toi-même un numéro qui n’est pas à disposition (par exemple pour saisir de nouvelles données ??) ça boge. Alors si vraiment tu voulais pouvoir saisir là un nouveau numéro, il faudra modifier le code en conséquence, mais il faudrait savoir ce que tu désires : par exemple, si tu saisis un numéro qui n’existe pas encore, faut-il vider tous les champs en-dessous ou faut-il laisser les champs présents en place afin que tu puisses éventuellement en récupérer une partie ?
A te relire.
`Bonjour,
Je vais essayer d'être aussi clair que possible.
1- Je veux pouvir saisir des enregistrement et qu'un NumEnr soit attribué automatiquement à chaque enregistrement saisi
2 - j'aimerai pouvoir corriger un enregistrement en saisissant son NumEnr dans la 1èere liste déroulante
J'ai essayer le fichier que tu m'as envoyé et je ne vois pas de changement par rapport à ta version 1.
Merci pour ton aide.
Désolé, cette nuit j’étais mal réveillé et j’ai posté un fichier non modifié ; tout mon travail était donc perdu
Mais bon j’ai recommencé et j’ai été un peu plus loin.
Regarde les nouveautés dans le fichier ci-joint. Je pense qu’il y a plein de trucs à améliorer encore, mais tu es quand même parti dans une direction un peu bizarre.
A voir à l’usage ce qui doit encore être améliorer.
Cordialement.
A première vue cela me semble correspondre exactement à ce que je cherchais à obtenir.
J'essaie de me pencher sur ce que tu as modifié dans l'espoir de comprendre.
Merci pour ton travail sur mon fichier.
Bonjour,
Comme tu l'écrivais, plusieurs choses restent à améliorer.
Par exemple, je ne comprends pas pourquoi lorsque je saisis un nouvel enregistrement, sur la ligne correspondant j'ai une coche sur la cellule qui indique que le "nombre est stocké sous forme de texte"
Je pense que c'est parce que dans le code que j'ai récupéré j'ai désactivé volontairement cette partie qui me posait un problème et qui est décrite comme Code permettant de modifier le format de la plage de cellule en format nombre:
'Code permettant de modifier le format de la plage de cellule en format nombre
'With Ws.Range("D2:d10")
'.NumberFormat = "0"
'.Value = .Value
'End WithQuand je réactive ce morceau de code, je ne comprends pas pourquoi ça ne fonctionne plus.
Est-ce que tu peux y regarder s'il te plait ?
Merci d'avance.
Salut,
Evite de placer des « messages à épisodes ». Laisse-toi le temps de tester le travail reçu et reviens sur le Forum lorsque tu es certain d’avoir une liste exhaustive de questions et remarques.
Tes deux ‘Codes permettant de modifier le format de la plage de cellule en format nombre’ ont été adaptés à ton fichier.
A te relire.
Merci pour tes dernières modifications qui conviennent parfaitement.il me semble puisque je suis en phase de test comme tu me l'as suggéré et que tout semble rouler.
Je travaille à l'amélioration du formulaire de saisie notamment par l'ajout d'un Objet DatePicker pour le champs"date", pour l'instant je sèche toujours... Probablement un nouvel "épisode" d'ici peu...