Ajout multiples entrées dans un USF

Bonjour,

Après moult essais, je m'en remets à vous une fois de plus !

Dans ma feuille "MOUVEMENTS" j'ai mon formulaire qui me permet de faire une entrée mais la il fait le minimum syndical puisque je suis bloqué à une seule entrée à chaque fois alors que mon but est de les accumulés type :

formulaire

Et qui devient

tab

Ainsi, une nouvelle ligne d'insérée dans le tableau pour chaque code. Et la date, n° de bon et société ne doivent être écrit qu'une fois dans le formulaire.

Pour les TextBox "Unite" , "description" et "stock" , je voudrais récupérer l'information correspondante dans mon tableau de la feuille "STOCK" dès que le code est entré dans le formulaire. J'avais trouvé quelque chose qui fonctionne un peu comme un INDEX(EQUIV mais pas réussi à l'appliquer. Et ça servirait juste comme information dans le formulaire lui-même puisque j'ai des formules pour cela dans mon tableau.

Si déjà tout cela arrive à fonctionner c'est top. Je ne voudrais surtout pas vous surcharger.

J'avais également mis une barre de défilement pour insérer des textbox supplémentaires mais j'ai pas tout compris, il faut intégrer les textbox dans un cadre pour que la barre de défilement ne s'applique qu'à ce cadre précis ?

Et par après, le bouton modifier quand on choisi un n° de bon dans la combobox "N° bon de commande" qui afficherait toutes les données déjà rentrées pour ce bon.

Une fois encore j'avais un début de code mais comme il y a plusieurs lignes avec le même n° de bon, je cale pour récupérer les informations.

En pj un petit exemple.

Un grand merci déjà pour ceux qui se pencheront sur le sujet !

8entree-stock.zip (128.21 Ko)

Hello,

Je n'ai pas compris ton 2eme point.

Regarde comment j'ai fait pour le point 1 (sélectionne le code dans la cbb du bas, le résultat s'affiche dans les tb du bas)

Regarde comment j'ai fait pour le point 3 (sélectionne un code dans ta cbb BC, le résultat s'affiche dans la listbox du bas)

++

Bonsoir,

Déjà un grand merci pour le travail effectué !

Mon 2ème point ? Celui qui concerne la barre de défilement je suppose. En fait, je souhaiterais pouvoir faire plusieurs entrées sans devoir quitter le formulaire et ainsi garder la date , n° bon et société en mémoire. Mais du coup ta façon de faire ne nécessite pas de barre de défilement.

Est ce qu'avec la manière dont tu as fait cela, il est possible que l'entrée soit faite sans quitter le formulaire.

Donc, j'indique le code, je mets la quantité, ensuite avec TAB ou ENTER ça exécute l'entrée, l'ajoute dans la listbox et clear la cbb 'code' et tb 'quantité' pour refaire une nouvelle entrée d'article immédiatement. Et après, est-ce que les lignes de la listebox sont sélectionnable pour modification ou suppression ? Ou les listbox ne peuvent être qu'informative ?

Et quand on valide le formulaire, toutes les nouvelles entrées faites (nouveau bon de commande ou modification d'un existant) s'insère dans le tableau. Mais est-il seulement possible dans une modification de bon de différencier les entrées existante des nouvelles quand on valide ?

En retirant toutes mes tb inutiles voilà ce que ça pourrait donner

formulaire

Et je te remercie à nouveau pour ce que tu as déjà fait !

Hello,

Est ce qu'avec la manière dont tu as fait cela, il est possible que l'entrée soit faite sans quitter le formulaire.

Oui, tu ajoutes un bouton de commande où quand tu cliques sur ce bouton cela va alimenter ton tableau.

Et après, est-ce que les lignes de la listebox sont sélectionnable pour modification ou suppression ?

Oui, voici un exemple pour tester si une ligne est selectionnée dans la listbox

For i = 0 To Listbox1.ListCount - 1

If Listbox1.Selected(i) Then msgbox i

Next i

Mais est-il seulement possible dans une modification de bon de différencier les entrées existante des nouvelles quand on valide

Je ne comprends pas ce que tu cherches à faire

D'accord, j'essayerai tout cela demain.

Mais est-il seulement possible dans une modification de bon de différencier les entrées existante des nouvelles quand on valide

Je ne comprends pas ce que tu cherches à faire

Oublie je me complique la vie je pense.

Je tâcherai de mettre tout cela au propre demain et je verrai bien les éventuels soucis que je peux encore rencontrer.

Merci à toi !

Bonjour !

Après mise au propre, voilà mes petites constatations.

-Il faudrait que je puisse écrire également un nouveau n° de bon dans la cbb 'bon de commande'

-Quand j'indique le code, si je fais une faute de frappe et que le code n'existe pas ça fait planter. Dans l'idéal, même si un code inexistant est tapé, afficher une msgbox indiquant qu'il n'existe pas. Mais au moins que ça ne fasse pas buguer. J'ai tenté le "on error resume next" mais ça n'a pas arrangé les choses bien evidemment.

-Retirer les doublons de n° de bon dans la cbb et les mettre dans l'ordre alphabétique (dans le meilleur des cas) ?

- A présent, je mets le code et la quantité, je clique sur valider et l'entrée se fait dans le tableau. Directement après , quand je fais une seconde entrée, elle s'insère SOUS le tableau et plus dedans et je trouve pas le problème

- J'ai donc ajouter un bouton pour supprimer une ligne de la listebox mais évidemment faudrait que ça retire la ligne correspondante dans le tableau.

J'ai pas réussi à faire grand chose mais tout de même, la date et la société s'affiche également quand le bon est sélectionné.

Quand je valide mon entrée, la listbox se met à jour immédiatement et les données du produit sont clear.

Pas grand chose mais bon.. Je remets en pj le fichier

Merci du temps consacré !

Hello,

Il faudrait que je puisse écrire également un nouveau n° de bon dans la cbb 'bon de commande'

-Quand j'indique le code, si je fais une faute de frappe et que le code n'existe pas ça fait planter. Dans l'idéal, même si un code inexistant est tapé, afficher une msgbox indiquant qu'il n'existe pas. Mais au moins que ça ne fasse pas buguer. J'ai tenté le "on error resume next" mais ça n'a pas arrangé les choses bien evidemment.

Non il ne faut pas ajouter de valeur dans une liste déroulante, comme son nom l'indique c'est une liste et non une zone de texte. Tu peux ajouter une zone de texte pour une nouvelle commande mais garder la liste pour des commande existantes.

Retirer les doublons de n° de bon dans la cbb et les mettre dans l'ordre alphabétique (dans le meilleur des cas) ?

Fait dans le fichier joint

- A présent, je mets le code et la quantité, je clique sur valider et l'entrée se fait dans le tableau. Directement après , quand je fais une seconde entrée, elle s'insère SOUS le tableau et plus dedans et je trouve pas le problème

Ca doit venir de ton cache misère ... (fonds gris avec les formules qui réapparaissent même quand tu les supprimes ...) J'ai pas mis le nez dedans et j'ai pas envie de m'y mettre

J'ai donc ajouter un bouton pour supprimer une ligne de la listebox mais évidemment faudrait que ça retire la ligne correspondante dans le tableau

Ajoute l'ID dans ta listbox et après ça sera plus simple d'identifier la ligne à supprimer

Bonjour,

Non il ne faut pas ajouter de valeur dans une liste déroulante, comme son nom l'indique c'est une liste et non une zone de texte. Tu peux ajouter une zone de texte pour une nouvelle commande mais garder la liste pour des commande existantes.

Ok, j'ai donc ajouté une tb supplémentaire pour un nouveau n° de bon mais concernant la cbb 'code' , mon but n'est pas d'entrer un nouveau code mais d'empêcher que ça plante si j'entre une mauvaise valeur. Si par exemple je veux entrer 0A-60 mais qu'en tapant j'écris 0Z. Sachant que dans mon tableau complet ma liste de code est beaucoup plus longue, je veux éviter d'aller le chercher dans la liste déroulante à chaque fois.

Si du coup c'est mieux de remplacer la cbb 'code' par une tb ça ne me pose pas de problème mais avec la tb, je n'ai pas réussi à récupérer les infos pour les autres tb.

Quel cache-misère ? Le blanc fait mal aux yeux à la fin, le gris c'est plus doux

Hello,

J'ai du mal à te suivre concernant le numéro de bon de commande :

Il faudrait que je puisse écrire également un nouveau n° de bon dans la cbb 'bon de commande'

mon but n'est pas d'entrer un nouveau code

Tu peux être + clair stp ?

Bonsoir,

Pour un nouveau bon de commande c'est bon, j'ai fait une textbox pour cela.

Je parle de la combobox qui concerne le code de mon article. Si je fais une erreur quand je l'écris ça fait planter et c'est fâcheux

Pourquoi veux tu absolument écrire dans la liste, tu as la flèche à ta disposition, utilise la.

Si c'est pour des utilisateurs potentiels autres que toi que tu me dis ça, tu as une propriété qui permet de ne pas pouvoir écrire dans la liste

Oui, d'autres utilisateurs l'utiliseront mais c'est surtout que ça va bien plus vite de l'écrire plutôt que de le chercher dans la liste à chaque fois car comme je l'ai dit, ma liste de code est beaucoup plus longue dans mon ficher original.

Et donc si une tb est plus idéal dans ce cas la, ça ne me pose pas de problème.

C'est plus clair ?

Hello,

Dans ce cas il faut faire une recherche dans textbox et le résultat dans une listbox

Ha

Pas possible de récupérer l'information depuis la textbox directement pour remplir les autres tb ?

Pas pratique je trouve

Pas possible de récupérer l'information depuis la textbox directement pour remplir les autres tb ?

Si, une fois que tu as sélectionné ta commande dans ta la listbox, même principe que la combobox.

Je n'ai pas d'exemple sous la main, mais sur le forum il y a des choses. Regarde du côté de : VBA MOTEUR DE RECHERCHE

Sinon je te ferai un exemple mais ce week end

Salut Rag,

Après maintes tentatives aujourd'hui, pas réussi à obtenir ce que je voulais pou la tb 'Code'. Je vais donc attendre ton aide pour cela .

Par ailleurs, j'ai également un formulaire pratiquement identique pour les bons de sortie et donc question : est ce qu'il est possible d'assembler 2 données de 2 cellules différentes dans une même combobox ? Ou je suis contraint de faire 2 combobox ?

J'ai bien réussi à récupérer la valeur d'une seconde cellule mais dans la cbb, elle s'affiche en dessous alors qu'elle devrait être jointe avec la 1ère.

Merci à toi et bon week-end !

Hello,

est ce qu'il est possible d'assembler 2 données de 2 cellules différentes dans une même combobox

Oui

dim strconcatener as string

strconcatener  = [A1] & [B1]

Combobox1.additem strconcatener  

Hello,

Voici un exemple de recherche dans une zone de texte + affichage dans une listbox.

J'ai ajouté l'affichage de la valeur sélectionnée lorsque tu cliques dans la listbox, tu remplaceras le message par le code que tu souhaites.

Reste à ta charge de supprimer toutes les lignes de code qui concernaient la Combobox1.

Bonjour Rag,

Je me rapproche de la fin mais...

- Légers soucis avec la listbox mais je vais d'abord m'y pencher sérieusement pour essayer de comprendre.

- Pas réussi à intégrer la concaténation dans ton code parce que j'y comprends rien de rien à celui la:

Set Ws = Sheets("MOUVEMENTS")
Set d = CreateObject("Scripting.Dictionary")
  For Each c In Ws.Range("V17", Ws.[V65000].End(xlUp))
    d(c.Value) = ""
  Next c
  Temp = d.Keys
Call Tri(Temp, LBound(Temp, 1), UBound(Temp, 1))
With ComboBox1
    .List = Temp
End With

With ListBox3
    .ColumnCount = 11
    .ColumnWidths = "15;60;60;1;1;1;60;60;30;400;50"
End With

Et problème inattendu :

Dans mon formulaire de sortie, quand je sélectionne un bon existant, les numéros de bons dans la cbb sont corrects mais le listing des sorties correspondantes dans la listbox n'est pas bon. Il reprends les données du tableau des entrées.

Donc je récupère les bons n° bon de sortie, je récupère la date et mon n° de bâtiment associé mais les informations des articles ne sont pas les bons.

Je précise que mon tableau d'entrée et de sortie sont sur la même feuille. Est-ce un problème ?

Merci à toi !

Hello,

Voici une version commentée :

Set Ws = Sheets("MOUVEMENTS") 'Definition de la feuille "mouvements"
Set d = CreateObject("Scripting.Dictionary") 'Creation du dictionnaire
' ici on recupère toutes les valeur de la feuille "mouvement" et on supprime les doublons
'Cette liste est stocké dans un dictionnaire (d)
  For Each c In Ws.Range("V17", Ws.[V65000].End(xlUp))
    d(c.Value) = ""
  Next c
' ici on recupére tous les elements du dictionnaire et on les stock dans un tableau
'C'est pour pouvoir utiliser notre procedure de tri juste après
  Temp = d.Keys
'Procédure de tri d'un tableau
'Rien de particulier à comprendre, elle trie toute ta liste de valeur unique
Call Tri(Temp, LBound(Temp, 1), UBound(Temp, 1))
'La combobox1 reçoit les valeurs unique triées
With ComboBox1
    .List = Temp
End With
'Affectation à la listbox 3  de 11 colonnes + les tailles differentes
With ListBox3
    .ColumnCount = 11
    .ColumnWidths = "15;60;60;1;1;1;60;60;30;400;50"
End With

Pour ton problème, repost ton fichier car j'ai perdu le fil

Rechercher des sujets similaires à "ajout multiples entrees usf"