Création d'un formulaire

31rebus.zip (268.16 Ko)
Bonjour à vous,

Novice en VBA, je viens vers vous aujourd'hui car je suis une quiche sur excel et je me suis lancé dans la création d'un fichier automatique (A force de regarder des tutos et de trainer sur les forums je commence à avoir le vocabulaire, mais pas assez encore car je ne comprends pas tout)
L'objectif de mon fichier est de créer une base de donnée des pièces à relancer en production. J'ai créé un Userform en ayant inséré des rowsources à mes combobox. Voici les processus que je n'arrive pas à mettre en place:
- Lorsque je sélectionne un N° dans ma comboBox6, je voudrais que ca réalise une recherchev pour les 3 textBox d'à coté. Une case où on y trouve le type de bateau, une autre avec la version, et la 3eme avec le coloris.
- Egalement, je n'arrive pas à insérer dans ma combobox, une rowsource horizontale avec les numéros de meuble (80-01-01;80-01-02 etc...) et que lorsque je sélectionne un meuble, il y ai toute la liste des pièces qui s'affiche dans ma listbox1. J'aimerai par la suite insérer en plus gros dans ma textbox5 la ligne sélectionnée dans ma listbox1. Ainsi en cliquant sur enregistrer, une base de donnée se créée dans une autre feuille "BDD".

Merci d'avance pour votre aide.

Bonjour,

J'ai repris votre fichier.

J'ai créé un Userform en ayant inséré des rowsources à mes combobox.

Oubliez les rowssource, préférez plutot la methode ADDITEM. Qui plus est les rowssource posent parfois des soucis dans la gestion des codes

1. Ouverture Userfom

- Allez dans l'éditeur VBA
- Double click sur l'userform
- Dans la fenêtre, mettez ce code

Private Sub UserForm_Initialize()
Dim Dcol As Integer

With Worksheets("Accueil")
    MARQUE_DE_BATEAU.List = .Range("B29:B" & .Range("B" & .Rows.Count).End(xlUp).Row).Value
    ComboBox6.List = .Range("E29:E" & .Range("E" & .Rows.Count).End(xlUp).Row).Value
    Dcol = .Cells(29, Columns.Count).End(xlToLeft).Column
    ComboBox5.List = WorksheetFunction.Transpose(.Range(.Cells(29, 10), .Cells(29, Dcol)).Value)
End With
End Sub

- sélectionner la combobox Marque de bateau, puis allez supprimer la valeur Rowssource. Idem pour la combobox6 et 5
- Supprimez les formules Marques, Numero et nom_meuble dans le gestionnaire de formules. Elles ne servent plus à rien

2. Lorsque je sélectionne un N° dans ma comboBox6, je voudrais que ca réalise une recherchev pour les 3 textBox d'à coté. Une case où on y trouve le type de bateau, une autre avec la version, et la 3eme avec le coloris.

- Allez dans l'éditeur VBA
- Dans l'userform, renommez les 3 textbox de gauche à droite en Textbox1, Textbox2 et Textbox3
- Double click sur l'userform
- Dans la fenetre coller le code ci-dessous

Private Sub ComboBox6_Change()
Dim Lig As Integer

Lig = ComboBox6.ListIndex + 28
With Worksheets("Accueil")
    TextBox1 = .Range("F" & Lig).Value
    TextBox2 = .Range("G" & Lig).Value
    TextBox3 = .Range("H" & Lig).Value
End With
End Sub

3. lorsque je sélectionne un meuble, il y ai toute la liste des pièces qui s'affiche dans ma listbox1

- Allez dans l'éditeur VBA
- Double click sur l'userform
- Dans la fenetre coller le code ci-dessous

Private Sub ComboBox5_Change()
Dim Col As Integer, Dlig As Integer

Col = ComboBox5.ListIndex + 10
With Worksheets("Accueil")
    Dlig = .Cells(Rows.Count, Col).End(xlUp).Row
    ListBox1.List = .Range(.Cells(29, Col), .Cells(Dlig, Col)).Value
End With
End Sub

NB :

- Une question : Pourquoi n'avez vous pas mis vos données de la feuille ACCUEIL dans une feuille spécifique ?
- Juste pour avoir un ordre croissant des combobox, je pense que ce serait utile de renommer la combo Marque de bateau en combobox1 et les Combobox 5 et 6 en Combobox2 et 3. Ce sera plus facile lors de l'enregistrement. Si oui, il faut adapter les codes ci dessus

Merci énormément Dan, ça fonctionne niquel ! J'ai renommé mes combobox comme tu me l'a conseillé ;) Merci !

Comment pourrai-je faire pour afficher la séléction de ma Listbox1 en gros dans ma listBox2 à l'aide d'un double click ?

Merci d'avance :)

Pour répondre à ta question, j'ai mis toutes mes données sur la feuille principale car je n'arrivait pas à faire le lien avec les autres feuilles :) J'ai vraiment un niveau pitoyable ahaha

Bonne journée

Bonjour

Comment pourrai-je faire pour afficher la séléction de ma Listbox1 en gros dans ma listBox2 à l'aide d'un double click ?

Je n'ai pas de listbox2 dans l'userform. Par contre vous pouvez ajouter ce code dans l'userform pour ajouter la donnée de la listbox dans la Textbox4 (je pense avoir renommé cette textbox - celle juste à gauche de Qté)

Private Sub ListBox1_Click()

TextBox4 = ListBox1.Value
End Sub

j'ai mis toutes mes données sur la feuille principale car je n'arrivait pas à faire le lien avec les autres

Je peux vous arranger cela si vous voulez.

Dans ce cas le mieux est que vous mettiez votre fichier tel qu'il est actuellement. A moins que vous vouliez que je continue sur celui que vous avez posté.

Pour le code Initialize, il faudrait rajouter les lignes pour charger les deux combobox 4 et Relance_par (à éventuellement renommer Combobox5).

    ComboBox4.List = .Range("C29:C" & .Range("C" & .Rows.Count).End(xlUp).Row).Value
    RELANCE_PAR.List = .Range("A29:A" & .Range("A" & .Rows.Count).End(xlUp).Row).Value

Supprimez les valeurs de rowssource et les noms dans le gestionnaire de noms

Dan,

Je renvoie le fichier avec les modifications effectuées.

- J'ai une question, comme vous pouvez le voir dans l'onglet "BddMarque1" dans la colonne "REFERENCE MEUBLE" il y a autant de ligne "80-01-01" que de pièce composée dans ce meuble (colonne "Désignation"). Est-il possible de passer directement par cette base de donnée en disant dans la combobox3 qu'on affiche tous les numéros de meubles en supprimant les doublons; tout en gardant les désignation des pièces à sélectionner dans la listbox1 ? Car si la base de donnée (extraction d'une nomenclature d'un logiciel 3D) est amenée à être changé (ajout de pièces ou changement de nom par exemple) je serais encore obligé de refaire une base de donnée horizontale comme à partir de la colonne "O".

J'espère que j'ai été assez explicite.

Dans un second temps, je voudrai relier la combobox1 et la combobox3. Je m'explique, les noms des meubles sont différents en fonction des marques. Je souhaiterai qu'en choisissant "Marque2" dans la comobox1, c'est les meubles de la bddMarque2 qui sont proposés dans la comobox3. Idem pour Marque1 et Marque3.

Dans un troisième temps, j'aimerai qu'en cliquant sur "enregistrer la relance" un MsgBox s'affiche si une des case n'a pas été remplie (sauf le commentaire qui est facultatif). Un autre MsgBox s'affiche "Relance enregistré" si la relance à été faite correctement.

Merci

14rebus.zip (645.69 Ko)

En fait ce n'est pas par rapport à la marque du bateau qu'il faut que j'associe ma ComboBox3 mais plutôt suite au résultat de ma TextBox1 (modèle du bateau) car chaque modèle de bateau possède sa propre base de donnée.

Si textbox3= "CA21", alors ComboBox3 affiche les meubles de la "bddMarque1"

Si textbox3= "CA11", alors ComboBox3 affiche les meubles de la bddMarque2

Si textbox3= "CA40", alors ComboBox3 affiche les meubles de la bddMarque3 etc etc..

Je créerai autant d'onglet Excel que de modèles de bateaux en les renommant par noms des modèles.

Merci

1. Est-il possible de passer directement par cette base de donnée en disant dans la combobox3 qu'on affiche tous les numéros de meubles en supprimant les doublons;

Supprimer les doublons est faisable oui .

2. En fait ce n'est pas par rapport à la marque du bateau qu'il faut que j'associe ma ComboBox3 mais plutôt suite au résultat de ma TextBox1 (modèle du bateau) car chaque modèle de bateau possède sa propre base de donnée.

Je créerai autant d'onglet Excel que de modèles de bateaux en les renommant par noms des modèles.

Donc si je comprends bien vous allez créer un onglet bddmarque par bateau. D'où :
- vous risquez d'avoir combien de bdd ?
- Pour nommer les onglets ce sera sur base de la marque mentionnée en combobox3 ou en fonction du nom CA. Il faut une structure correcte pour le code

3. Puis vous parlez de textbox3 mais c'est plutot la textbox1 qui indique le CA non ?

4. Pourquoi vous prenez vos références dans la feuille Prod. Cela était plus clair avant dans la feuille Accueil car pour moi toutes les possibilités ne sont pas en Prod. Suggestion : faire une feuille "Liste" avec les données Noms, marque et motif relance

Là il faut que je comprenne bien comment vous fonctionnez

Supprimer les doublons tout en gardant la liste des pièces du meuble ? Ca serait super !

Oui je remet le fichier avec les nouveaux noms d'onglet. Pour le moment nous sommes que sur 3 modèles de bateaux (soit 3 bdd), mais dans un an nous seront surement à 5-6.

Le nom de mes meubles seront choisi en fonction du modèle de bateau, soit la TextBox1 (CA21, CA11, CA40)

Dans mon fichier actuel je n'est qu'une base de donnée copiée 2 fois car l'extraction des nomenclatures des CA11 et CA40 n'est pas encore complète.

11rebus.zip (645.95 Ko)

Ok. Je vais voir sur base du dernier fichier

Quid du point 4 ? je cree une feuille spécifique ?

NB : Dans la feuille BDD vous êtes en tableau structuré, il ne faut donc pas formater les lignes et colonnes comme vous l'avez fait dans la dernière version du fichier. Je vais corriger ce point

Oui vous pouvez créer une feuille "Liste"

Okay j'attend votre retour.

Merci beaucoup

Dans votre fichier gestionnaire de noms, il y a plein de réference à un lien S/affaire....Vous avez fait un copier coller d'un autre fichier ?

Les marques de bateau viennent toujours de la feuille PROD ou doivent être aussi dans la feuille Liste comme référence ?

est-ce l'userform n'est pas trop grande pour vous ? Vous la voyez en plein écran ?

le gestionnaire de fichier de noms peut être supprimé, c'est la nomenclature qui a été copié d'un fichier sur le serveur de mon entreprise.

Les marques peuvent également faire partie de la feuille Liste.

Non il ne prend pas tout mon écran, après la taille du Userform peut être modifié en plus petit car certains collègues qui utiliseront ce fichier n'ont pas forcement la même dimension d'écran. Je sais pas si ça peut jouer dessus (C'est peut-être l'intérêt de votre question ?).

le gestionnaire de fichier de noms peut être supprimé, c'est la nomenclature qui a été copié d'un fichier sur le serveur de mon entreprise.
Les marques peuvent également faire partie de la feuille Liste.

Ok pour ces deux points.

Dans votre feuille BDD :

- La colonne Date est remplie sur base de quelle info
- Il manque une colonne pour le type de bateau --> On ajoute en colonne D avant la colonne Version ?

Pour les type de bateau CA, doit-on ajouter les modèles en feuille Liste ou vous les prenez toujours de la feuille PROD

- je vais mettre une formule pour insérer la date et l'heure de la relance lors d'un nouvel enregistrement.

D'ailleurs, peut-on combiner une RechercheV à une fonction Si ? De facon à pouvoir compléter les colonnes Largeur, Longueur, Matériau etc... par rapport au modèle "CA".

- Exact il me manque une colonne, OKAY pour l'ajouter en colonne D.

- On va la laisser en feuille PROD, car le tableau PROD est également extrait d'un autre fichier Excel sur le serveur.

Merci

je vais mettre une formule pour insérer la date et l'heure de la relance lors d'un nouvel enregistrement.

Pourquoi faire, vous pourriez mettre la date avec le code lors de l'enregistrement.

D'ailleurs, peut-on combiner une RechercheV à une fonction Si ? De facon à pouvoir compléter les colonnes Largeur, Longueur, Matériau etc... par rapport au modèle "CA".

Je n'ai pas compris le pourquoi de la recherchev et où vous voulez mettre cette formule

Ok pour les 2 autres points

Bonjour Dan,

- Je ne sais pas comment coder l'heure et la date, si tu peux m'éclaircir ca serait top !

- Pour compléter toutes les colonnes BDD, j'ai des informations a aller chercher dans les bddCA21, bddCA11 etc.. Afin de compléter les colonnes I,J,K,L,M de l'onglet BDD. Il est peut-être possible également d'inséré cette RechercheV directement dans le codage ?

Bonjour

- Je ne sais pas comment coder l'heure et la date, si tu peux m'éclaircir ca serait top !

Il suffit d'utiliser Date dans le code. Je le mettrai

- Pour compléter toutes les colonnes BDD, j'ai des informations a aller chercher dans les bddCA21, bddCA11 etc.. Afin de compléter les colonnes I,J,K,L,M de l'onglet BDD. Il est peut-être possible également d'inséré cette RechercheV directement dans le codage ?

On peut le faire avec le code. cela évite les formules car si trop, cela peut ralentir excel et puisqu'il y a du code VBA autant faire avec

Par contre je dois savoir deux chose :
- En colonne N de la feuille BDD on a l'information FLUX. Vous la pechez où dans les feuilles BDDCA..
- Est-ce que la colonne désignation peut comporter des doublons ? exemple on choisit la ref 80_01_01 et la désignation OB 01-1_TRAV_BAS. Est-ce que cette désignation peut aussi se retrouver dans une autre référence ?

- La colonne Flux dans BDD est la colonne Commentaire dans bddCA21

- Oui il y a des doublons dans la colonne Désignation. Il y a par exemple un "poteau d'angle" pour le meuble 80_02_04 et pour le meuble 80_02_06. (Ce sont 2 pièces de taille différente)

Donc il ne faut pas enlever les doublons.

Re

Voici votre fichier en retour dans lequel j'ai modifié pas mal de choses

- feuille Accueil : remise en forme
- userform : remise en forme pour meilleure visibilité. Je pense que vous devrez encore déplacé certaines rubriques ou boutons
- Ajout d'une feuille Liste avec 3 colonnes (en format Tableau structuré). Si vous ajoutez des données, il vous suffit de les ajouter en dessous des autres. Elles seront prises en considération dans le tableau et aussi dans le nom attribué dans Formules -> gestionnaire de noms.

NB :
- Lorsque vous commencerez à utiliser le fichier, il ne faut pas formater la feuille BDD, Au départ, elle doit être comme dans le présent fichier.
Après vos tests, sélectionnez toutes les lignes depuis la ligne 2 et suivante, faites un click droit puis choisissez l'option "Supprimer" (attention ne pas choisir Effacer ou Supprimer-Delete sur votre clavier !!). Cette procédure est importante pour que les premières données soient en ligne 2
- Les tableaux en feuille BDD et feuille Listes ne doivent jamais été préformatés. Le fait d'ajouter des données est automatiquement prit en considération dans le tableau. Si vous en supprimez, toujours procéder décrit ci-avant --> choisir la donnée ou ligne à supprimer puis click droite puis option Supprimer dans le menu

Edit : supprimé fichier au profit d'un nouveau

48rebus.zip (599.06 Ko)
Rechercher des sujets similaires à "creation formulaire"