Problème modification ligne d'un userform

Bonsoir,

Je viens vers vous pour un problème insoluble à mon niveau, j'ai un petit fichier pour une gestion de stock. Les matériels sont allotis à l'aide de date de péremption. Je me sers d'un userform sur ma page d'accueil afin de modifier mes stocks et inscrire mes mouvements.

Je choisis mon matériel, ma quantité , la date de péremption , et mon type de mouvement si c'est une entrée ou une sortie. Ca dervrait me prendre la quantité de mon textbox "nouveau stock" et me modifier celle ci dans la ligne correspondante. Et ben le mystère, c'est que un coup ca me le fait, le coup d 'après sur un autre matériel ça va me créer une nouvelle ligne avec la nouveau stock, mais me laisser l'ancienne ligne en plus avec l'ancien stock, bref je nage en plein flou artistique.

Alors je suis pleinement conscient que mes codes ne sont pas catholiques, ça tient plutôt du Frankenstein mon tableau, je prends des codes par ci par là que j'essaye d'adapter.

Je vous mets mon tableau si des gens veulent tenter d'y jeter un oeil merci par avance.

Bonjour dohurden,

Peux-tu nous donner une suite d'actions qui ne fonctionne pas correctement, ainsi que ce qui devrait se passer si ça fonctionnait correctement

Ex: Acceuil modif de stock -> marque = -> designation = etc ....

Bonsoir D3D9x,

Pas de souci, je vais essayer d'etre le plus explicite possible.

Les problèmes concernent les modifications de stocks.

Donc :

  • Accueil
  • modification du stock
  • Marque
  • Sélection de la désignation
  • Sélection de la teinte
  • Sélection du lot (correspond aux dates de péremption présente dans le stock pour le type de désignation choisie) >
  • Quantité
  • date du mouvement
  • Nom du client
  • sélection de l'observation mouvement
  • Sélection du type de mouvement (à l'aide des optionbutton, le nouveau stock se met à jour sur le userform)
  • sélection inscription mouvement (si l'on veut que le mouvement apparaisse dans le journal)
  • validation du mouvement (c'est là normalement que le textbox du nouveau stock devrait écraser l'ancien dans la feuille stock et s'inscrire à la place. le problème se trouve ici.

Si tu prends dans mon tableau par exemple et que tu vas dans la feuille journal, tu verras trois entrées en stock concernant du monoblanco avec trois dates de péremption différentes (15/03/2016, 15/04/2016, 18/10/2016) en faisant des mouvements sur ses lignes là pour tester, ben tout se mélange, si tu regardes maintenant dans l'onglet stock, ben le lot en monoblanco 15/03/2016 n'existe plus, il est remplacé par une autre ligne monoblanco 15/04/2016 à 100, j'y comprends rien, je m'y perds complètement;

je m'excuse si mes explications ne sont pas trop claires.

en fin de compte mes lignes sur le journal, devraient correspondre à mes mouvements sur le stock, mais se n'est pas le cas de temps en temp. la valeur sur est le journal, là ça fonctionne parfaitement.

Bon j'y perd un peu mon latin, mais j'ai déjà repéré une grosse erreur dans ton code:

Pour trouver la ligne à modifier, tu utilises la formule:

Set Cel = .Columns("A").Find(what:=Me.ComboBox1, LookIn:=xlValues, lookat:=xlWhole)

En gros, tu check JUSTE LA MARQUE !! Tu ne testes rien d'autre.

Donc ton code te renvoie la PREMIÈRE ligne où la marque est présente !! Si c'est la bonne ligne à modifier, l'erreur serait invisible, mais si c'est la xième ligne à modifier, ça ne marche PAS.

Correction à faire qu'il faut que tu adaptes

Dim numLigne as integer

for numLigne = 2 to Feuil2.Cells(Rows.Count,"A").End(xlUp).Row
   if TEST1 AND TEST2 AND TEST3 etc .... then
   end if
next numLigne

Bon en fait j'ai déjà réécrit, le code

If MsgBox("Voulez-vous modifier les informations de " & Me.ComboBox1 & " ?", vbQuestion + vbYesNo, "Modification") <> vbYes Then Exit Sub

Dim numLigne As Long
For numLigne = 1 To Feuil2.Cells(Rows.Count, "A").End(xlUp).Row
    With Sheets("stock")
        If .Cells(numLigne, "A").Value = Me.ComboBox1 _
        And .Cells(numLigne, "B").Value = Me.ComboBox2 _
        And .Cells(numLigne, "C").Value = Me.ComboBox3 _
        And .Cells(numLigne, "D").Value = Me.ComboBox4 Then
            'ecriture
            '.Range("B" & numLigne) = Me.ComboBox2 -> INUTIL ET MAUVAIS
            '.Range("C" & numLigne) = ComboBox3 -> INUTIL ET MAUVAIS
            '.Range("D" & numLigne) = ComboBox4 -> INUTIL ET MAUVAIS
            .Range("E" & numLigne) = TextBox5
            '.Range("F" & numLigne) = TextBox6 -> INUTIL ET MAUVAIS
            Exit Sub
        End If

    End With
Next numLigne

Bonsoir d3d9x,

merci pour ta réponse, et en effet, c etait bien un problème de test. Ton code fonctionne à merveille, et j en ai même compris le sens, du coup j'ai encore appris quelque chose de nouveau, en te remerciant infiniment.

Rechercher des sujets similaires à "probleme modification ligne userform"