XL 2013 UserForm multipages

murainesouspatate

XLDnaute Occasionnel
Bonjour à tous et à toutes,
Je suis en train de créer un classeur de suivi client à ma fille qui est esthéticienne.
Afin d'enregistrer, modifier ou supprimer des clients ainsi que la fiche client, j'ai créé un UserForm multipages.
Pour la page Enregistrement et consultation, j'ai réussi à les faire fonctionner grâce aux foires au questions et l'aide de certains sur ce forum.
Pour la page Modification, je ne sais pas comment renvoyer les données modifiées vers la feuille "Clients" sur la ligne du client sélectionné avec la ComboBox 1.

J'ai commencé la macro mais ne sais pas comment faire pour la suite. Je joint mon classeur test en pièce-jointe en espérant que quelqu'un puisse bien m'aider à résoudre mon problème, et surtout à m'expliquer le déroulement.
Je vous remercie par avance et vous souhaite une agréable journée.
Cordialement.
Roger
 

Pièces jointes

  • Test modifier données client.xlsm
    276.7 KB · Affichages: 34

murainesouspatate

XLDnaute Occasionnel
Ca y est , je viens de trouver la solution pour débloquer les textbox !
J'ai créé un bouton qui me débloque la saisie avec ceci :
"Me.TextBox8.Locked = Not Me.TextBox8.Locked" et ceci pour tous les textbox.
Par contre je viens de tester et la modification s'inscrit 2 lignes en dessous mon tableau et ne modifie pas du tout la ligne dont le nom est sélectionné dans le combobox ?
Je ne comprends pas pourquoi.
 

cp4

XLDnaute Barbatruc
J'ai créé un bouton qui me débloque la saisie avec ceci :
"Me.TextBox8.Locked = Not Me.TextBox8.Locked" et ceci pour tous les textbox.
Par contre je viens de tester et la modification s'inscrit 2 lignes en dessous mon tableau et ne modifie pas du tout la ligne dont le nom est sélectionné dans le combobox ?
Je ne comprends pas pourquoi.
Désolé, j'ai fait un copier/coller de ton code et oublié de supprimer le +2
VB:
.Range("A" & lig + 2).Value = TextBox1.Value 'code faux'
.Range("A" & lig).Value = TextBox1.Value 'code juste à corriger pour toutes les textboxs'
 

Dranreb

XLDnaute Barbatruc
Ne trouvez vous vraiment pas qu'avec mon système on n'a pas beaucoup de questions de ce genre à se poser ?
Pour votre gouverne le numéro de ligne à afficher et éventuellement à réécrire ultérieurement est noté dans une variable privée LCou. Mais on n'a plus besoin de plusieus cohortes d'affectations peu performantes dans les deux sens, avec tous les risques d'erreurs que ça comporte. La correspondance entre les contrôles et les colonnes du tableau est définie une fois pour toute au départ. Si une colonne doit être ajoutée ou supprimée longtemps après, c'est juste un CLs.Add ou CAs.Add à ajouter ou supprimer, on n'a plus à se replonger dans le reste de la programmation. Sans compter que les conversion de types de données sont automatiques aussi.
 

cp4

XLDnaute Barbatruc
Ne trouvez vous vraiment pas qu'avec mon système on n'a pas beaucoup de questions de ce genre à se poser ?
Pour votre gouverne le numéro de ligne à afficher et éventuellement à réécrire ultérieurement est noté dans une variable privée LCou. Mais on n'a plus besoin de plusieus cohortes d'affectations peu performantes dans les deux sens, avec tous les risques d'erreurs que ça comporte. La correspondance entre les contrôles et les colonnes du tableau est définie une fois pour toute au départ. Si une colonne doit être ajoutée ou supprimée longtemps après, c'est juste un CLs.Add ou CAs.Add à ajouter ou supprimer, on n'a plus à se replonger dans le reste de la programmation. Sans compter que les conversion de types de données sont automatiques aussi.
Bonjour Dranreb,

Depuis que je fais parti de la communauté XLD, je sais que tu maîtrises très bien le codage.
Ton codage est professionnel. Mais je t'avoue que je n'ai pas beaucoup de temps pour étudier tes différents codes, pour bien les comprendre mais surtout les assimiler.
Personnellement, autodidacte je fonctionne avec ce je retiens assez facilement. Avec l'âge, tout se dégrade.
Toute ma reconnaissance.
 

murainesouspatate

XLDnaute Occasionnel
Ne trouvez vous vraiment pas qu'avec mon système on n'a pas beaucoup de questions de ce genre à se poser ?
Pour votre gouverne le numéro de ligne à afficher et éventuellement à réécrire ultérieurement est noté dans une variable privée LCou. Mais on n'a plus besoin de plusieus cohortes d'affectations peu performantes dans les deux sens, avec tous les risques d'erreurs que ça comporte. La correspondance entre les contrôles et les colonnes du tableau est définie une fois pour toute au départ. Si une colonne doit être ajoutée ou supprimée longtemps après, c'est juste un CLs.Add ou CAs.Add à ajouter ou supprimer, on n'a plus à se replonger dans le reste de la programmation. Sans compter que les conversion de types de données sont automatiques aussi.
bonjour, oui effectivement ton système me plait beaucoup et est beaucoup plus simple, je vais en discuter avec ma fille et surement l'adopter.
Un grand merci pour vos réponses et surtout de votre temps.
Cordialement.

Ps: désolé du temps de réponse, je vis en Nouvelle Calédonie et avons +10h00 de décalage avec la France
 

murainesouspatate

XLDnaute Occasionnel
Ne trouvez vous vraiment pas qu'avec mon système on n'a pas beaucoup de questions de ce genre à se poser ?
Pour votre gouverne le numéro de ligne à afficher et éventuellement à réécrire ultérieurement est noté dans une variable privée LCou. Mais on n'a plus besoin de plusieus cohortes d'affectations peu performantes dans les deux sens, avec tous les risques d'erreurs que ça comporte. La correspondance entre les contrôles et les colonnes du tableau est définie une fois pour toute au départ. Si une colonne doit être ajoutée ou supprimée longtemps après, c'est juste un CLs.Add ou CAs.Add à ajouter ou supprimer, on n'a plus à se replonger dans le reste de la programmation. Sans compter que les conversion de types de données sont automatiques aussi.
Bonjour,
J'ai essayé votre système mais je ne suis pas assez calé en VBA et n'y arrive pas du tout.
Je trouve cela dommage car cela me plaisait et convenait bien, surtout que j'ai réussi à convaincre ma fille.
Encore merci de votre aide.
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Montrez moi ce que vous avez essayé, joignez le classeur.
Ou si vous préférez le résoudre vous même avec mon aide dites moi chaque point sur lequel vous butez.
L'un n'empêche pas l'autre d'ailleurs. Quelle aide souhaiteriez vous ?
 
Dernière édition:

murainesouspatate

XLDnaute Occasionnel
Bonsoir.
Montrez moi ce que vous avez essayé, joignez le classeur.
Ou si vous préférez le résoudre vous même avec mon aide dites moi chaque point sur lequel vous butez.
L'un n'empêche pas l'autre d'ailleurs. Quelle aide souhaiteriez vous ?
Bonjour, je vous renvoi le classeur, j'ai opéré à quelques modifications.
dès que mon UFmContacts s'ouvre, j'ai un message d'erreur sur la ligne:
"Set CLs = New CombobBoxLiées : Set CAs = New ControlsAssociés"
Message : "Erreur de compilation: Type défini par l'utilisateur non défini", et tout ce bloque jusqu'au débogage.
j'ai aussi recopié le module MSujetCBx mais n'y comprend absolument rien.
Après en avoir discuté avec ma fille, finalement elle n'aurait besoin qu'ajouter un client ou modifier un client.
je vous joins le classeur et dites moi ce que je devrais faire s'il vous plait.

je vous remercie par avance de me consacrer du temps à l'élaboration de ce projet.

Cordialement.
 

Pièces jointes

  • Test modifier données client envoyé.xlsm
    295 KB · Affichages: 5

Dranreb

XLDnaute Barbatruc
Il manque simplement les 12 modules de classe.
Attention: seules les ComboBox servant à identifier la ligne par leur combinaison de valeurs doivent être confiées au ComboBoxLiées CLs. Celles à listes fixes, qu'il faut pouvoir changer sur une ligne existante, doivent être confiées au ControlsAssociés CAs.
Je vous conseillerais de séparer le nom et le prénom en deux colonnes. La date de naissance pourrait éventuellement aussi participer à l'identification de la ligne.
Le code n'est pas sécurisé par un Option Explicit en tête, et les variables globales Private ne sont pas déclarées.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Remarques :
1) — C'est le même bouton qui sert soit à modifier soit à ajouter selon que la combinaison des valeurs tapées dans les ComboBox gérées par CLs préexistait ou non.
2) — Vous pourriez toujours être amené à supprimer une fiche, on ne sait jamais. Ne serait ce qu'à cause d'une erreur dans le nom ou le prénom, car on ne peut plus les changer et il faut donc supprimer la fiche puis la re-créer. Il y a une confirmation de sécurité à valider de toute façon.
 

patricktoulon

XLDnaute Barbatruc
Bonsoir à tous
perso j'ai simplifier tout ca
j'ai reduit le multipage a 2 pages ajout et (modi/supression/consultation )
bon pour l'ajout moins de 15 lignes et c'est marre
pour le reste j'ai vachement simplifier
j'ai pas compris pourquoi les controls était locké je les aie delocké
j'ai pas compris non plus pourquoi la feuille était protégé sans MDP j'ai supprimer ça aussi

pour le principe ajout c'est simple add sur listrows converti en range et hop transfert sur les cellule de ce range dans une boucle sur les 23 textboxs que j'ai renommé bien évidement

pour le principe modif c'est simple j'entre dans la combo tout le tableau + une colonne dans le quel je stocke les index de ligne
au click sur la combo le .listindex,.liscount-1) me donne l'index du listrow du tableau t_clients
bref le reste est assez simple
tu a donc 3 boutons dans la page modif
supprimer
modifier
fermer

tu sélectionne dans la combo et tu modifie les textboxs et click sur modifier ou click sur supprimer pour supprimer le client de la list

click sur ajouter dans le page ajouter et la liste dans le tableau sur feuille se re triera auto dans l'ordre
la list dans la combo se remet a jour auto aussi

voila
j'ai stocker les index dans le tablo en dernière colonne au cas ou tu voudrais ajouter une tri des occurrence dans la combo au change les index seront toujours bons
bon je pense pas que ca soit nécessaire l'intuitivité native de la combo suffit a te rapprocher en tapant au fur et a mesure
;)
 

Pièces jointes

  • Test modifier données client V(1) by patricktoulon.xlsm
    292.3 KB · Affichages: 8

Discussions similaires

Réponses
93
Affichages
1 K
  • Question
Microsoft 365 TCD
Réponses
12
Affichages
296