Microsoft 365 Fusion de deux USERFORM sur EXCEL

HugoTR35

XLDnaute Nouveau
Bonjour à vous,

I need help !
Débutant en VBA & userform, je me suis bien renseigné, mais là je n'arrive plus à avancer ...

Je souhaite utiliser un formulaire sous VBA USERFORM, qui permettra de rajouter de l'équipement, de modifier l'équipement existant et voir de le supprimer.
Je souhaite avoir dans le formulaire des listes en cascade jusqu'à à atteindre le ComboBox_EPI (Etape 1 en PJ) qui lui m'affichera l'intégralité des TextBox déjà remplis (Etape2) , si il y a quelque chose déjà présent. De plus je n'arrive pas à rajouter de colonne à mon userform, cellule en rouge dans le tableau Etape2

Je veux donc fusionner mes deux documents Etape1 et Etape2, pour avoir un userform type comme l'image en PJ, cependant je n'y arrive pas, cela devient beaucoup trop technique pour moi. Si une âme charitable pouvait me venir en aide, je lui serait très reconnaissant,
En espérant été avoir clair, je vous remercie d'avance,

Belle journée à vous et belle année 2022,
 

Pièces jointes

  • Etape 1.xlsm
    27.4 KB · Affichages: 19
  • Etape 2 .xlsm
    29.4 KB · Affichages: 18
  • USERFORM_type.png
    USERFORM_type.png
    47.8 KB · Affichages: 49

Dranreb

XLDnaute Barbatruc
Conseil: N'utilisez pas le blanc souligné dans vos identifiant: il sert de séparateur dans les noms de procédure de prise en charge d'évènements entre le nom de l'objet et celui de l'évènement. Mettez à vos contrôles des noms mnémoniques commençant par une majuscule immédiatement précédés d'un trigramme identifiant le type de contrôle, TBx pour TextBox, CBx pour ComboBox et CBn pour CommandButton.

Il va de soit que si j'avais fait une boucle pour les CAs.Add c'était seulement pour aller au plus simple compte tenu des TextBox non mnémoniques numérotées qu'il y avait. Normalement il faut les mettre chacun sur une ligne séparée.
 
Dernière édition:

HugoTR35

XLDnaute Nouveau
Est ce que vous pouvez m'expliquer en quoi sert ces lignes ? (lignes rouge)
Parce que si je rajoute ma combobox (liste déroulante) ici après ligne verte elle sera dans les combox liés alors que je ne veux pas, je veux qu'elle soit à la place d'une textbox dans l'ordre chronologique.

'La base des combobox liés
Private Sub UserForm_Initialize()
Set CLs = New ComboBoxLiées: Set cas = New ControlsAssociés
CLs.Plage Feuil1: Set cas.Colonnes = CLs.Colonnes
CLs.Add Me.ComboBox_pole, "Pôle"
CLs.Add Me.ComboBox_agence, "Agence"
CLs.Add Me.ComboBox_collaborateur, "Collaborateur"
CLs.Add Me.ComboBox_epi, "EPI"
Dim C As Integer
For C = 5 To CLs.Colonnes.Count
cas.Add Me("TextBox" & C - 4), CLs.Colonnes(C).Name

Next C
CLs.CouleurSympa
CLs.LMaxDropBtn = 75
CLs.Actualiser
End Sub
 

Dranreb

XLDnaute Barbatruc
Mettez CAs.Add Me.CBxEPI, "EPI" si c'est un contrôle associé. Les rouges c'est justement ce que je vous disais de remplacer par des séries de CAs.Add pour tous les contrôles associés, ne participant pas à la recherche de la ligne. Elle sert à garnir les TextBox au moyen de l'instruction CAs.ValeursDepuis TVL puis à les y renvoyer modifiés et convertis en type de données de cellules corrects par CAs.ValeursVers TVL
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Remarque: dans le classeur que vous aviez joint au #8, si vous enlevez l'EPI des ComboBox prises en charge par CLs vous aurez un doublon sur la combinaison Bretagne | Rennes | DUPONT Jack, et du coup avec la programmation actuelle on ne pourra plus ramener de fiche avec ces trois indices puisqu'ils ne suffisent pas à isoler une ligne à modifier possiblement.
 

Dranreb

XLDnaute Barbatruc
Raz le bol des TextBox1, TextBox2 …
Renommez vos contrôles comme je l'ai fait dans ma version actuelle du fichier :
VB:
Private Sub UserForm_Initialize()
   Set CLs = New ComboBoxLiées: Set CAs = New ControlsAssociés
   CLs.Plage Feuil1: Set CAs.Colonnes = CLs.Colonnes
   CLs.Add Me.CBxPôle, "Pôle"
   CLs.Add Me.CBxAgence, "Agence"
   CLs.Add Me.CBxCollab, "Collaborateur"
   CAs.Add Me.CBxEPI, "EPI": CBxEPI.List = SujetCBx(CLs.Colonnes("EPI"))(0)
   CAs.Add Me.TBxRéf, "Référence"
   CAs.Add Me.TBxTaille, "Taille"
   CAs.Add Me.TBxRéfU, "Référence unique"
   CAs.Add Me.TBxStockAg, "Stock en agence"
   CAs.Add Me.TBxPossess, "En possession"
   CAs.Add Me.TBxÉtat, "Etat"
   CAs.Add Me.TBxÀCommdr, "A commander"
   CAs.Add Me.TBxStatut, "Statut"
   CAs.Add Me.TBxDateAttrib, "Date d'attribution"
   CAs.Add Me.TBxDateRenouv, "Date de renouvellement"
   CLs.CouleurSympa
   CLs.LMaxDropBtn = 75
   CLs.Actualiser
   End Sub
Confiez à CLs une ComboBox participant à l'dentification de la ligne, et à CAs tout le reste y compris une ComboBox à liste fixe. Je ne sais plus ce qu'était la TextBox7. Le 7ème contrôle après CBxEPI c'est TBxÀCommdr correspondant à la colonne "A commander". C'est apparemment une quantité, ça m'étonnerait que vous voudriez une liste là dessus.
 
Dernière édition:

HugoTR35

XLDnaute Nouveau
Non en effet, je voulais faire une liste déroulante pour l'Etat, et cela fonctionne très bien avec une CBx.
Je me permets vu que vous êtes d'un très bon conseil, comment dois procéder pour avoir une liste d'EPI (Pleins de ligne les unes en dessous de l'autre) en mettant des critères type le pole et l'agence ? et inversement avoir comme critère le pole et l'EPI pour avoir la liste des collaborateurs ?

Un peu comme un TCD et ses segments ... mais je veux tout faire en userform pour la simplicité d'utilisation !
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 317
Membres
102 862
dernier inscrit
Emma35400