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!

149peinture-copie.xlsm (61.00 Ko)

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 Sub

Bon courage

ddept88

468peinture-02.xlsm (56.67 Ko)

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.

Rechercher des sujets similaires à "userform recherche modification donnees"