Gestion d'un cahier des charges avec un userform

Bonjour à vous,

Petit nouveau sur le forum et petit nouveau dans le langage VBA ! pour aider mon service achat je me suis lancé dans la création d'un cahier des charges pour simplifier le traitement. Après quelques échanges nous avons réussis à mettre en place un document que vous avez en PJ.

Bon je suis vraiment un débutant et malgré toutes les lectures faite sur internet, je nage un peu « beaucoup », du coup je demande de l’aide !

Au début je suis parti à construire le fichier ci-joint, ou j’ai construit l’userform pour la création d’un produit et un autre pour la visualisation et la modification.

J’ai réussi à renseigner les différents champs et il me restait à mettre en place la modification !

Sauf que je découvre que si mon service achat rajoute ou enlève une colonne dans le l’onglet sections, il faudra refaire la mise en page en modifiant tous les noms, puisqu’il faudrait apparemment passer en mode tableau !

Du coup pouvez-vous m’aider, à me dire vers quelle solution serait la mieux et m’aider pour le code, pour afficher dans l’userform les différents champs de la base suivant la référence d’un produit, de mettre en place des listes suivant l’onglet listes, qui seront utiliser dans l’userform dans les champs, devise, unitée, RAL, etc. etc. et ensuite quand y clic sur le bouton modifier que cela écrive dans la ligne qui va bien les modifications apportées !

par avance merci

pascal

Bonjour,

Au début je suis parti à construire le fichier ci-joint

????????????????????????

Bonjour,

Au début je suis parti à construire le fichier ci-joint

????????????????????????

oups j'avais publié d'attendre la fin du té&téléchargement du fichier!!!!

Bonjour,

ci-jointe une proposition via l'utilisation du mode tableau.

Plusieurs remarques :

1- l'utilisation d'un objet tableau (mode tableau) permet de se limiter au nombre de lignes effectivement remplies car tout ajout de ligne reconduit le format et les formules éventuellement présentes.

2- fonder le remplissage d'une ligne du tableau sur les numéros des TextBoxes n'est pas fiable et au vu de leur grand nombre, risque fort de conduire à des erreurs, surtout si par la suite vous insérez de nouvelles colonnes dans votre tableau. Une bien meilleure solution est d'associer chaque TextBox au nom de la colonne correspondante de votre tableau via sa propriété "Tag".

J'ai procédé automatiquement à cette association en supposant que le séquencement de vos TextBoxes est initialement correcte. Pour cela, j'ai créé une procédure qui réalise statiquement cette association, c'est à dire que l'association est conservée à la fermeture du classeur (module UsF_Sections_TextBoxes). Cette procédure n'est donc qu'à passer une seule fois.

Merci Thev, c'est bien cela que je recherchais, je test cela au plus tôt!

encore merci

pascal

Bonjour,

ci-jointe une proposition via l'utilisation du mode tableau.

2- fonder le remplissage d'une ligne du tableau sur les numéros des TextBoxes n'est pas fiable et au vu de leur grand nombre, risque fort de conduire à des erreurs, surtout si par la suite vous insérez de nouvelles colonnes dans votre tableau. Une bien meilleure solution est d'associer chaque TextBox au nom de la colonne correspondante de votre tableau via sa propriété "Tag".

J'ai procédé automatiquement à cette association en supposant que le séquencement de vos TextBoxes est initialement correcte. Pour cela, j'ai créé une procédure qui réalise statiquement cette association, c'est à dire que l'association est conservée à la fermeture du classeur (module UsF_Sections_TextBoxes). Cette procédure n'est donc qu'à passer une seule fois.

La fonction Tag est très bien, mais apparemment les Tag ne sont pas remplis jusqu'au bout et même si je le fait manuellement cela ne remplis pas la TextBoxes!

j'ai peu être zappé quelque chose!

pour info les TAG sont bien jusqu'à la TextBoxes203 et ensuite plus rien!

Une idée Thev?

pour info les TAG sont bien jusqu'à la TextBoxes203 et ensuite plus rien!

La plage de l'objet tableau ne tenait pas compte des 25 dernières colonnes. C'est pourquoi TextBox204.Tag, TextBox205.Tag, … n'ont pas été alimentées des noms de colonne correspondants via ma procédure statique : "textboxes_tag"

ci-jointe nouvelle version avec la plage de l'objet tableau étendue aux 25 colonnes manquantes et 25 derniers Textboxnnn.Tag remplis

cool merci Thev, je regarde le fichier le plus vite possible

pascal

Un grand merci à toi Thev, c'est exactement se que je recherchais

J'ai une autre question, pour des raisons d'uniformisations, on me demande de mettre une zone de liste modifiable à la place de certaines Textboxes (exemple pour les unités, les devise ou ral) est ce que cela serait simple à mettre en place en codage?

on me demande de mettre une zone de liste modifiable à la place de certaines Textboxes (exemple pour les unités, les devise ou ral) est ce que cela serait simple à mettre en place en codage?

Oui avec quelques aménagements

1- ajouter l'option Combobox dans les boucles de remplissage

        
        For Each ctrl In Me.Controls
            If TypeOf ctrl Is MSForms.TextBox Or TypeOf ctrl Is MSForms.ComboBox Then
                On Error Resume Next
                ctrl.Value = tb_sections.ListColumns(ctrl.Tag).DataBodyRange(ligne_sections)
            End If
        Next ctrl
        For Each ctrl In Me.Controls
            If TypeOf ctrl Is MSForms.TextBox Or TypeOf ctrl Is MSForms.ComboBox Then
                On Error Resume Next
                tb_sections.ListColumns(ctrl.Tag).DataBodyRange(ligne_sections) = ctrl.Value
            End If
        Next ctrl

2- si par exemple TextBox19 est remplacé par Combobox1, il faudra renseigner sa propriété Tag par la valeur "Unité3" qui est actuellement celle de TextBox19. Pour rappel, "Unité3" est le nom de la colonne de ta BDD à laquelle est associée TextBox19.

Rechercher des sujets similaires à "gestion cahier charges userform"