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
|
Sub Macro1()
Dim Cls_1 As Workbook
Dim Cls_2 As Workbook
Dim Fe_Produits As Worksheet
Dim Fe_Bordereau As Worksheet
Dim Fe_cablage As Worksheet
Dim Chemin As String
Dim Nom As String
Dim Nom2 As String
Dim Compteur_1 As Integer
Dim Compteur_2 As Integer
Dim I As Integer
Dim J As Integer
Dim K As Integer
Dim DerLg As Integer
'''''''''''''''''Nom du fichier'''''''
Set Cls_1 = ThisWorkbook
Nom = Cls_1.Name
'ce genre de construction est très spécifique à un type de nommage de classeur et ça risque fort de générer des erreurs !
'à moins que ce soit pour le test de découpage du nom ? Car plus utilisé après !
Nom = Left(Cls_1.Name, InStr(Cls_1.Name, ".xlsm") - 1)
Range("F4") = Split(Nom, "_")(2)
Nom2 = Split(Nom, "_")(4)
Range("F7") = Mid(Nom2, 1, 2) & "\" & Mid(Nom2, 3, 2) & "\" & Mid(Nom2, 5, 2)
'''''''''''ouvrir le fichier referentiel''''''''''''''''''''''''''''
Chemin = Cls_1.path
If Right(Chemin, 1) <> "\" Then Chemin = Chemin & "\"
'suppression des 3 premières lettres
Nom = Right(Cls_1.Name, Len(Cls_1.Name) - 3)
'variable objet "Workbook"
Set Cls_2 = Application.Workbooks.Open(path & "referentiel" & Nom)
'variable objet "Worksheet", une fois ceci fait, il n'est plus nécessaire de faire référence au classeur
'car le compilateur sait exactement à quelle feuille de quel classeur il s'agit
Set Fe_Produits = Cls_1.Worksheets("Liste Produits Stockés")
Set Fe_Bordereau = Cls_1.Worksheets("bordereau")
Set Fe_cablage = Cls_2.Worksheets("cablage")
'en utilisant "With - End With", il n'est plus nécessaire de préfixer les objets avec l'objet parent, le compilateur sait
'que s'il rencontre un objet précédé d'un point, il appartient à son parent, comme ceci par exemple --> .Cells(.Rows.Count, 1).End(xlUp).Row
With Fe_cablage
DerLg = .Cells(.Rows.Count, 1).End(xlUp).Row
I = DerLg
J = I - 1
K = 11
Do While .Cells(I, 1).Interior.ColorIndex <> .Cells(J, 1).Interior.ColorIndex
For Compteur_1 = 2 To J
For Compteur_2 = DerLg To J
If .Cells(Compteur_2, 1).Value = .Cells(Compteur_1, 1).Value Then
If .Cells(Compteur_2, 2).Value <> .Cells(Compteur_1, 2).Value Then
If .Cells(Compteur_2, 13).Value = "break-out SMF" Or .Cells(Compteur_2, 13).Value = "break-out MMF" Then
Fe_Produits.Cells(7, 1).Copy Fe_Bordereau.Range(A11)
ElseIf .Cells(Compteur_2, 13).Value = "jarretière SMF" Or .Cells(Compteur_2, 13).Value = "jarretière MMF" Then
Fe_Produits.Cells(8, 1).Copy Fe_Bordereau.Cells(K, 1)
End If
End If
Else
Fe_Produits.Cells(7, 1).Copy Fe_Bordereau.Cells(K, 1)
Fe_Produits.Cells(8, 1).Copy Fe_Bordereau.Cells(K, 1)
End If
Next Compteur_2
Next Compteur_1
I = I - 1
J = J - 1
K = K + 1
Loop
End With
End Sub |
Partager