Ajouter données avec Cbo et Txt plus trie dans l'ordre

Bonjour à tous le monde,

Voici mon soucis, je souhaite pouvoir ajouter de manière automatiser des pièces détachées dans ma base de donné Excel à partir d'une combobox ou je pré-sélectionne le nom de la pièce, ensuite je rentre dans mes textbox mes informations. Une fois terminer j'aurais souhaité pouvoir cliquer sur ajouter et que toutes les infos s'insèrent automatiquement dans ma base de donné en faisant en trie alphabétique pour que toutes les pièces soient classée correctement en non de manière anarchique.

Je vous remercie d'avance pour votre implication.

Merci.

PS: Je vous joint un fichier avec mon formulaire.

10ajout.xlsm (79.07 Ko)

Bonjour,

Un essai...

J'ai modifié l'ordre des TextBox.

Et il faut que tous les TextBox soient remplis.

De plus, il faut les TxtBx "Stock mini, maxi, dispo et prix" soient numériques

Bon W-E

10ajout-v1.xlsm (85.02 Ko)

Merci beaucoup sa marche super bien!!!

Encore une petite question j'ai d'autres feuilles sur mon application et je n'ai pas le même nombre de colonne partout. En faite selon la feuille j'ai plus ou moins de textbox qui s'affiche sur mon UserForm. Auriez vous une idée de la façon dont je doit procéder pour intégrer ces feuilles?

Merci encore pour votre temps et votre réactivité.

Re-,

Il est bien, lorsqu'on joint un fichier exemple, que ce fichier soit au plus près du fichier réel....

Je t'invite donc à remettre un fichier, avec toutes les options envisageables..

Bon courage

Avant de mettre le fichier réel en faite sa ne fonctionne pas lorsque je met ce code sur mon fichier initial sa me met "objet spécifié introuvable" et sa me souligne la ligne if me.controls("TextBox" & J) = "" then

Bonjour,

Effectivement, ça ne peut pas fonctionner sur le fichier réel, car comme indiqué dans ma réponse, j'ai modifié l'ordre des TextBox (mais aussi leur numérotation, il est vrai...)

Il faut donc que les numéros des TxtBx de ton fichier réel soient les mêmes que sur l'exemple.

Bon dimanche

Donc voici ci joint le fichier qui se rapproche le plus de la vérité.

Il y'a plusieurs choses à prendre en compte, comme par exemple le fait que certaines plages de cellules soient discontinue par exemple (A:G ; M:T), de plus le nombre de colonnes n'est pas identique sur chaque page ce qui rend le travail d'autant plus complexe. Les différents textbox que je cache selon la page sélectionné ne sont pas très bien placer puisque dès que je cache sa me laisse des gros trous partout donc ce n'est pas très élégant.

Merci.


6ajout-v1.xlsm (175.17 Ko)

Re-,

Euh, effectivement, pas grand chose à voir....

Avant que je ne me lance :

  • Dans 2 onglets, c'est "Composants", dans les 2 autres, c'est "Type" : important?
  • Il n'y a que ces 4 onglets?
  • Le bouton "Supprimer", si je comprends bien, c'est pour supprimer une référence (et non un composant), ou autre chose (ok, ce sera pour supprimer une ligne, mais en fonction de quel(s) critère(s)?)

@ te relire

Désoler je n'ai pas été assez précis,

alors pour répondre à tes question premièrement non ce n'est pas important nom je compte l'uniformiser à la fin, ensuite oui j'ai d'autre feuilles (7 au total) mais les 3 autres suivent le même modèle que l'onglet 1 et 2. Quant au bouton supprimer, il est là pour supprimer une ligne entière.

De plus le nombre de texbox dépend de la feuille sur laquelle je me trouve et faite ils correspondent aux nombre de colonnes.

Re-,

yohann.Gestion a écrit :

j'ai d'autre feuilles (7 au total) mais les 3 autres suivent le même modèle que l'onglet 1 et 2. Quant au bouton supprimer, il est là pour supprimer une ligne entière.

- quels sont les noms des 3 autres onglets?

- Pour la suppression, quel sera le paramètre (à priori, la référence, mais....)?

@ te relire

Les 3 autres onglets n'apparaissent pas la version que j'ai mis mais il s'appellent "Stock Pneu", "Stock Rouleaux" et "Divers".

En effet la suppression s'effectue par rapport à la référence de pièces mais comme j'ai beaucoup de référence je ne sais pas si ce choix est pertinent, je n'ai pas encore réellement défini comment la suppression sera faite.

Re-,

Ok,

Pour les références, normalement, elles sont uniques, donc, je pense que ce sera la meilleure solution.

Pour les noms d'onglets, je vais travailler sur ces noms :

Onglet 5 : "Pneus"

6 : "Rouleaux"

7: "Divers"

J'en ai pour un petit moment....

l'ordre réel c'est:

1 Elec

2 Pneu

3 Roulement

4 Rouleaux

5 Moteurs

6 Var

7 Divers


En tout cas je te remercie encore c'est super gentil de prendre du temps pour moi.

Re-,

Pfffffffffffffffffffffffffffffft

Il sort d'où, l'onglet "Roulement"?

Si tu n'arrives pas à me donner la structure exacte de ton fichier, on ne va pas s'en sortir.....

Je suppose que "Roulement" remplace "Méca"?

Désoler oui Roulement remplace Méca en effet.

Comme j'avais déjà un peu avancé, on va prendre ces onglets dans l'ordre :

1 : Elec

2 : Roulements

3 : Moteurs

4 : Var

5 : Pneus

6 : Rouleaux

7 : Divers

Ok pas de soucis pour moi ça me va comme sa.

Re-,

Ouffff

Regarde le fichier...

à la place d'un combobox pour déterminer l'onglet, j'ai mis 1 multipage à 7 onglets...

Avec 2 modules de classe sur les combobox (cbx), on peut :

  • Sélectionner un composant (ou type, peu importe), dans le 1er cbx
  • en fonction de ce composant, on peut sélectionner un numéro de référence
- si le numéro existe, on a dans les différents textbox (txtbx) ses données, et on peut modifier ou supprimer

- s'il n'existe pas (saisie manuelle), les txtbx sont vides, on les remplit, et on ajoute cette référence

Les boutons "supprimer", "Modifier" et "Ajouter" ne sont valides qu'en fonction des différents cas.

Si ce n'est pas une valeur numérique dans les txtbx dont le Tag est égal à "Num", on a un message d'erreur

Si on change d'onglet dans le multipage, le 1er cbx est alimenté automatiquement sur l'onglet.

Pour cela, il est très important que :

"Les noms d'onglets doivent être strictement les mêmes que les noms des onglets du multipage"

Attention, l'userform se nomme maintenant "UserForm2"

Et tous les textbox sont numérotés en fonction de l'onglet du multipage (ex : Onglet 0 du multipage, TextBox 102, 103...., Onglet 1 : TextBox 202, 203), et pour se déplacer de l'un à l'autre, un appui sur la touche Tabulation (Tab)

Bonne soirée

Edit : Comme le fichier faisait plus de 300 Ko, je l'ai enregistré en fichier binaire (.xlsb)....

Tu l'ouvres sur ton PC, puis tu fais "Enregistrer Sous", et tu modifies en (.xlsm)

40ajout-v2.xlsb (262.76 Ko)

Bonjour,

Franchement du vrai travail de PRO on ressent la maitrise de VBA.

Sérieux sa fonctionne super bien le code est optimisé c'est vraiment bien.

Par contre j'ai quelque question.

Tout d'abords, à quoi servent les modules de classes?? et quel est la différence avec un module normal

Ensuite j'ai vu que tu avais déclaré des variables Public pour les modules de classe mais que ces variables étaient déclarés dans le module du bouton qui déclenche l'userform. La question est si jamais mon userform n'est pas appeler de cette manière (bouton placé sur un première userform qui appelle le second) comment déclarer ces variables public.

En tout cas merci mille fois c'est du super travail.

Bonjour,

yohann.Gestion a écrit :

Tout d'abords, à quoi servent les modules de classes?? et quel est la différence avec un module normal

Expliquer exactement ce qu'est un module de classe, non seulement, je n'en serai pas capable, mais de plus, ce serait sans doute inexact...

Lorsqu'on utilise un certain nombre d'objets (que ce soit dans un userform, ou sur la feuille directement), il est souvent très lourd de paramétrer un code pour chacun de ces objets. Le fait de les inclure dans une nouvelle classe permet de ne faire qu'un seul code, et qui se déroule dès l'action programmée (dans ton fichier, c'est l'action Change).

A l'initialisation de l'USF, on charge donc les combobox(cbx) dans 2 classes (une pour les Types/composants, l'autre pour les références).

Dès qu'on utilise l'un ou l'autre des cbx, l'évènement est détecté, et le code se déroule.

On ne pourrait pas le faire dans un module standard. (à moins de créer un code pour chaque cbx, et ce serait un copier/coller de l'un vers l'autre...). De plus c'est extrêmement plus puissant...

yohann.Gestion a écrit :

Ensuite j'ai vu que tu avais déclaré des variables Public pour les modules de classe mais que ces variables étaient déclarés dans le module du bouton qui déclenche l'userform. La question est si jamais mon userform n'est pas appeler de cette manière (bouton placé sur un première userform qui appelle le second) comment déclarer ces variables public.

Le seul endroit où on peut déclarer des variables en public est dans un module Standard (également dans un module de classe, mais pas trop d'utilité). Dans un évènement de feuille ou d'userform, les variables restent d'ordre "privé", et on ne peut pas les utiliser dans d'autres procédures que dans ces évènements.

Il n'y a donc aucun souci à ce que tu appelles ton USF autrement, mais il ne faut pas changer d'endroit à la déclaration de ces variables "Public".

Je n'ai pas intégré dans ce fichier la possibilité d'insérer un nouveau "Type/Commentaire", tu ne peux insérer qu'une nouvelle référence.

Malgré quelques (nombreux) essais, il se peut qu'il y ait des dysfonctionnements (je n'espère pas...), dans ce cas, tu reviens.

Bonne journée

PS : pour avoir plus d'info sur les modules de classe, tu as toujours G...gle

Rechercher des sujets similaires à "ajouter donnees cbo txt trie ordre"