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
Configuration: Windows 2000
Internet Explorer 6.0

1 réponse

  1. 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