Bonjour,
J'ai créé une macro. qui renseigne 2 feuilles d'un même classeur.
La première est renseignée par les n° d'ordre de fabrication et leur rattachement aux lignes de commande (feuille "OF").
La deuxième est renseignée par les lignes de commande client (feuille "CMDES").
Après avoir renseigné ces 2 feuilles, je souhaite positionner les affectations des ordres de fabrication aux lignes de commande sous la ligne de commande qui le concerne dans la feuille des lignes de commande.
Ma macro. supprime des lignes de commande client malheureusement.
Voici le code que j'ai utilisé pour insérer les enregistrements des affectations (feuille nommée "OF") vers la feuille des commandes (feuille nommée "CMDES").
i est mon indice pour balayer les lignes de commande client,
j est la ligne traitée dans les affectations d'OF,
id_cmde_ligne est mon critère d'appareillage des 2 feuilles,
Julien.
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 i = 3 If Worksheets("CMDES").Range("A" & i).Value = "" Then fin_tableau = True Else fin_tableau = False End If nb_lignes = Worksheets("OF").Range("A65536").End(xlUp).Row Do Until fin_tableau ' Si la quantité restant à livrer est > à la quantité totale réservée alors il convient de rechercher ' les lignes d'affectation d'OF correspondant et de les ramener sous la ligne de commande client If Int(Worksheets("CMDES").Range("G" & i).Value) > Int(Worksheets("CMDES").Range("H" & i).Value) Then ' Récupération de l'id_cmde_ligne de la ligne de commande client restant à livrer. id_cmde_ligne = Int(Worksheets("CMDES").Range("O" & i).Value) ' Recherche de l'id_cmde_ligne dans la feuille des affectations d'of. Set rFound = Worksheets("OF").Range("I2:I" & nb_lignes).Find(id_cmde_ligne, LookIn:=xlValues) ' Il y a une affectation dans la feuille des affectations d'OF If Not rFound Is Nothing Then LaLig = rFound.Row Set rFound = Nothing j = LaLig fin_recherche = False ' Boucle jusqu'à ce que l'id_cmde_ligne lu dans la feuille des affectations des of ' soit supérieur à celui de la ligne de commande ou être arrivé à la fin de la feuille des affectations d'OF Do Until fin_recherche ' Copie de la ligne concernée Worksheets("OF").Range("A" & j & ":U" & j).Copy ' Coller dans la feuille des lignes de commande sous la ligne de commande concernée ' Positionnement sur la ligne suivante i = i + 1 Worksheets("CMDES").Range("A" & i).PasteSpecial xlPasteValues j = j + 1 If Worksheets("OF").Range("I" & j).Value = "" Or Int(Worksheets("OF").Range("I" & j).Value) > id_cmde_ligne Then fin_recherche = True End If Loop End If End If i = i + 1 If Worksheets("CMDES").Range("A" & i).Value = "" Then fin_tableau = True End If Loop
Partager