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
| Sub macro_mise_a_jour()
Dim Der_Sc As Long
Dim der_Maj As Long, FC As String
Dim x As Long
Dim W_Maj
Dim W_Source
Dim F_Source
Dim F_Maj
Workbooks.Open Filename:=("D:\documents and Settings\SESA188347\Desktop\mise a jour+source\fichier source.xls")
Set W_Source = Workbooks("fichier source.xls")
Set W_Maj = Workbooks("mise a jour pieces critiques.xls")
Set F_Source = Workbooks("fichier source.xls").Sheets("Liste pièces prodipact")
Set F_Maj = Workbooks("mise a jour pieces critiques.xls").Sheets("Feuil1")
'si les ref sont en B dans les deux fichiers
Der_Sc = F_Source.Range("B" & F_Source.Rows.Count).End(xlUp).Row 'dernière ligne du fichier source
der_Maj = F_Maj.Range("B" & F_Maj.Rows.Count).End(xlUp).Row 'dernière ligne du fichier_maj
'on crée une colonne temporaire (colonne AV) dans le fichier mise à jour
Workbooks("mise a jour pieces critiques.xls").Activate
FC = "=NB.SI(" & "'[" & W_Source.Name & "]" & F_Source.Name & "'!$B$2:$B$" & Der_Sc & ";B2)"
Sheets("Feuil1").Range("AV2").Value = FC
Sheets("Feuil1").Range("AV2").AutoFill Destination:=F_Maj.Range("AV2:AV" & der_Maj), Type:=xlFillDefault
'supprimer chaque ligne dont la ref n'est pas présente dans la feuille source
For x = der_Maj To 2 Step -1
If F_Maj.Range("AV" & x) = 0 Then
F_Maj.Range("AV" & x).EntireRow.Delete
End If
Next x
'on supprime la colonne temporaire
F_Maj.Columns("AV:AV").Delete
'on recommence mais à l'envers, pour ajouter les lignes
Der_Sc = F_Source.Range("B" & F_Source.Rows.Count).End(xlUp).Row
der_Maj = F_Maj.Range("B" & F_Maj.Rows.Count).End(xlUp).Row
End Sub |
Partager