Bonjour je débute dans le vba et je suis embêté dans une ligne de commande.
je souhaiterai un petit coup main sur un module.
Je voudrai insérer 2 colonnes E et F mais je n'y arrive pas .
Dans le fichier ci joint j'explique ce qu'il ne va pas (feuille "Sorties" & "MVT")
Pour vous c'est surement évident mais je me casse les dents. Le fichier est remis avant l'insertion des colonnes.
J'espère que quelqu'un m'aidera.


Merci d'avance, Cordialement

Laurent

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
Sub sortie_stock()
'je definie la dernire ligne
    derlig = Sheets("Sorties").Cells(Cells.Rows.Count, "A").End(xlUp).Row
    derligstock = Sheets("Inventaire").Cells(Cells.Rows.Count, "A").End(xlUp).Row
    derligjourn = Sheets("MVT").Cells(Cells.Rows.Count, "A").End(xlUp).Row
 
    ' Sortie ====> Inventaire
 
    'je parcours les lignes des entrées
    For Each C In Sheets("Sorties").Range("A4:A" & derlig)
 
        'je parcours les lignes des stocks
        For Each d In Sheets("Inventaire").Range("A4:A" & derligstock)
            'si article stock = article entrée alors
            If C = d Then
                'valeur stock + valeur entrée
                d.Offset(0, 5) = d.Offset(0, 5) + C.Offset(0, 1)
            End If
        Next
    Next
 
 
    ' Sortie ====> Mouvement
    derligjourn = derligjourn + 1
    'je parcours les lignes des sorties
    For Each C In Sheets("Sorties").Range("A4:A" & derlig)
        'je m'assure que la sortie n'est pas vide pour éviter une insertion d'une ligne vide
        If C <> "" Then
            'je saisie que c'est une sortie
            Sheets("MVT").Range("A" & derligjourn).Value = "Sorties"
            'je saisie la designation
            Sheets("MVT").Range("A" & derligjourn).Offset(0, 1) = C
            'je saisie la quantité
            Sheets("MVT").Range("A" & derligjourn).Offset(0, 2) = C.Offset(0, 1)
            'je saisie la date
            Sheets("MVT").Range("A" & derligjourn).Offset(0, 5) = Date
            'j'incremente le numéro de ma derniere ligne
            derligjourn = derligjourn + 1
        End If
    Next
 
 
    'aprs les entrées je supprime mes lignes
    DLig = Sheets("Sorties").Range("B" & Rows.Count).End(xlUp).Row
    ' Pour chaque ligne de la dernière à la 4me je les supprime
    For lig = DLig To 4 Step -1
        Rows(lig).Delete
    Next
 
 
 
    MsgBox "Sortie de stock terminée"
 
 
End Sub
 
Sub entree_stock()
'je définie la dernire ligne
derlig = Sheets("Entrees").Cells(Cells.Rows.Count, "A").End(xlUp).Row
derligstock = Sheets("Inventaire").Cells(Cells.Rows.Count, "A").End(xlUp).Row
derligjourn = Sheets("MVT").Cells(Cells.Rows.Count, "A").End(xlUp).Row
 
' Entrée ====> Stock
'je parcours les lignes des Entrées
For Each C In Sheets("Entrees").Range("A4:A" & derlig)
'je parcours les lignes des stocks
For Each d In Sheets("Inventaire").Range("A4:A" & derligstock)
'si article stock = article Entrée alors
If C = d Then
'valeur stock + valeur Entrée
d.Offset(0, 4) = d.Offset(0, 4) + C.Offset(0, 1)
End If
Next
Next
 
 
' Entrée ====> Mouvement
derligjourn = derligjourn + 1
'je parcours les lignes des Entrées
For Each C In Sheets("Entrees").Range("A4:A" & derlig)
'je m'assure que la sortie n'est pas vide pour éviter une insertion d'une ligne vide
If C <> "" Then
'je saisie que c'est une Entrée
Sheets("MVT").Range("A" & derligjourn).Value = "Entrees"
'je saisie la designation
Sheets("MVT").Range("A" & derligjourn).Offset(0, 1) = C
'je saisie la quantité
Sheets("MVT").Range("A" & derligjourn).Offset(0, 2) = C.Offset(0, 1)
'je saisie la date
Sheets("MVT").Range("A" & derligjourn).Offset(0, 5) = Date
'j'incremente le numero de ma derniere ligne
derligjourn = derligjourn + 1
End If
Next
 
 
'après les Entrées je supprime mes lignes
DLig = Sheets("Entrees").Range("B" & Rows.Count).End(xlUp).Row
' Pour chaque ligne de la dernière à la 4me je les supprime
For lig = DLig To 4 Step -1
Rows(lig).Delete
Next
 
MsgBox "Entrée en stock terminée"
 
End Sub
Sub ajout_art()
    Range("A4").Select
    Range(Selection, Selection.End(xlDown)).Select
    lign_der_select = Range("A" & Rows.Count).End(xlUp).Row
    ActiveWorkbook.Names.Add Name:="base_art", RefersToR1C1:="=Inventaire!R4C1:R" & lign_der_select & "C1"
    Sheets("Entrees").Select
    Range("A4").Select
    Range(Selection, Selection.End(xlDown)).Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="=base_art"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
    Sheets("Sorties").Select
    Range("A4").Select
    Range(Selection, Selection.End(xlDown)).Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="=base_art"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
    Sheets("Inventaire").Select
    Range("A4").Select
 
   MsgBox "Mise à jour effectuée avec succes !"
 
End Sub