Listbox transférée Quantité
Bonjour
Quelqu'un peut-il m'aider s'il vous plaît
Il existe un transfert de formulaire utilisateur1
En raison du grand nombre de catégories, j'ai ajouté listbox1 au formulaire
Lorsque les données sont transférées vers la listbox, cela fonctionne correctement, mais lorsqu'elles sont transférées vers la feuille de calcul, elles n'enregistrent ni ne transfèrent l'inventaire. Il y a une erreur et je n'en connais pas la raison.
Bonjour
S'il vous plaît, aidez-moi si votre temps le permet
Bonjour
Si j'ouvre votre userform, la listbox n'est pas chargée
Pouvez-vous expliquer comment cela fonctionne ou plutôt ce que doit contenir la listbox1 à l'ouverture de l'USF ou alors en fonction de quoi elle doit se remplir
Bonjour
Merci d'avoir répondu à ma question
Formulaire appelé transfèrent
Il fonctionne très bien
J'ai conçu un formulaire mais j'y ai ajouté une zone de liste transfèrent١
je veux un formulaire transfèrent١ Fonctionne comme transfèrent Cependant, avec la différence dans la list box, cela est dû au grand nombre d'articles transférés dans la list box puis enregistrés dans la feuille, la quantité étant déduite d'un magasin à l'autre.
J'espère avoir transmis mon idée
Bonjour,
Sinon, qu'est ce qui change à part un bouton dans votre dernier fichier ?
J'ai conçu un formulaire mais j'y ai ajouté une zone de liste transfèrent١
Ca je l'ai vu dans votre premier fichier...
Mais vous ne répondez pas aux questions posées dans mon post.
Il y a un problème dans le deuxième fichier, qui est la méthode de code déduisant la quantité Vers le prochain magasin
eazr fa'ana lilghataa laysat jayidat almilafi alawil yaemal binajah kama 'ashart sabiqan wakud dakhil almilafi aydan mae aleilm 'ana khasm alkamih takun mubasharatan walakan faa almilafi althaanaa hawalt 'an takun alkamiyh marhalah 'iilaa murabae alqayimat dun khasm alkamih walakan takhsam baed 'iidafat al'asnaf dakhil murabae alqayimat min khilal ziri alhifz
j'espère que tu ouvriras Userform transférée1
Entrez quelques éléments dans la zone de liste, puis enregistrez-les dans la feuille, mais cela ne fonctionne pas. Vous voyez, le code est bon. Vous souhaitez modifier la méthode du code pour qu'il fonctionne dans la zone de liste avec des quantités remises.
On est toujours au même point vous ne réponde pas aux questions posées
Tant que vous n'expliquez pas comment vous fonctionnez après l'ouverture de votre Usf transfert1 pour remplir la listbox, je ne peux rien faire pour vous.
NB : c'est quoi ce que vous écrivez ici ??? -> https://forum.excel-pratique.com/s/goto/1184250
Désolé, ma langue n'est pas bonne
Le deuxième fichier est Usf transfert1
Cela signifie que j'ajoute plus d'un article à la zone de liste via le bouton Ajout Listbox, sachant que la quantité n'est pas réellement déduite du magasin décaissée à l'autre magasin.
Cependant, la quantité est déduite via le bouton Transfert
Tableau
Mais le
code vba est différent du transfert usf
Et voici le code
Private Sub MajInventaire()
Dim QS&, n&, v
With Worksheets("Inventaire")
flgAdd = 0
n = UBound(TblInv): lgS = 0: lgD = 0
GetLig ComboBox1, n, lgS: If lgS = 0 Then Exit Sub
GetLig ComboBox2, n, lgD: If lgD > 0 Then flgAdd = 1
If lgD = 0 Then
flgAdd = 0: lgD = n + 3
If lgD = 65000 Then
MsgBox "Le tableau en feuille Inventaire est plein !", 48
lgD = 0: Exit Sub 'on fait rien, et on sort de la sub !
End If
End If
Application.ScreenUpdating = 0: .Unprotect: QT = Val(Quantitetr)
With .Cells(lgS, 11) ' était (lgS, 3)
QS = .Value + QT: .Value = QS: stocktr = QS
End With
Application.EnableEvents = False
.Activate ' active la feuille
If flgAdd = 0 Then
' insère une ligne
.Rows("4:4").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
.Unprotect
.Rows("5:5").Copy ' copie la ligne en dessous
.Rows("4:4").PasteSpecial xlPasteFormats ' colle le format
.Range("D5").Copy ' copie la cellule
.Range("D4").Select ' sélectionne la cellule
ActiveSheet.Paste ' colle (formule incluse)
Application.EnableEvents = True
lgD = 4
End If
For v = 0 To ListBox1.ListCount - 1
With .Cells(lgD, 3)
If flgAdd = 0 Then
.Offset(, -2) = ListBox1.List(v, 3) 'Code article
.Offset(, -1) = ListBox1.List(v, 4) 'Catégorie
.Offset(, 2) = ListBox1.List(v, 5) 'Seuil d'alerte
.Offset(, 3) = ListBox1.List(v, 6) 'Descriptif
.Offset(, 4) = ListBox1.List(v, 7) 'Référence
.Offset(, 5) = ListBox1.List(v, 8) 'Unité de mesure
.Offset(, 6) = "Transfert" 'Observations
.Offset(, 9) = ComboBox2 'Magasin
QD = Val(.Value) + QT: .Value = QD 'Stock actuel
Else
.Offset(, 7) = .Offset(, 7) + Quantitetr '
End If
lgT = lgT + 1
End With
.Protect: Application.ScreenUpdating = -1
Next
End With
End Sub
Private Sub LigneTransfert()
Dim v
'remplir une ligne sur le tableau de la feuille "Transfert",
'mais s'il n'y a plus de ligne libre, on ne fait rien !
With Worksheets("Transfert")
'Lastrow = Range("a" & Rows.Count).End(xlUp).Row + 1
lgT = .Cells(Rows.Count, 1).End(3).Row + 1
For v = 0 To ListBox1.ListCount - 1
If lgT = 650000 Then
MsgBox "Le tableau en feuille Transfert est plein !", 48
lgT = 0: Exit Sub 'on fait rien, et on sort de la sub !
End If
Dim Stock1&, Stock2&
Application.ScreenUpdating = 0: .Unprotect
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Stock2 = Val(stocktr): Stock1 = Stock2 + QT
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
With .Cells(lgT, 1)
.Value = ListBox1.List(v, 1) 'Code article
.Offset(, 1) = ListBox1.List(v, 2) 'Catégorie
.Offset(, 2) = ListBox1.List(v, 3) 'Désignation
.Offset(, 3) = ListBox1.List(v, 4) 'Référence
' .Offset(, 4) = ListBox1.List(v, 4) 'Stock actuel
.Offset(, 5) = ListBox1.List(v, 7) 'Unité
.Offset(, 6) = Date 'Date
.Offset(, 7) = ComboBox1 'Provenance
.Offset(, 8) = ComboBox2 'Destination
.Offset(, 9) = QT '= ListBox1.List(v, 13) 'Quantité transférée
'.Offset(, 10) = Stock2 'STOCK PR
' .Offset(, 11) = QD 'STOCK DES
.Offset(, 12) = TextBox1
.Offset(, 13) = Format(Now, "mm/dd/yyyy hh:mm am/pm")
lgT = lgT + 1
End With
.Protect: Application.ScreenUpdating = -1
Next
End With
End Sub
Private Sub UndoOpInv()
Application.ScreenUpdating = 0
With Worksheets("Inventaire")
.Unprotect
With .Cells(lgS, 3): .Value = .Value + QT: End With
With .Cells(lgD, 3)
If flgAdd Then .Offset(, -3).Resize(, 12).ClearContents _
Else .Value = .Value - QT
End With
.Protect
End With
Application.ScreenUpdating = -1
End SubEzra, peux-tu expliquer mon point de vue s'il te plaît, Dan
Conclusion
Je voulais réduire la quantité via Listbox comme dans USF Transfer1
Pas comme dans le transfert usf
Directement via la zone de texte
Cela ajoute plus d'une catégorie à la zone de liste
Re
Je n'ai pas besoin que vous postiez les codes dans vos demandes puisqu'ils sont dans votre fichier.
Pour votre demande, je pense avoir tout de même réussi à voir quelque chose (enfin je crois)
Allez dans le code Private Sub LigneTransfert() et modifiez cette ligne
.Offset(, 5) = ListBox1.List(v, 5) 'UnitéA moins que vous vouliez mettre une date en colonne N hors du tableau, la ligne suivante doit être supprimée
.Offset(, 13) = Format(Now, "mm/dd/yyyy hh:mm am/pm") Cela ajoute plus d'une catégorie à la zone de liste
Dans le code Private Sub CommandButton2_Click(), vous devez ajouter cette ligne juste avant le END SUB
ComboBox1.ClearMon conseil est que vous devriez poser vos questions à celui qui vous a fait tous ces codes
C'est d'une complication à lire et à suivre (une "usine à gaz") vraiment.
Cordialement
https://forum.excel-pratique.com/excel/inserer-un-ligne-au-lieu-de-saisie-150002#p925977
Bonjour mon ami Dan
Je ne suis pas doué en code VBA
Par conséquent, j'ai cité ce sujet du site, en particulier M.
issam
C'est une fiche de transfert de quantités entre magasins, comme je l'ai indiqué dans le lien
Les virements se font sur la fiche Feuil14 (Transfert).
Les soldes des quantités entrepôt augmentent et diminuent jusqu'à Feuil8 (Inventaire)
Mais le problème ici est différent dans USF Transfer
Parce que le processus de conversion est spécifique à chaque type
Ça marche bien
Je voulais que le processus de transfert entre les ports se fasse via la zone de liste, comme dans USF Transfer 1
De ComboBox1 à ComboBox2
Le code de l'article est la colonne 2 et la quantité est ici dans la zone de liste colonne 10
S'il y a deux codes différents autres que celui que j'ai joint ci-dessus
Private Sub LigneTransfert()
Private Sub MajInventaire()J'aimerais que tu le fasses pour moiSi ton temps me le permet
With .Cells(lgT, 1)
.Value = ListBox1.List(v, 1) 'Code article
'je vais te donner un exemple
'la différence
'usf Transfert1
With .Cells(lgT, 1)
.Value = CB_Pièce 'Code article
'je vais te donner un exemple
'la différence
'usf Transfert Re
Pourquoi vous m'expliquez tout cela ? J'ai compris ce que vous voulez faire
Faites ce que je vous ai écrit dans mon post précédent
Merci monsieur Dan
J'ai fait ce que tu m'as demandé
Mais pourquoi coder ?
Dans le code
Private Sub CommandButton2_Click(), vous devez ajouter cette ligne juste avant le END SUB
Que veut dire cette ligne ?
Ajouter à la zone de liste uniquement et ne pas enregistrer dans la feuille de calcul
Parce qu'il y a un solde de stock dans la feuille de calcul Feuil8(Inventaire )
re
Private Sub CommandButton2_Click(), vous devez ajouter cette ligne juste avant le END SUB
Que veut dire cette ligne ?
Ajouter à la zone de liste uniquement et ne pas enregistrer dans la feuille de calcul
Heu, vous comprenez un peu l'anglais ?
Combobox1.CLEAR --> Elle sert à supprimer la valeur de la combobox1 lorsque vous avez ajouté dans la listbox via votre bouton.
Au vu de votre question, j'ai l'impression que vous n'avez pas testé
J'ai une question : est-ce vous qui avez réalisé le fichier ou avez-vous prit un fichier sur un forum et vous essayez de l'adapter ?
-
Oui, je l'ai pris sur les forums et je l'ai modifié comme je l'ai mentionné précédemment, et voici le foru
https://forum.excel-pratique.com/excel/inserer-un-ligne-au-lieu-de-saisie-150002#p925977
