Modifier un enregistrement par bouton

Bonjour à tous et toutes,

J'ai créée un USF qui permet d'enregistrer des données (à l'aide de textbox que je rempli) dans un classeur. Jusque là tout va bien, mais je me suis aperçu qu'une fois que j'avais enregistre les données j'aurai éventuellement besoin de les modifier et de les réenregistrer. Je bloque sur le code pour appeler l'enregistrement de la ligne.

en vous remerciant à l'avance du petit coup de pouce,

anna

Bonjour

Peux-tu envoyer le fichier en question ? On pourrait essayer de le compléter...

Bye !

merci de votre réponse.

ci-joint le fichier. La feuille Index reprend des données qui alimentent mes Combobox. La feuille saisie est alimentée par les données que je saisie dans mon USF. Sinon la feuille sommaire est juste ma page de présentation.

Ce n'est juste qu'un classeur de travail loin d'être fini !

merci à l'avance, et pour votre information je souhaite comprendre les lignes de code pour ma culture perso....

en tout cas merci beaucoup

anna

Désolé mais je ne vois rien.

Ton fichier doit être trop gros. Passe par http://www.cjoint.com

oups désolée

anna

Un essai.

J’ai repris le bouton ‘’MODE CHRONOLOGIQUE’’ existant sur la feuille SOMMAIRE pour accéder à nouvelle boite de dialogue qui permet de choisir la ligne qu’on veut modifier.

Un double-clic sur la ligne choisie permet de faire remonter dans la boite de dialogue initiale les données que l’on peut alors modifier.

Je n’ai pas pu faire toutes les vérifications car je n’ai pas DtPicker sur mon PC.

Cela te convient-il ?

salut,

honnêtement merci de consacrer du temps a mon USF.

alors j'ai regarder un peu le code :

1/ peut tu m'expliquer la plus value de l'ajour de usf_initialize

2/ peux tu m'expliquer concrétement le code de l'USF2

enfin pour tout ceux qui liront ce message, je tiens à remercier vivement les internautes qui passent du temps à nous démeler et nous expliquer leur connaissances.

Gmb, merci beaucoup de ton aide

anna

Bonjour

Tu écris :

peut tu m'expliquer la plus value de l'ajour de usf_initialize

La macro ‘’ Private Sub UserForm_Initialize()’’ dans le code d’un USF permet de donner des valeurs à tous les contrôles qui vont s’afficher dans la boite de dialogue. C’est là qu’on met le code des valeurs qu’on va charger dans les combobox et les valeurs proposés dans les textbox.

C’est bien ce qu’il y avait dans ta macro initiale.

Mais, si j’ai bien compris, tu veux pouvoir modifier avec cet USF des valeurs déjà enregistrées, donc présentes sur ton tableau de données de la feuille SAISIE.

D’où le problème : il faut pouvoir repérer quelles sont ces données et surtout où sont elles se trouvent.

J’ai donc imaginé le deuxième USF qui permet de présenter l’ensemble des données du tableau de la feuille SAISIE et d’y repérer par un double-clic la ligne des ou de la donnée(s) à modifier.

Une fois le numéro de cette ligne connue, il faut afficher le premier USF en lui faisant afficher toutes les données de cette ligne.

C’est dans la macro ‘‘’ Private Sub UserForm_Initialize()’’ que le code doit s’écrire.

On y conserve tout ce qu’il y avait déjà (ou presque…) et qui permet de charger les liste des combobox. On y ajoute les valeurs à donner à tous les contrôles pour qu’ils soient affichés dans la boite de dialogue, à son ouverture.

Tu noteras que j’ai dû apporter quelques modifications car quand la VBA commence à exécuter Private…initialize, il faut qu’elle sache si on a cliqué sur le bouton SAISIE ou sur le bouton MODE CHRONOLOGIQUE

Elle le détermine en regardant quelle est la feuille active à ce moment là. Si on a cliqué sur SAISIE, on est toujours sur la feuille «SOMMAIRE ». Si on a cliqué sur l’autre bouton, on a affiché la nouvelle boite de dialogue et on a la feuille SAISIE comme feuille active.

D’où le test que tu peux y voir et qui, pour fonctionner m’a fait supprimer l’instruction :

Sheets("INDEX").Activate

OK ?

peux tu m'expliquer concrétement le code de l'USF2

Ce code comporte deux macros :

1 - Private Sub userform_initialize()

C’est là qu’on écrit le code qui va permettre l’affichage dans la nouvelle listbox de toutes les données de la feuille SAISIE.

On commence par définir la listbox en lui donnant 25 colonnes et en définissant leur largeur.

Puis on définit les données que l’on doit y mettre :

Sheets("Saisie").ListBox1.List = .Range("C1:aa2").Value 

Dès lors, lorsque cette boite de dialogue s’affichera, on pourra y voir tout le tableau de SAISIE

2- Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

C’est la macro qui va s’exécuter quand on double-cliquera sur une ligne de la liste, dans la boite de dialogue :

• Activation de la feuille SAISIE : cela servira juste après, quand on va afficher l’autre boite de dialogue, comme expliqué plus haut.

• On cache à l’écran la boite de dialogue

• On affiche la boite de dialogue de USF1

OK ?

Je reste à ta disposition pour répondre à d’autres questions , si tu en as.

Bye !

Super je reste bouche bée, tu as mis des mots sur ce que je comprenais à demi mots.....

Si cela peut aider quelqu'un d'autre tant mieux.

merci mille fois,

et à bientôt

anna

Rechercher des sujets similaires à "modifier enregistrement bouton"