Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Qui pourrez M'aide je ne trouve pas la solution ou me dire si cela n'ai pas possible.

filtre69

XLDnaute Occasionnel
Bonjour je voudrais faire un tableau qui a partir de 2 listebox me remplie 3 textbox .
Alors la première étape est ok listebox je sélection le site il m'affiche le bon résulta dans la textbox1 c'est bon.
Pour le combobox2 c'est la ou je n'arrive pas, donc je passe par une listbox cela fonction bien ce que je recherche c'est que le résulta de la listebox s'affiche directement dans la textbox2 et de la je voudrais qui m'affiche dans la textbox3 le n° associer de la colonne ou il se trouve.
exemple comme sur la photo si Ecole Maternelle A1 = 211 textbox1 + Fonctionnement Travaux =61522.1 textbox2 alors textbox3 = 5160.
le probléme est que si je choisi Ecole Maternelle A1 = 211 textbox1 + Fonctionnement Travaux =611 textbox2 alors textbox3 = xxxx
J'ai du mal a l'expliqué
mais je ne trouve pas la formule.
Je joint mon tableau.

Merci d'avance de votre aide


 

Pièces jointes

  • Me-batiments.xlsm
    25.9 KB · Affichages: 51
Dernière édition:

Dranreb

XLDnaute Barbatruc
Si le but est la mise à jour du tableau feuille "Création de Bon" il serait souhaitable de prévoir un 3ième jeu de variables CLsB, CAsB, LCouB, TVLB() pour bénéficier des facilités de mise à jour.
S'il y aura là immanquablement des ComboBox qui taperont dans les autres tableaux, il serait souhaitable de grouper les contrôles dans des Frame, un pour pour tout ce qui est spécifique à l'entreprise, un autre pour la nomenclature, le troisième le bon qui les associe. Ça permettrait de réactiver les ComboBoxLiées qui s'y rapportent dans des Private Sub FrmN_Enter.
 

filtre69

XLDnaute Occasionnel
Re,
Le but est de sélectionner un bâtiments un code inter et une entreprise qui a le corps de métiers sachant que il peut y'avoir plusieur corps de métiers dans une même entreprise et de crée un bon d'intervention imprimer et sauvegarder.

Merci
Cordialement
 

Dranreb

XLDnaute Barbatruc
Les procédures qui suivent la Sub UserForm_Initialize, je vous les indiquerai, bien sûr.
Quelle lettre voulez vous au lieu de E qui ne va pas pour les entreprises. Avez vous un synonyme de ce mot ?
"S" comme société ça irait ?
Revoyez le dessin de l'UserForm avec 3 Frame (Cadre dans la boite à outils) si cette solution vous convient, un pour le bâtiment, un pour la société et un pour l'intervention.
déclarez alors par exemple :
VB:
Option Explicit
Private WithEvents CLsB As ComboBoxLiées, CAsB As ControlsAssociés, LCouB As Long, TVLB() ' Bâtiment
Private WithEvents CLsS As ComboBoxLiées, CAsS As ControlsAssociés, LCouS As Long, TVLS() ' Société
Private WithEvents CLsI As ComboBoxLiées, CAsI As ControlsAssociés, LCouI As Long, TVLI() ' Intervention
Et dans la Sub UserForm_Initialize faites 3 paquets d'initialisation sur le même modèle que l'unique actuel.
 

filtre69

XLDnaute Occasionnel
Re Dranreb,
Option Explicit
Private WithEvents CLsB As ComboBoxLiées, CAsB As ControlsAssociés, LCouB As Long, TVLB() ' Bâtiment
Private WithEvents CLsS As ComboBoxLiées, CAsS As ControlsAssociés, LCouS As Long, TVLS() ' Société
Private WithEvents CLsI As ComboBoxLiées, CAsI As ControlsAssociés, LCouI As Long, TVLI() ' Intervention

Je l'avais fait c'est la suite au j'arrive pas j'ai que des erreurs.
Je vous joints mon fichier avec quelque explications sur votre userform.

Merci
Cordialement
 

Pièces jointes

  • Temp-8-3.xlsm
    710.7 KB · Affichages: 4

Dranreb

XLDnaute Barbatruc
Bonsoir.
Pour l'instant il y a une erreur de compilation sur la 1ère ligne car CLsN n'existe plus. C'est CLsB apparemment ?
J'avais mis ça comme exemple parce que vous parlier en dernier de bâtiments, plus de nomenclature.
Menez une petite réflexion pour bien fixer définitivement qu'est ce qui s'appelle comment, et surtout par quelle lettre en suffixe, sachant que le E ne va pas à cause du CAsE qui fait Case, alors prenons S comme société si vous n'y voyez pas d'inconvénient.
À part ça, oui, vous me semblez bien parti pour continuer …
Remarque il n'est peut être pas nécessaire de restituer tout ce qu'il y a dans tous les tableaux
Dans le tableau des interventions, qui est celui à mettre à jour si j'ai bien compris, il n'y a que 9 colonnes après tout. C'est peut être par celui là qu'il aurait fallu commencer, surtout si les deux autres ne sont qu'en consultation, dans cet UserForm là.
Un peu étonné qu'il ne soit pas prévu dans les interventions une date ?
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Oui, c'est loin d'être terminé, tout çà, mais je pense que je verrai moi même ces détails. Pour votre info, et si c'est ça qui vous gène déjà, je dirais déjà que rien ne s'affiche dans les listes de CBxSociete et CBxPrestation parce qu'il manque l'instruction CLsS.Actualiser derrière. Mais je viens d'ailleurs de voir que vous les avez de toute façon confié à CAsS, non à CLsS, or l'objet ControlsAssociés ne prépare jamais de liste pour les ComboBox. Pour que je fasse ce qu'il faut pour garnir les TextBox, ce sont elles qu'il faut confier à CAsS.
Faites ensuite les initialisations pour Intervention. À tout hasard ne mettez plus les .Actualiser et ne tentez plus d'exécution, pour éviter un danger (risque de plantage sévère et silencieux d'Excel si une même ComboBox est gérée simultanément par plusieurs ComboBoxLiées).
 
Dernière édition:

filtre69

XLDnaute Occasionnel
Re,
Je viens de changer les lignes comme cela bien sur ca fonctionne.
Ma question est les (N-1) si je comprends bien sont = au colonne?

CLsS.Add Me.CBxSociete, "Societe"
CLsS.Add Me.CBxPrestation, "Prestation" & vbLf & "(S-0)"
CLsS.Actualiser
 

Dranreb

XLDnaute Barbatruc
Vous parlez des fins de titres ? Non, ils étaient comme ça dans le classeur de Linda42. Je ne sais pas ce que ça lui apportait de mettre ça. Mais ils étaient comme ça, alors je les reproduisis comme ça dans les .Add
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
C'est bien, mais Il ne fallait pas de Sub CBxSociete_Change, il fallait ça :
VB:
Private Sub CLsS_Change(ByVal Complet As Boolean, ByVal NbrLgn As Long)
   If NbrLgn = 1 Then Exit Sub
   ReDim TVLS(1 To 1, 1 To CLsS.Colonnes.Count)
   CAsS.ValeursDepuis TVLS
   End Sub
Private Sub CLsS_BingoUn(ByVal Ligne As Long)
   TVLS = CLsS.Lignes(Ligne).Range.Value
   CAsS.ValeursDepuis TVLS
   End Sub
Sur le même modèle que les CLsB_Change et CLsB_BingoUn
Et il faudra à peu près la même chose pour les Interventions avec en plus LCouI = Ligne. Ce n'est que dans celles ci qu'il y aura les CBnEntrée.Enabled = True ou False, je pense puisque ce bouton validera l'ajout ou la modification d'une ligne du tableau à mettre à jour.

Pourquoi avoir mis deux contrôles pour la société ? La CBxSociete suffit, pas besoin de la TBxEntreprise.
Pas besoin non plus de détailler les écritures dans les Interventions, la CBnEntrée_Click s'écrira probablement comme ça :
Code:
Private Sub CBnEntrée_Click()
   CAsI.ValeursVers TVLI
   If LCouI = 0 Then
      CLsI.ValeursVers TVLI
      CLsI.Lignes.Add.Range.Value = TVLI
      CLsI.Actualiser
   Else
      CLsI.Lignes(LCouI).Range.Value = TVLI
      End If
   End Sub
C'est tout l'intérêt de ces objets: grace aux .Add de la Sub UserForm_Initialize ils savent tout seul à quelles colonnes se trouvent les données et savent les mettre à la bonne place dans un tableau dynamique. D'où moins de code et de risque d'erreurs.

Édition: je viens de me rendre compte que la Sub BtCree_Click que vous aviez mise n'écrit pas dans la feuille "Création de bon". C'est autre chose. Dans ce cas bien sûr c'est différent. Mais deux remarques :
1) — Il vaut mieux reprendre si possible les infos des TVLB, TVLS et TVLI car ce sont de bonnes valeurs de cellules, non des textes comme les valeurs de contrôles: Ils sont déjà convertis en nombres s'il y a lieu.
2) — Il vaut mieux autant que possible ranger ces informations dans les éléments d'un tableau dynamique et verser celui ci à la fin en une fois dans la feuille. Parce que, tandis que la modification d'un élément de tableau est extrêmement rapide, chaque Cells(x, y) = UnTruc est pratiquement tout aussi long à exécuter que l'affectation de tout le tableau à la propriété Value d'un Range de plusieurs cellules !
 
Dernière édition:

Discussions similaires

A
Réponses
1
Affichages
776
A
A
Réponses
7
Affichages
2 K
H
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…