Formulaire VBA - problème

tath132

XLDnaute Nouveau
Bonjour tout le monde! :)

je viens vous demander un coup de pouce pour un fichier que j'essaye d'automatiser. Si vous pouviez me mettre sur des pistes (car même en français j'ai un peu du mal à formuler ce que je veux cf.intitulé du sujet...:eek:) ou carrément m'aider ça serait vraiment cool! Je vais essayer d'être le plus claire possible. (Ci-joint un fichier excel pour mieux montrer ce que je souhaite faire. PS : c'est un exemple bateau, donc peut être pas cohérent dans le fond mais c'est ce que je veux faire dans la forme. En feuille 1 il y a les données que j'utilise et en feuille 2 il y a l'imprimé écran de ce que je voudrais voir apparaître dans l'userform lorsque je sélectionne une "référence deal").

L'idée :
Alors j'ai fait un formulaire VBA que je n'utilise pas pour entrer des données mais comme interface pour faire passer des informations d'une feuille 1 à une feuille 2 qui a une mise en forme particulière.

Donc quand je lance le formulaire et que je choisi "référence deal", les informations qui correspondent à la "référence deal " sélectionnée s'affichent dans les champs correspondant dans l'userform.

Cela fonctionne parfaitement puisqu'une référence deal correspond à une seule ligne.

Mon problème :

Maintenant je veux rajouter un peu plus de détails à ma feuille 2. Pour cela, j'utilise maintenant une base de donnée qui me donne le détail de mes deals en tranches. C'est à dire qu'un deal peut avoir plusieurs tranches (de 1 à 4 tranches max).

Donc chaque ligne de tranche contient l'information qui est commune aux tranches d'un même deal et les informations spécifiques à la tranche.

Sur mon Userform, lorsque je sélectionne une "référence deal" je veux voir apparaître dans les champs correspondant, les informations communes et les informations spécifiques aux tranches

Problème 1 : il faut que mon programme soit capable de détecter le nombre de tranches par deals. Selon le deal il peut y en avoir qu'une seule, 2, 3 ou 4 (c'est variable).

Problème 2 : Il faudrait que quand je sélectionne 1 codage, ça me fasse apparaître toutes mes tranches.

Je vous remercie par avance du coup de main et d'avoir pris le temps de me lire :p

A bientôt j'espère!
 

Pièces jointes

  • 1 - essais formulaire avec tranches.xlsm
    54.8 KB · Affichages: 21

Papou-net

XLDnaute Barbatruc
Re : Formulaire VBA - problème

Bonsoir tath132,

Voici une copie de ton fichier modifié.

Pour construire le formulaire plus efficacement, j'ai regroupé les TextBox dans des Frames.

Pour optimiser le code, je l'ai entièrement réécrit.

Espérant t'avoir aidé.

Cordialement.
 

Pièces jointes

  • Copie de 1 - essais formulaire avec tranches.xlsm
    61.4 KB · Affichages: 22

tath132

XLDnaute Nouveau
Re : Formulaire VBA - problème - multipage

Bonsoir Papou-net :)

merci beaucoup de ton aide, ca m'a énormément permis d'avancer! Est ce que je peux encore te demander un petit coup de pouce? :p

J'ai utilisé les codes que tu m'as donné pour le fichier sur lequel je travail. Le problème est que mon Userform a un multipage.
- l'onglet 1 et 2 contiennent des informations qui sont "communes"
- l'onglet 3 les informations qui sont spécifiques aux tranches.

Mon problème est que quand je sélectionne le code référence, les informations des tranches qui devraient toutes être dans l'onglet 3 sont dispersées entre l'onglet 2 et 3. Je n'arrive pas à faire qu'elles restent toutes dans l'onglet 3.

Ci-joint mon fichier Excel avec mon Userform avec le multipage.
Je n'ai pas programmé les cellules pour les informations "communes"(les cases en bleu) parceque ça j'arrive à le faire, par contre les tranches de l'onglet 3... j'ai essayé de bricoler mais ça ne donne rien...

Merci beaucoup de ton aide.

Cordialement
 

Pièces jointes

  • formulaire - multipage - tranches.xlsm
    38.2 KB · Affichages: 22

Papou-net

XLDnaute Barbatruc
Re : Formulaire VBA - problème

Bonsoir tath132,

Voici ton fichier modifié.

Pour commencer, j'ai transféré le code de Private Sub ComboBox1_Click() dans Private Sub ComboBox1_Change().

Ensuite, dans la boucle d'écriture des TextBox, je relève que l'ordre numérique n'est pas entièrement respecté:

Code:
Me.Controls("TextBox" & I * 25) = Cel.Offset(I - 1, 50)
    Me.Controls("TextBox" & I * 25 + 1) = Cel.Offset(I - 1, 51)
    ...
    Me.Controls("TextBox" & I * 25 + 9) = Cel.Offset(I - 1, 59)
    Me.Controls("TextBox" & I * 25 + 10) = Cel.Offset(I - 1, 50) <--- 60 ?
    Me.Controls("TextBox" & I * 25 + 11) = Cel.Offset(I - 1, 61)
    ...
    Me.Controls("TextBox" & I * 25 + 19) = Cel.Offset(I - 1, 69)
    Me.Controls("TextBox" & I * 25 + 20) = Cel.Offset(I - 1, 60) <--- 70 ?
    Me.Controls("TextBox" & I * 25 + 21) = Cel.Offset(I - 1, 71)
    ...

Mais peu importe, puisque j'ai remplacé toutes ces lignes par deux boucles imbriquées (For I...For x...Next x...Next I). Pour structurer ces boucles, j'ai dû renuméroter tous les TextBox de la page 3 de la façon suivante:

Dans Frame1
TextBox50...Textbox75
Dans Frame2
TextBox100...T125
Dans Frame3
TextBox150...Textbox175
...
Dans Frame7
TextBox350...Textbox375

Je te laisse vérifier si le résultat répond à ta question.

A +

Cordialement.
 

Pièces jointes

  • Copie de formulaire - multipage - tranches.xlsm
    39.8 KB · Affichages: 28

Discussions similaires

Réponses
5
Affichages
573
Réponses
11
Affichages
533

Statistiques des forums

Discussions
314 655
Messages
2 111 604
Membres
111 217
dernier inscrit
aladinkabeya2