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
|
Sub import_document()
Dim lastrow As Long
Dim i As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
End With
lastrow = Workbooks("template_facture-devis.xlsm").Worksheets("input").Range("C65536").End(xlUp).Row
'd'abord on copie les valeurs des colonnes B et colonnes C (pour éviter la référence circulaire)
Sheets("INPUT").Range("B25:C" & lastrow).Value = Sheets("INPUT").Range("B25:C" & lastrow).Value
'ensuite on applique une formule index aux colonnes D, G, H, I si et seulement si la colonne C est plus grande que 0 (ligne de tâche)
' on importe ici les lignes contenus dans la facture voulue.
For i = 28 To lastrow
If Workbooks("template_facture-devis.xlsm").Worksheets("input").Cells(i, 3).Value > 0 Then
Workbooks("template_facture-devis.xlsm").Sheets("INPUT").Range("D" & i).FormulaR1C1 = "=IF(ISERROR(INDEX('\\Diskstation-bbw\templates\db_bbw\[db_analytics.xlsx]analytics'!R2C1:R9995C15,MATCH(R7C12&RC[-2]&RC[-1],'\\Diskstation-bbw\templates\db_bbw\[db_analytics.xlsx]analytics'!R2C1:R9995C1,0),8)),"""",INDEX('\\Diskstation-bbw\templates\db_bbw\[db_analytics.xlsx]analytics'!R2C1:R9995C15,MATCH(R7C12&RC[-2]&RC[-1],'\\Diskstation-bbw\templates\db_bbw\[db_analytics.xlsx]analytics'!R2C1:R9995C1,0),8))"
Workbooks("template_facture-devis.xlsm").Sheets("INPUT").Range("G" & i).FormulaR1C1 = "=IF(ISERROR(INDEX('\\Diskstation-bbw\templates\db_bbw\[db_analytics.xlsx]analytics'!R2C1:R9995C15,MATCH(R7C12&RC[-5]&RC[-4],'\\Diskstation-bbw\templates\db_bbw\[db_analytics.xlsx]analytics'!R2C1:R9995C1,0),9)),"""",INDEX('\\Diskstation-bbw\templates\db_bbw\[db_analytics.xlsx]analytics'!R2C1:R9995C15,MATCH(R7C12&RC[-5]&RC[-4],'\\Diskstation-bbw\templates\db_bbw\[db_analytics.xlsx]analytics'!R2C1:R9995C1,0),9))"
Workbooks("template_facture-devis.xlsm").Sheets("INPUT").Range("H" & i).FormulaR1C1 = "=IF(ISERROR(INDEX('\\Diskstation-bbw\templates\db_bbw\[db_analytics.xlsx]analytics'!R2C1:R9995C15,MATCH(R7C12&RC[-6]&RC[-5],'\\Diskstation-bbw\templates\db_bbw\[db_analytics.xlsx]analytics'!R2C1:R9995C1,0),10)),"""",INDEX('\\Diskstation-bbw\templates\db_bbw\[db_analytics.xlsx]analytics'!R2C1:R9995C15,MATCH(R7C12&RC[-6]&RC[-5],'\\Diskstation-bbw\templates\db_bbw\[db_analytics.xlsx]analytics'!R2C1:R9995C1,0),10))"
Workbooks("template_facture-devis.xlsm").Sheets("INPUT").Range("I" & i).FormulaR1C1 = "=IF(ISERROR(INDEX('\\Diskstation-bbw\templates\db_bbw\[db_analytics.xlsx]analytics'!R2C1:R9995C15,MATCH(R7C12&RC[-7]&RC[-6],'\\Diskstation-bbw\templates\db_bbw\[db_analytics.xlsx]analytics'!R2C1:R9995C1,0),11)),"""",INDEX('\\Diskstation-bbw\templates\db_bbw\[db_analytics.xlsx]analytics'!R2C1:R9995C15,MATCH(R7C12&RC[-7]&RC[-6],'\\Diskstation-bbw\templates\db_bbw\[db_analytics.xlsx]analytics'!R2C1:R9995C1,0),11))"
End If
Next i
'on complète ensuite les lignes vides par les services de la template
For i = 28 To lastrow
If Workbooks("template_facture-devis.xlsm").Worksheets("input").Cells(i, 4).Value = "" And Workbooks("template_facture-devis.xlsm").Worksheets("input").Cells(i, 3).Value > 0 Then
Workbooks("template_facture-devis.xlsm").Sheets("INPUT").Range("D" & i).FormulaR1C1 = "=IF(ISERROR(INDEX('\\Diskstation-bbw\templates\db_bbw\[db_template.xlsx]template'!R2C1:R9995C15,MATCH(RC[-2]&RC[-1],'\\Diskstation-bbw\templates\db_bbw\[db_template.xlsx]template'!R2C1:R9995C1,0),4)),"""",INDEX('\\Diskstation-bbw\templates\db_bbw\[db_template.xlsx]template'!R2C1:R9995C15,MATCH(RC[-2]&RC[-1],'\\Diskstation-bbw\templates\db_bbw\[db_template.xlsx]template'!R2C1:R9995C1,0),4))"
Workbooks("template_facture-devis.xlsm").Sheets("INPUT").Range("G" & i).Value = "0"
Workbooks("template_facture-devis.xlsm").Sheets("INPUT").Range("H" & i).FormulaR1C1 = "=IF(ISERROR(INDEX('\\Diskstation-bbw\templates\db_bbw\[db_template.xlsx]template'!R2C1:R9995C15,MATCH(RC[-6]&RC[-5],'\\Diskstation-bbw\templates\db_bbw\[db_template.xlsx]template'!R2C1:R9995C1,0),6)),"""",INDEX('\\Diskstation-bbw\templates\db_bbw\[db_template.xlsx]template'!R2C1:R9995C15,MATCH(RC[-6]&RC[-5],'\\Diskstation-bbw\templates\db_bbw\[db_template.xlsx]template'!R2C1:R9995C1,0),5))"
Workbooks("template_facture-devis.xlsm").Sheets("INPUT").Range("I" & i).FormulaR1C1 = "=IF(ISERROR(INDEX('\\Diskstation-bbw\templates\db_bbw\[db_template.xlsx]template'!R2C1:R9995C15,MATCH(RC[-7]&RC[-6],'\\Diskstation-bbw\templates\db_bbw\[db_template.xlsx]template'!R2C1:R9995C1,0),7)),"""",INDEX('\\Diskstation-bbw\templates\db_bbw\[db_template.xlsx]template'!R2C1:R9995C15,MATCH(RC[-7]&RC[-6],'\\Diskstation-bbw\templates\db_bbw\[db_template.xlsx]template'!R2C1:R9995C1,0),6))"
End If
Next i
'ensuite on copie colonnes toutes les cellules des colonnes D à I
Workbooks("template_facture-devis.xlsm").Sheets("INPUT").Range("D25:I" & lastrow).Value = Sheets("INPUT").Range("D25:I" & lastrow).Value
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
End With
End Sub |