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
| Option Explicit
Sub MVT_BNA()
Dim Cell As Range
Dim Sh As Worksheet
Dim DerLig As Long
ThisWorkbook.RefreshAll
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
With ThisWorkbook.Worksheets("BNA")
If .AutoFilterMode Then .AutoFilterMode = False
'suppression anciennes données
DerLig = .UsedRange.Rows.Count + 2 ' +2 au cas où A1 et A2 sont vides
If .Range("A3") <> "" Then Union(.Range("A3:D" & DerLig), .Range("M3:M" & DerLig)).ClearContents
'insertion nv données
Set Sh = ThisWorkbook.Worksheets("Mouvement")
DerLig = Sh.Cells(Sh.Rows.Count, 1).End(xlUp).Row - 2 ' -2 pour écarter les lignes 1 et 2
' chaque cellule de la colonne A de la feuille mouvement
For Each Cell In Sh.Cells(3, 1).Resize(DerLig, 1).Cells
If Cell.Value = "BNA" _
And Cell.Offset(0, 1).Value > .Cells(1, 1).Value _
And Cell.Offset(0, 8).Value <> 0 Then
With .Cells(.Rows.Count, 1).End(xlUp)(2)
.Value = Cell.Offset(0, 1).Value
.Offset(0, 1).Value = Cell.Offset(0, 4).Value
.Offset(0, 2).Value = Cell.Offset(0, 8).Value
End With
End If
Next Cell
DerLig = .Cells(.Rows.Count, 1).End(xlUp).Rows
With .Cells(3, 1).Resize(DerLig - 2, 1)
''mise en forme date de la colonne A
.NumberFormat = "m/d/yyyy"
'colonne D
With .Offset(0, 3)
' écriture des formules
.FormulaR1C1 = "=IF(COUNTIF(R3C3:RC3,RC[-1])>COUNTIF(R3C12:R" & DerLig & "C12,RC[-1]),RC[-1],"""")"
' remplacement de la formule par son résultat
'.Value = .Value
End With
'colonne M
With .Offset(0, 12)
' écriture des formules
.FormulaR1C1 = "=IF(COUNTIF(R3C12:RC12,RC[-1])>COUNTIF(R3C3:R" & DerLig & "C3,RC[-1]),RC[-1],"""")"
' remplacement de la formule par son résultat
'.Value = .Value
End With
'colonne L
With .Offset(0, 11)
' écriture des formules
.FormulaR1C1 = "=IF([@[DAT_PIE_MVT]]<>"""",[@[MNT_DEB_MVT]]-[@[MNT_CRE_MVT]],"""")"
' remplacement de la formule par son résultat
'.Value = .Value
End With
End With
End With
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
MsgBox "Rapprochement terminé...veuillez patienter encore quelques secondes"
End Sub |
Partager