Gestion Stock

Bonjour à tous et notamment à Thev

Thev, je reviens sur ce projet ou justement tu as apporté une première réponse. Cela ne fonctionnais pas chez moi et j'ai par conséquence repris la mise en page de ce projet à partir d'une source Excel vierge. J'ai pris soin de rajouter ton code également.

J'ai aussi rajouté une colonne "Code" en seconde position mais n'arrive pas à corriger ton code pour qu'elle soit prise en compte.

Est-il possible sous VBA, que le bouton "entrée stock initial" ouvre ma boite de dialogue STOCK INIT ?

Je souhaiterai a partir de celle-ci, renseigner mon tableau. Chaque saisie insère une ligne sous la ligne N°3. La ligne N°4 deviens donc N°5 et ainsi de suite pour les insertion suivantes...

Est-il possible que cette boite de dialogue se ferme de 3 façons différentes ?

1-Au clic sur la croix rouge en H à D, fermeture normale des plus classique.

2-Au clic sur le bouton "valider" ou "annuler" ?

Par contre, pour la boite modification, est-il possible que cela modifie ou supprime la ligne sélectionnée ?

Merci Thev

En PJ, le nouveau classeur...

Bonjour,

ci-jointe nouvelle version

Pour que cela fonctionne :

1- ton tableau doit être créé comme un objet Tableau avec pour nom "Inventaire" (menu Insertion --> Tableau)

Si tu cliques sur une des cellules de ton tableau, en haut de la fenêtre tu vois apparaître un bouton "Outils Tableau". En cliquant sur ce bouton, tu as accès à tous les réglages de l'objet "Tableau".

2- Les noms donnés aux différents champs du tableau doivent correspondre à ceux du code (Quantité n'a pas de "e" à la fin)

3- les noms des contrôles de l'Userform "Stock" doivent correspondre à ceux du code.

Thev,

Je ne comprends pas ta dernière explication de tableau et ne comprends pas d'où viens le mot ("inventaire") après ListObjects sur ton code

Private Sub CBValider_Click()
If TBDomaine = "" Then Exit Sub

   With ActiveSheet.ListObjects("Inventaire")
        'ajout d'une ligne vierge
        .ListRows.Add
        'indice dans la feuille, de la ligne correspondant à la première cellule vide du champ "DOMAINE"
        i = .ListColumns("DOMAINE").Range.Find("", SearchDirection:=xlNext).Row
        'indice relatif dans l'objet Inventaire, de la ligne correspondant à la première cellule vide du champ "DOMAINE"
        i = i - .HeaderRowRange.Row
        'remplissage lignes
        .ListColumns("Domaine").DataBodyRange.Rows(i).Value = TBDomaine.Value
        .ListColumns("Code").DataBodyRange.Rows(i).Value = TBCode.Value
        .ListColumns("CLAIR ABREGE").DataBodyRange.Rows(i).Value = TBClair_Abrege.Value
        .ListColumns("SGL").DataBodyRange.Rows(i).Value = TBSGL.Value
        .ListColumns("Quantité").DataBodyRange.Rows(i).Value = TBQte.Value
   End With

   'masquage formulaire
   Me.Hide

End Sub

Je n'ai pas feuille qui se nomme Listeobjet ?

C'est juste pour comprendre un peu, merci

Dans la feuille "Matériels", j'ai créé un objet "Tableau" nommé "Inventaire" correspondant à la plage A3:H4.

Si tu sélectionne une des cellules de cette plage, tu verras apparaître en haut de la feuille, un bouton "Outils de Tableau".

En cliquant sur ce bouton, seront disponibles tous les réglages correspondant à cet objet. Le nom de l'objet apparaît en haut à gauche.

Avec cet objet, toute formule est recopiée automatiquement, il est possible d'y ajouter une ligne de totaux et d'en changer le style.

Thev,

Vraiment désolé, je ne trouve pas ton outils de tableau !?

Ni sur la feuille ni dans aucun menu !

Si tu as bien sélectionné une cellule de la plage A3:H4 , au dessus du menu CREATION

voir l'image

https://www.cjoint.com/c/FJeoRnX5DHs

Ok, je viens de comprendre une partie seulement. Reste à savoir comment il est possible d'afficher ce tableau ou objet que tu as creé dans le VBA et ou s'enregistre ce tableau pour comprendre la listobjet ?

Ça progresse tout doucement.

Merci

Pour créer un objet tableau,

1- aller dans le menu Insertion

2- sélectionner la plage désirée

3- cliquer sur le bouton "Tableau"

Exemple:

Création d'un objet tableau sur la Feuil2 pour la plage A3:H4. Ci-joint Image

https://www.cjoint.com/c/FJeqzn6N2Wo

voir aussi ce lien du support Microsoft

https://support.office.com/fr-fr/article/Cr%C3%A9er-un-tableau-Excel-dans-une-feuille-de-calcul-e81aa349-b006-4f8a-9806-5af9df0ac664

Thev,

Bien suivi tes liens et compris, du moins je l'espère...Juste un détail sur cette boite de dialogue "stock initial". Je m'aperçois qu'une ligne s'insère automatiquement en cliquant sur le bouton valider même si aucun champs n'est renseigné. Est-il possible d'empêcher cela ?

Sur ce nouveau classeur en PJ, tu trouvera la boite de dialogue associé à la modification des stocks, pour terminée cette première étape.

Je souhaiterais que les écritures des colonnes du tableau apparaissent dans leurs champs respectif de la boite de dialogue.

1-Que le bouton "MODIFIER" modifie la ligne sélectionnée par les champs et que la boite de ferme automatiquement

2-Que le bouton "ANNULER" efface mes saisies en cours dans les champs sans fermer automatiquement la boite de dialogue.

3-Que le bouton "SUPPRIMER" supprime la ligne sélectionnée dans les champs directement dans le tableau.

Merci beaucoup

ci-jointe une proposition

Thev,

Un problème qui n'existait pas avant. Je ne peux plus rentrer de donnée avec moi boite de dialogue, voici ce qui apparaît:

1 2

Je n'ai pas ce problème sur la version que je t'ai envoyée.

L'explication à cette erreur, c'est qu'en cellule A3, tu n'as plus la valeur "DOMAINE".

Peut-être un espacement superflu du genre " DOMAINE" ou "DOMAINE ".

Thev

je viens de regarder ta proposition sur la boite de modification et dis moi s'il est possible de modifier les éléments suivant:

Pour l'ensemble des boutons, je souhaiterai pouvoir sélectionner par l'intermédiaire des menus déroulants avec un effet cascade, c'est a dire que le domaine conditionne la sélection code etc...Pourquoi ? Car je pense que les cellules du tableau seront verrouillées et protégées, donc l'utilisateur ne pourra pas sélectionner la cellule. Il faut donc le menu déroulant en cascade pour choisir la bonne ligne...

OK pour le bouton MODIFIER,

c'est pas bon pour le bouton ANNULER, les saisies à l'intérieur des champs doivent s'effacer et la boite doit se fermer également

NICKEL pour le bouton SUPPRIMER avec l'option d'avertissement. Ca s'est super.

samybot86 a écrit :

Car je pense que les cellules du tableau seront verrouillées et protégées, donc l'utilisateur ne pourra pas sélectionner la cellule. Il faut donc le menu déroulant en cascade pour choisir la bonne ligne...

Pour protéger les cellules du tableau, il faudra protéger la feuille. Par défaut, la protection de la feuille permet de sélectionner les cellules verrouillées. La sélection de la cellule correspondant à la ligne me parait la méthode la plus simple. Sinon, il faut définir précisément les champs identifiant de manière unique, la ligne.

samybot86 a écrit :

c'est pas bon pour le bouton ANNULER, les saisies à l'intérieur des champs doivent s'effacer et la boite doit se fermer également

Je corrige mais le formulaire doit rester affiché sinon cette commande est inutile.

ci-jointe nouvelle version

Thev,

Problème !

1-Toutes les cellules de la feuille sont cochées "verrouillée" et "masquée" dans Protection de l'option "Format cellule".

2-Protection de la feuille en autorisant la sélection des cellules verrouillées et déverrouillées ainsi que l'insertion et la suppression de ligne.

Résultats

1-Impossible de faire un entrée de stock = erreur 91

2-Impossible d'apporter une modification dans une cellule car bien sûr sont contenu est protégée. Je ne peux donc rien modifier et rien supprimer !

Cela veut-il dire que je ne pourrai pas protéger le classeur ?

Il suffit de gérer dans le code la protection de feuille.

Voir l'exemple ci-joint avec le mot de passe "test" (code modifié dans module1)

OK, je prends note du classeur avec mot de passe, cela fonctionne bien.

Je reste quand même sur mon choix de menu déroulant en cascade pour les boutons "MODIFIER" et "SUPPRIMER" !

Sauf si cela est vraiment trop compliqué auquel cas je resterais sur ce que tu me présente. Mais il faudra alors changer les champs...

Dis moi si tu pense pouvoir t'occuper des menus déroulants en cascades ou si je dois oublier. C'est comme tu le sens ?

Les champs actuel deviennent inutile. Je pense que je devrai réussir à faire ce changement

Je prépare la seconde des trois étapes de ce projet

Merci Thev

C'est possible, mais il faudrait être précis sur l'identifiant de la ligne

code ?

domaine + code ?

domaine + code + position ?

et que veut dire "position" par rapport à "SGL" ?

D'ailleurs, il serait alors logique de reporter ces menus déroulants dans l'Entrée de Stock Initial

Thev,

Je pense qu'il faut construire ces menus déroulants en cascade en sachant que tout le noms qui sera séléctionne dans le menu déroulant du domaine sélectionnera uniquement les lignes de ce nom pour le choix dans le code et ainsi de suite. Ce ne sont que les lignes portant le même nom de la colonne DOMAINE et du même CODE qui pourront être sélectionné dans le CLAIR ABREGE.

Si cela te demande trop de travail, je me contenterai du filtre qui fonctionne même avec la feuille protégée.

Même si j'ai une préférence pour le menu déroulant.

Je te laisse le choix, car j'ai toi qui travail dessus et qui sait le temps que cela demande...

Pour la suite, je vais t'exposer mon souhait et te laisserai me proposer quelques choses. Tu as certainement des idées de construction plus clair que les miennes ou des archives de travail allant dans le sens de mon projet !

Merci encore

ci-jointe une proposition intégrant :

1- pour modif_stock, la possibilité de sélection d'une ligne à partir du domaine et du code, tout en conservant la possibilité de sélection par ligne, avec modification/suppression sans quitter le formulaire pour pouvoir gérer plusieurs lignes.

2- pour stock, ajout d'une liste déroulante pour domaine et code à partir de la feuille Tables

Au niveau du code, regroupement de toutes les constantes dans le module 1.

Rechercher des sujets similaires à "gestion stock"