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
|
Option Explicit
Sub Test()
Dim Plage As Range, InpRng As Range
Dim Cel As Range
'On Error GoTo Err_Read
Dim Derl As Long
Derl = ThisWorkbook.Worksheets("Mensuel").Range("A" & Cells.Rows.Count).End(xlUp).Row
Set InpRng = ThisWorkbook.Worksheets("Mensuel").Range("A2:A" & Derl)
Debug.Print InpRng.Address, InpRng.Cells.Count
For Each Cel In InpRng
If Trim("" & Cel) <> "" Then Histo CStr(Cel) Else MsgBox Cel.Address & " invalide"
Next
End Sub
Sub Histo(Fichier As String)
Dim Sh As Worksheet
Dim wb As Workbook
Application.DisplayAlerts = False
Set wb = Workbooks.Open(Fichier)
Application.DisplayAlerts = True
For Each Sh In wb.Sheets
TraitementSheet Sh
Next
wb.Save
wb.Close
End Sub
Sub TraitementSheet(Sh As Worksheet)
Dim Plage As Range
Dim Cel As Range
Range("D1").Copy Destination:=Range("K1")
If UCase(Left(Sh.Name, 5)) <> UCase("Valor") Then Exit Sub
Set Plage = Sh.Range(Sh.Cells(2, 1), Sh.Cells(Sh.Rows.Count, 1).End(xlUp))
For Each Cel In Plage
'Condition 1) Si colonne A, B, non vide et si colonne F est en % alors copier E dans G
If Trim("" & Cel.Value) <> "" And Trim("" & Cel.Offset(0, 1).Value) <> "" And Trim("" & Cel.Offset(0, 5).NumberFormat) = "0.00%" Then
Cel.Offset(, 10).Value = Cel.Offset(, 6).Value
'Condition 2 ) Si colonne A, B, non vide, et si colonne F n'est pas en % alors copier F dans G
ElseIf Cel.Value <> "" And Cel.Offset(0, 1).Value <> "" And Cel.Offset(0, 5).NumberFormat <> "0%" Then
Cel.Offset(, 10).Value = Cel.Offset(, 5).Value
End If
Next
End Sub |
Partager