Userform – Recherche et modification de données
Bonjour à tous et toutes.
Avant tout, je tiens à préciser que je suis débutant en vba et qu’il s’agit de mon premier userform. Cela dit je suis assez content d’être arrivé jusque-là!
Comme vous pouvez le voir dans le fichier ci-joint, le formulaire utilisé me permet d’inscrire des données dans une feuille «Base». Il est composé de textboxs et de comboboxs (ces dernières sont alimentées par des listes dans une feuille «Donnees». Listes qu’il est possible d’alimenter via le formulaire pour ajouter de nouvelles occurrences.)
Jusque-là tout fonctionne, le code n’est certainement pas très propre, mais au moins je le comprends!
Cela fait par contre des jours et des jours que j’essaie de mettre en place un moyen de rechercher un enregistrement, d’y apporter des modifications, et d’enregistrer le tout…
J’avais envisagé un second userform, appelé par un second bouton sur la feuille «Formulaire» qui listerait tous les enregistrements de la feuille «Base» dans une listbox, avec 3 comboboxs (Lieu, Bien, Composante) permettant de filtrer les enregistrements. Il resterait ensuite à sélectionner la ligne à modifier, cliquer sur un bouton «Modifier» pour que les données soient rapatriées dans mon «Userform1» pour modification.
Impossible cependant de démarrer concrètement cette partie du projet. J’ai testé des dizaines de bouts de code trouvés ci-et-là, mais sans grands résultats. Les erreurs s’enchainent, les différentes approches proposées ne font qu’ajouter à ma confusion, bref je suis perdu.
Quelqu’un aurait-il une piste à me proposer pour me sortir de là SVP? Si possible de manière assez simple
Merci!
Bonjour,
Je pense qu'il ne faut utiliser qu'une feuille pour tes données. Tu édites les données en utilisant un événement change sur le combobox1.
Regarde l'exemple dans ton userform1 avec ce type de code qu'il te faudra finir.
Une boucle for each
Private Sub ComboBox1_Change()
Dim lieu As Variant
Dim DerLigne As Integer
Sheets("Donnees").Activate
DerLigne = Range("A:A").End(xlDown).Row 'trouve la dernière ligne
For Each lieu In Sheets("Donnees").Range("A2:A" & DerLigne)
If ComboBox1.Value = lieu Then
ComboBox2 = lieu.Offset(, 2) 'décalage de 2 colonnes
ComboBox3 = lieu.Offset(, 4) 'décalage de 4 colonnes
End If
Next
End SubBon courage
ddept88
Bonjour Frozen et bienvenu sur le forum
Consultes mon blog à la page suivante https://cellulexcel.blogspot.fr/p/qui-na-pas-un-jour-utilise-loption.html.
Tu trouveras les réponses à tes questions.
J'ai regardé ton fichier, il va falloir que tu modifies ton formulaire, qu'il soit simple à la base pour commencer.
Mais cela va fonctionner.
A bientôt
Bonjour,
Merci pour ces premiers éléments de réponse. Comme quelques urgences se sont pointées, je n'aurais le temps de regarder ça attentivement que la semaine prochaine, mais je repasserai surement demander quelques précisions
Bonne journée.