Problème boucle VBA EXCEL

CACHEUX -  
 Utilisateur anonyme -
PROBLEME BOUCLE SOUS VBA EXCEL


Bonjour à tous,

je suis confronté depuis des mois à un problème qui vous semblera certainement simple mais que je ne parviens pas à solutionner :

J'ai un tableau de gestion de stocks contenant 2 feuilles :
1 feuille BASE
1 Feuille MVTSSTOCKS
Sur la feuille BASE
La cellules B6 = code produit
C6=fournisseur
D6 = code fournisseur
E6 = famille produit
F6 = code famille
G6= libellé
J6 = stock dispo
K6 = le stock valorisé
Un bouton de commande sur cette feuille BASE me permet d'activer un Userform qui me permet de remplir cette base produits avec les infos mentionnées ci dessus.

Jusque là aucun problème.

La deuxième feuille MVTS DE STOCKS doit par le biai d'un second Userform me permettre d'enregistrer les entrées et les sorties de marchandises mais EGALEMENT DE METTRE LE STOCK DISPO ET LA VALEUR DE STOCK A JOUR DANS LA FEUILLE BASE.
NB : les cellules B6 : G6 DES DEUX FEUILLES CONTIENNENT LES MEMES INFOS.
Mon problème est le suivant :
J'ai commencé à remplir ma feuille BASE avec trois nouveaux articles;
Lorsque je veux faire une entrée à partir du second Userform et que je tape le code produit dans le textBox de cet userform, je dois avoir sur les lignes a coté C6 : G6 le fournisseur, le code fournisseur, la famille produit et le code famille : cela ne marche que sur la première ligne

Voilà ce que j'ai écrit et qui n'est pas bon ( boucle mal écrite ou inadéquate) :

With UserForm2
Range("B65536").End(xlUp).Offset(1, 0) = TextBox1.Value

Range("I65536").End(xlUp).Offset(1, 0) = TextBox2.Value
Range("J65536").End(xlUp).Offset(1, 0) = TextBox3.Value
Range("K65536").End(xlUp).Offset(1, 0) = SpinButton1.Value
End With

Dim i As Long
For i = 7 To 100


If Sheets("MVTSSTOCKS").Range("B7").Value = Sheets("MVTSSTOCKS").Range("B" & i).Value Then
Sheets("MVTSSTOCKS").Range("B" & i).Value = Sheets("BASE").Range("B" & i).Value
End If
If Sheets("MVTSSTOCKS").Range("C7").Value = Sheets("MVTSSTOCKS").Range("C" & i).Value Then
Sheets("MVTSSTOCKS").Range("C" & i).Value = Sheets("BASE").Range("C" & i).Value
End If

If Sheets("MVTSSTOCKS").Range("D7").Value = Sheets("MVTSSTOCKS").Range("D" & i).Value Then
Sheets("MVTSSTOCKS").Range("D" & i).Value = Sheets("BASE").Range("D" & i).Value
End If
If Sheets("MVTSSTOCKS").Range("E7").Value = Sheets("MVTSSTOCKS").Range("E" & i).Value Then
Sheets("MVTSSTOCKS").Range("E" & i).Value = Sheets("BASE").Range("E" & i).Value
End If
If Sheets("MVTSSTOCKS").Range("F7").Value = Sheets("MVTSSTOCKS").Range("F" & i).Value Then
Sheets("MVTSSTOCKS").Range("F" & i).Value = Sheets("BASE").Range("F" & i).Value
End If
If Sheets("MVTSSTOCKS").Range("G7").Value = Sheets("MVTSSTOCKS").Range("G" & i).Value Then
Sheets("MVTSSTOCKS").Range("G" & i).Value = Sheets("BASE").Range("G" & i).Value
End If


Next i
With Sheets("BASE")
For i = 7 To 100

If CheckBox1.Value = True Then

Worksheets("BASE").Range("J" & i).Value = Worksheets("BASE").Range("J" & i).Value + UserForm2.SpinButton1.Value
Worksheets("BASE").Range("K" & i).Value = Worksheets("BASE").Range("I" & i).Value * Worksheets("BASE").Range("J" & i).Value
End If


If CheckBox2.Value = "SORTIE" Then
Worksheets("BASE").Range("J" & i) = Worksheets("BASE").Range("J & i").Value - UserForm2.SpinButton1.Value
Worksheets("BASE").Range("K" & i) = Worksheets("BASE").Range("I" & i).Value * Worksheets("BASE").Range("J" & i).Value
End If
Next i
End With
Unload Me

End Sub


Le décompte des quantités se fait mais je n'arrive pas à faire dire à ce programme que si le code produit de la feuille MVTS DE STOCKS est égal au code produit de la feuille BASE Alors les colonnes suivantes de la feuille MVTS DE STOCKS doivent contenir les memes infos que celles de la feuille BASE.

Vous remerciant d'avance de me consacrer un peu de votre temps,

Cordialement

Emmanuel
A voir également:

1 réponse

Utilisateur anonyme
 
Bonjour,

j'ai supprimé quelques lignes pour la compréhension :

Private Sub cmd_Execute_Click()

    Dim i As Long
    
    Application.ScreenUpdating = False
    Sheets("BASE").Range("B65536").End(xlUp).Offset(1, 0) = UserForm2.TextBox1.Value

    For i = 7 To 100
        If (Sheets("MVTSSTOCKS").Range("B7").Value = Sheets("BASE").Range("B7").Value) Then
            Sheets("MVTSSTOCKS").Range("B" & i).Value = Sheets("BASE").Range("B" & i).Value
        End If
    Next i
    
    With Sheets("BASE")
        For i = 7 To 100
            If CheckBox1.Value = True Then
                Worksheets("BASE").Range("J" & i).Value = Worksheets("BASE").Range("J" & i).Value + UserForm2.SpinButton1.Value
                Worksheets("BASE").Range("K" & i).Value = Worksheets("BASE").Range("I" & i).Value * Worksheets("BASE").Range("J" & i).Value
            End If
            If CheckBox2.Value = "SORTIE" Then
                Worksheets("BASE").Range("J" & i) = Worksheets("BASE").Range("J & i").Value - UserForm2.SpinButton1.Value
                Worksheets("BASE").Range("K" & i) = Worksheets("BASE").Range("I" & i).Value * Worksheets("BASE").Range("J" & i).Value
            End If
        Next i
    End With
    Application.ScreenUpdating = True

End Sub
'


la ligne :

If (Sheets("MVTSSTOCKS").Range("B7").Value = Sheets("MVTSSTOCKS").Range("B7").Value) Then

me semble en erreur et devrait être :

If (Sheets("MVTSSTOCKS").Range("B7").Value = Sheets("BASE").Range("B7").Value) Then

Lupin
0