Développer une macro

Salut tout le monde

je vous demande s'il serait possible de m'aider à résoudre ce souci

dans la feuille MAGASIN user form 2 (colonne E)

1° j'ouvre l'user form2 et je sélectionne le deuxième élément qui a la quantité 6 (cellule E3 )et je clique sur sortir il se met automatiquement dans la feuille bon de sortie puis je saisir la quantité que je veux sortir (cellule O11 feuille bon de sortie) par exemple 6

il s'affiche un msg s'il retire la quantité de stock physique de la feuille magasin tu clique sur oui.

tu constate qu'il s'est retiré (réduire) la quantité de la ( cellule O2 feuille magasin) qui a la quantité 125 est devenu 119.(mon problème)

il devrait la retirer de (la cellule O3 de la feuille magasin)doit devenir 0

je vous remercie mes amis

Bonjour

Voici ce que tu dois faire :

  • Dans un module en entete (donc au dessus de toutes tes macros), place cette instruction --> Public refln as integer
  • Dans l'userfrom2, modifies le début de la macro ci-dessous
Private Sub CommandButton2_Click()
    n = 0
    refln = ListBox1.ListIndex + 2
....

- Dans la macro Private Sub Worksheet_Change(ByVal Target As Range) qui se trouve dans la feuille BON de SORTIE, supprime les deux lignes ci-dessous

ref = Target.Offset(0, -3)
lgn = fm.Range("E:E").Find(ref, lookat:=xlWhole).Row

et plus bas remplace cette ligne

fm.Range("O" & lgn) = fm.Range("O" & lgn) - Target

par celle-ci

fm.Range("O" & refln) = fm.Range("O" & refln) - Target

Petit conseil, évite de déclarer tes variables en entete des macros lorsque tu n'en n'as besoin que pour une macro spécifique. Je vois que tu as fait cela souvent. Là déclare les dans la macro en question.

D'autres petites améliorations pourraient être effectuées.

Crdlt

Salut

je vous sollicite d'exécuter cette modification et essaie la version par toi si vous n'y voyez pas d'inconvénient

merci mon amis

mes salutations

Salut

apparemment il fonctionne bien merci beaucoup beaucoup mon ami ,

1) si tu peux jeter un coup d'œil dans mon fichier ci-joint si j'ai appliqué la modification au juste,

2)dans l'user form 2 lorsque j'entre une nouvelle quantité et je clique sur valider il m'affiche une erreur ci-joint

cordialement

bye

plus

re

C'est le même souci que tes précédents posts je pense. Il faudrait m'expliquer la fonction du bouton Valider. Cela permettra de savoir à quoi lgn doit correspondre

Si je lis rapidement je pense qu'il faut mettre --> lgn = ListBox1.ListIndex + 2

Cordialement

salut

il s'agit des entrées (achats materiel )

le bouton valider veut dire ( quantité ancienne x prix ancien + quantité nouvelle x prix nouveaux )/ quantité ancienne+quantité nouvelle

thank's

bye

Re

Je pense que ma question n'est pas comprise.

Ce qu'il faut savoir c'est si ce bouton est utilisé pour modifier ou ajouter une donnée et dans le cas d'un ajout est-ce que l'on modifie une ligne existante ou doit-on en créer une nouvelle

Cordialement

salut je t'explique

1°) si l’élément existe il sera une modification dans la quantité nouvelle et le prix unitaire nouveau

( quantité ancienne x prix ancien + quantité nouvelle x prix nouveaux )/ quantité ancienne+quantité nouvelle.

2°) s'il n'existe pas il ajoute une ligne au dessous et je remplis les cellule dans l'user form

merci mon ami

bye

SALUT

1) lorsque j'ai mis lgn = ListBox1.ListIndex + 2 le bouton valide fonctionne BIEN .

2)user form2 la quantité diminuée de stock physique fonctionne bien

3) le problème dans l'user form 1 lorsque je clique sur sortie (cellule C2 ) il diminue de stock physique O3.!!! (PROBLEME)

il fallait si je fais sortir de la cellule C2 il diminue de stock physique O2

et lorsque je fais sortir de la cellule C3 il diminue de stock physique O3

je vous remercie infiniment

bye

Re

Même souci que pour l'USF 2, il faut modifier le code de cette macro

Private Sub CommandButton2_Click()
    n = 0
    refln = ListBox1.ListIndex + 2
    For i = 0 To ListBox1.ListCount - 1
....

Crdlt

SALUT

apres tout les modifications

je me suis aperçu ce problème si c'est possible de le régler

lorsque j'ouvre user form 2 et j’écris dans la case recherche par lettre ou chiffre par exemple 1456 l m'affiche les info (prix .stock physique . emp .service.....) de la line 2 et 3 celles de (10-0023C) !!!! voir fichier ci-joint.

merci infiniment

mes salutations

re

Désolé mais je vois le problème. Si je recherche 1456, il affiche les deux 1456 existants dans la base. Si on clique sur un des deux on a la bonne ligne

Cordialement

erre

Bonsoir mon ami

veuillze écrire 1456 par chiffre dans la case il s'affiche le doublon deux référence 1456 seulement ( c'est clair et logique)

après sélectionne un d'eux et constate les info affiche pas leur info stock .service. emp .....)!! c pas leur info

voir photos attachées

merci beaucoup

bye

err

re,

Essaie en remplaçant le code dans l'usf2

Sub FormulaireModif()
Dim cel As Range
Dim ln As Long
Dim prem

UserForm2.Width = 740

'CommandButton2.Visible = False
CommandButton3.Visible = False
CommandButton4.Visible = False
CommandButton5.Visible = False
TextBox6 = TextBox1
If TextBox1 <> "" Then
    ln = 1
    Set cel = Range("E:E").Find(ListBox1.Value, LookIn:=xlValues)
    If Not cel Is Nothing Then
        prem = cel.Address
        Do
            If ln = ListBox1.ListIndex + 1 Then ln = cel.Row: Exit Do
            ln = ln + 1
            Set cel = Range("E:E").FindNext(cel)
        Loop While Not cel Is Nothing And cel.Address <> prem
    End If
End If
For j = 1 To 15
    If TextBox1 <> "" Then
        Controls("Textbox" & j + 1) = Cells(ln, j)
    Else: Controls("Textbox" & j + 1) = Cells(ListBox1.ListIndex + 2, j)
    End If
Next j

TextBox18 = 0
TextBox19 = 0

Call TextBox18_Change
Call TextBox19_Change

TextBox15.Locked = True
TextBox16.Locked = True

End Sub

Par contre je ne vis pas pourquoi tu mets Textbox18 = 0 et textbox19 =0 dans ce code. Le fait de remettre la valeur à 0 et plus bas d'exécuter le CALL textbox18_change fait en sorte que la macro est exécutée deux fois

Essaie plutot en mettant Textbox18 = 0 en début de macro Call TextBox18_Change. idem pour la texbox19

Cordialement

Salut

1)maintenant il distingue bien les informations affichées sur l'User form 2 même si j'écris la référence que je cherche il m'affiche leurs info juste, merci beaucoup,

2)sachant que texte box 18 =0 ET TXT BOX 19=0 il s'agit des entrés prix unitaire nouveau et uantité nouvelle lorsque j'entre des nouveaux éléments je les remplis

3) mais il reste le problème dans la quantité diminue de stock physique ,si je sélectionne direct un des références dans l'user form il marche, mais si j'écris la référence que je cherche après j'en fais sorti il distingue pas la quantité retire de stock!!!

par exemple si j'écris 1456 dans la case (recherche lettre qui se suivent ) puis je fais sorti dans le bon de sortir par ex QT=4

il se retire la quantité 4 de stock physique de la référence 10-0023C!!

il fallait la retirer de la référence que j'ai sélectionne pour sortir

s'il serait possible de le résoudre

thank y so much freind

mes salutations

Re

Point 2, Comme dit précédemment si les deux instructions de remise des textbox 18 et 19 sont laissé là, le code TEXBOX 18 CHANGE et 19, sont exécutés deux fois. D'où ma proposition de les enlever de là et de les placer en début de la macro CHANGE

Point 3, dans l'USF2 remplace le code

Private Sub CommandButton2_Click()
Dim cel As Range
Dim prem

n = 0

If TextBox1 <> "" Then
    refln = 1
    Set cel = Range("E:E").Find(ListBox1.Value, LookIn:=xlValues)
    If Not cel Is Nothing Then
        prem = cel.Address
        Do
            If refln = ListBox1.ListIndex + 1 Then refln = cel.Row: Exit Do
            refln = refln + 1
            Set cel = Range("E:E").FindNext(cel)
        Loop While Not cel Is Nothing And cel.Address <> prem
    End If
Else: refln = ListBox1.ListIndex + 2
End If

    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then
            lgn = IIf(fb.Range("A" & Rows.Count).End(xlUp).Row = 10, 11, fb.Range("A" & Rows.Count).End(xlUp)(3).Row)

            t = fm.Range("C:C").Find(TextBox4, lookat:=xlWhole).Row
            n = fb.Range("A" & lgn - 2) + 1
            fb.Range("A" & lgn) = n
            For j = 1 To 4
                colM = Choose(j, 1, 3, 5, 14)
                colB = Choose(j, 2, 3, 12, 17)
                fb.Cells(lgn, colB).Value = fm.Cells(t, colM).Value
            Next j
        End If
    Next i
    fb.Select
    Unload Me
End Sub

Cordialement

Salut

un autres souci qui me préoccupe encore

lorsque j'écris lettre contient (j'écris pas la référence exacte) par exemple j'écris 56 il m'affiche toutes les références qui contiennent 56 apres je sélectionne ML56 je constate qu'il m'affiche les infos de celle 10-0023C (la ligne 2 =120) c'est pareils pour la référence 5679 !!!!!!!voir photo ci-joint et le fichier.

par contre si j'écris la référence ML56 exacte il me provoque pas le problème.

j'aimerais bien s'il ya une solution à apporter afin de résoudre ce problème.

merci infiniment

bye

maman

Re,

Dans la macro Sub FormulaireModif(), change cette ligne

Set cel = Range("E:E").Find(ListBox1.Value, LookIn:=xlValues)

par celle-ci

Set cel = Range("E:E").Find(TextBox1.Value, LookIn:=xlValues)

Cordialement

BONSOIR

voila ce qu'il m'affiche photo ci-joint

merci

bye

aaff

edit

Rechercher des sujets similaires à "developper macro"