bonjour les super internautes, grâce à vous j'avance et je suis heureux d’être un membre de ce super site
je viens de développer une petite application ou j'importe
1/ les données d'un logiciel COMPTABILITÉ développés sous oracle à l'aide MS QUERY
2/ Un suivi sur excel des comptes bancaires se trouve dans un feuil du classeur
je lance le rapprochement à l'aide d'une formule donnée par un gentil membre de ce site :
SI(NB.SI($C$3:$C3;C3)>NB.SI($L$3:$L$162;C3);C3;"")
cette formule est transformée en code à l'aide de l'enregistreur automatique
tous est bon sauf que cette opération prenne environ 3 à 5 minutes et je demande si je peux alléger ce code et gagner encore du temps
merci à tous
code principal
Code enregistré à l'aide de l'enregistreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Option Explicit Sub MVT_BNA() Dim cel As Range, plage As Range, plage1 As Range, plage2 As Range, plage3 As Range, plage4 As Range, plage5 As Range Dim derlig As Long, derlig1 As Long, derlig2 As Long, derlig3 As Long, derlig4 As Long, derlig5 As Long Application.ScreenUpdating = False ActiveWorkbook.RefreshAll 'suppression ancoen données With Worksheets("BNA") If Worksheets("BNA").AutoFilterMode Then Worksheets("BNA").AutoFilterMode = False End If derlig = .Range("A" & Rows.Count).End(xlUp).Row Set plage = .Range("A3:A" & derlig) derlig1 = .Range("B" & Rows.Count).End(xlUp).Row Set plage1 = .Range("B3:B" & derlig1) derlig2 = .Range("C" & Rows.Count).End(xlUp).Row Set plage2 = .Range("C3:C" & derlig2) If .Range("A3") <> "" Then plage.ClearContents plage1.ClearContents plage2.ClearContents End If End With With Worksheets("BNA") derlig4 = .Range("D" & Rows.Count).End(xlUp).Row Set plage4 = .Range("D3:D" & derlig4) derlig5 = .Range("M" & Rows.Count).End(xlUp).Row Set plage5 = .Range("M3:M" & derlig5) If 1 = 1 Then plage4.ClearContents plage5.ClearContents End If End With 'insertion nv données With Worksheets("Mouvement") derlig3 = .Range("A" & Rows.Count).End(xlUp).Row Set plage3 = .Range("A11:A" & derlig3) End With For Each cel In plage3 If cel = "BNA" And cel(, 2) > Sheets("BNA").Range("A1") And cel(, 9) <> 0 Then Worksheets("BNA").Cells(Rows.Count, 1).End(xlUp)(2) = cel(, 2) Worksheets("BNA").Cells(Rows.Count, 1).End(xlUp)(1, 2) = cel(, 5) Worksheets("BNA").Cells(Rows.Count, 1).End(xlUp)(1, 3) = cel(, 9) End If Next cel 'mise en forme date Worksheets("BNA").Range("A3:A" & derlig1).Select Selection.NumberFormat = "m/d/yyyy" ' formule de rapprochement Call SLD_BNA Call formuleBNA Application.ScreenUpdating = True MsgBox "Rapprochement terminé...veuillez patienter encore quelques secondes" End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Sub formuleBNA() ' ' Macro4 Macro ' With Worksheets("BNA") If 1 = 1 Then Range("D3").Select ActiveCell.FormulaR1C1 = _ "=IF(COUNTIF(R3C3:RC3,RC[-1])>COUNTIF(R3C12:R5000C12,RC[-1]),RC[-1],"""")" Range("D3").Select Selection.AutoFill Destination:=Range("D3:D5000"), Type:=xlFillDefault Range("D3:D5000").Select Range("M3").Select ActiveCell.FormulaR1C1 = _ "=IF(COUNTIF(R3C12:RC12,RC[-1])>COUNTIF(R3C3:R5000C3,RC[-1]),RC[-1],"""")" Range("M3").Select Selection.AutoFill Destination:=Range("M3:M5000"), Type:=xlFillDefault Range("M3:M5000").Select End If End With End Sub ' code pour faire le solde de chaque mouvement de la comptabilité : débit - crédit Sub SLD_BNA() With Worksheets("BNA") If 1 = 1 Then Range("L3").Select ActiveCell.FormulaR1C1 = _ "=IF([@[DAT_PIE_MVT]]<>"""",[@[MNT_DEB_MVT]]-[@[MNT_CRE_MVT]],"""")" Range("L3").Select Selection.AutoFill Destination:=Range("L3:L5000"), Type:=xlFillDefault Range("L3:L5000").Select End If End With End Sub
Partager