XL 2010 Travail base de données et UserForm

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Twing83

XLDnaute Junior
Bonjour,

Je suis à la recherche d'un peu d'aide pour un petit projet que j'ai en cours.

A partir d'un fichier contenant mes 2 BdD (S et M), je souhaite pouvoir les consulter mais également les modifier à partir de UserForm.

J'arrive à afficher les 2 BdD dans mes 2 UserForm, mais je ne sais pas trop comment aborder l'ajout, la suppression et la modification dans S et M.

Mon point de départ est le UserForm S et je souhaite initialiser le UserForm M avec ma sélection dans S (CommandButton M).

J'aurai également besoin pour M de pouvoir défiler avec un SpinButton uniquement dans un item sélectionné (exemple NOM_54 de S a 68 items dans M).

En PJ le fichier d'exemple, j'ai pris soin de mettre des N° dans des labels sur les UserForm qui correspondent aux N° de colonnes correspondantes dans les tables.

Merci d'avance pour votre aide qui m'a à maintes reprises permis d'avancer dans différents projets.

Au plaisir de vous lire...
 

Pièces jointes

Solution
autre chose
ecrire 3 fois le meme code pour charger le userform dans 3 boutons différents... quel intérêt?? à part s'obliger à modifier 3 fois la meme chose si besoin ...?

à reproduire pour le SaveUSF_ToSheet
hello @cathodique
ok, vu pour le spin..
après.. en règle général, c'est quand meme très difficile à comprendre.. ne serait ce que les intitulés de colonnes.... ca n'aide pas

et la.. on vient d'apprendre qu'il y avait une troisième BDD....
suis sur qu'avec du power query, il pourrait simplifier tout ca
 
autre chose
ecrire 3 fois le meme code pour charger le userform dans 3 boutons différents... quel intérêt?? à part s'obliger à modifier 3 fois la meme chose si besoin ...?

à reproduire pour le SaveUSF_ToSheet
Je suis impressionné ! ça parait tellement simple !
Je vais m'attaquer dès demain au SauveUSF_ToSheet, ça va grandement allégé le code.

Merci pour l'aide si précieuse malgré mon manque cruel d'explications...
 
Bosnoir,

Grace à vous, mon projet est maintenant en passe d'être achevé.

Un soupçon de cosmétique et le tour sera joué 😄

J'ai rebasculé le code dans le monde où les colonnes des tables et les labels des formulaires veulent dire quelque chose, désolé de n'avoir pas pu partager directement en mode "lisible".

Un énorme merci à vgendron et cathodique pour vos contributions respectives et vos conseils de qualité.

La grande difficulté de l'exercice (pour moi tout du moins) aura été d'exprimer clairement mon besoin, je connais maintenant mes axes de travail personnels : le VBA bien évidemment mais aussi la définition de mon besoin.

Merci à vous.👌

Cordialement,
 
Bonsoir à toutes & à tous,
bonsoir @Twing83
Je sais, le fil est en pause depuis un certain temps mais j'ai fini par faire quelque chose sur le sujet ...
D'abord pour tes "UUID" j'ai utilisé un horodatage au dix-millième de seconde du style "S_20250420-221113_2891" et "M_20250420-221622_4844"
Ces codes sont donnés lors de la création d'une fiche S ou d'une fiche M par les UserForms correspondant.
Ensuite je n'utilise plus la colonne 1 des fiches S ni les colonnes 1 et 4 des fiches M (je les ai laissées vides).
J'ai gardé la forme des UserForms mais j'ai adapté l'ergonomie en espérant qu'elle soit instinctive :
Information visuelle sur les données modifiées, affichage des boutons de commandes conditionnel ...
Il faudra compléter les listes des ComboBoxes dont je ne connaissais pas les valeurs possibles (Col 7, 12, 18, 22, 31 des fiches M)

Pour les contrôles de la fiches M, vu leur nombre, j'ai créé 4 modules de classes (pour les TextBoxes, les ComboBoxes, les CheckBoxes, et les OptionButtons) avec les propriétés ColM (le N° de la colonne) et ÉtatModifié (vrai si la colonne a été modifiée) et l'événement Change, (les OptionButtons ont en plus une propriété Poids qui indique la valeur correspondant au bouton)

Pour le reste je te laisse découvrir le fonctionnement.
(testé sur Windows 10 EXCEL 2007)
Voir la pièce jointe
À bientôt
 

Pièces jointes

Bonsoir à toutes & à tous,
bonsoir @Twing83
Je sais, le fil est en pause depuis un certain temps mais j'ai fini par faire quelque chose sur le sujet ...
D'abord pour tes "UUID" j'ai utilisé un horodatage au dix-millième de seconde du style "S_20250420-221113_2891" et "M_20250420-221622_4844"
Ces codes sont donnés lors de la création d'une fiche S ou d'une fiche M par les UserForms correspondant.
Ensuite je n'utilise plus la colonne 1 des fiches S ni les colonnes 1 et 4 des fiches M (je les ai laissées vides).
J'ai gardé la forme des UserForms mais j'ai adapté l'ergonomie en espérant qu'elle soit instinctive :
Information visuelle sur les données modifiées, affichage des boutons de commandes conditionnel ...
Il faudra compléter les listes des ComboBoxes dont je ne connaissais pas les valeurs possibles (Col 7, 12, 18, 22, 31 des fiches M)

Pour les contrôles de la fiches M, vu leur nombre, j'ai créé 4 modules de classes (pour les TextBoxes, les ComboBoxes, les CheckBoxes, et les OptionButtons) avec les propriétés ColM (le N° de la colonne) et ÉtatModifié (vrai si la colonne a été modifiée) et l'événement Change, (les OptionButtons ont en plus une propriété Poids qui indique la valeur correspondant au bouton)

Pour le reste je te laisse découvrir le fonctionnement.
(testé sur Windows 10 EXCEL 2007)
Voir la pièce jointe
À bientôt
Bonsoir @AtTheOne,
Ce que tu as fais est très intéressant, même si j'ai quasi terminé mon projet, je pense y trouver plus que matière à réflexion...
La colonne 4 de M m'est indispensable pour la suite, ça ne va pas me poser de problème pour réinitialiser son contenu...
Très intéressant les horodatages, je suis plus rompu à l'utilisation d'UUID du style "00000000-0000-0000-0000-000000000000" mais pourquoi pas après tout, ça assure tout aussi bien l'unicité de la clé.
Je vais regarder tout ça plus en détail...

Un très grand merci à toi pour y avoir consacré du temps.
A bientôt.
 
Bonjour le Fil ,
question :
dans
VB:
Private Sub UserForm_Initialize()    
     Dim TbTemp(), ClefS As String
     'Dictionnaire des fiches M attachées aux fiche S
     Set DC = New Scripting.Dictionary    
     TabloS = Sh_S.[TS_S].Value2    
     Charger_TabloM_Dico_DC    
     'Initialisation des ComboBoxes
     With Me
          .CBx_S_COL_3.List = Sh_S.[TS_S[COL_3]].Value2
          .CBx_S_COL_7.List = Array("NO", "YES")
          .CBx_S_COL_5.List = Array("Valide", "Invalide")
     End With    
     VérifÉtatFicheS    
End Sub
à quoi sert la Procédure " Charger_TabloM_Dico_DC " ?
Bonne journée
Jean marie
 
Bonjour à toutes & à tous,
Bonjour @ChTi160
à quoi sert la Procédure " Charger_TabloM_Dico_DC " ?
Comme son nom l'indique, à charger le tableau (TabloM (liste des fiches M)
et à initialiser le dictionnaire Dico_DC (clef : uuid des fiches S, item : tableau des fiches M rattachées à cette clef)
C'est utilisé lorsque l'on clique sur le bouton "M" ou lorsque l'on supprime une fiche S avec toutes les fiches M rattachées.
À bientôt
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
15
Affichages
2 K
Retour