Bonsoir,
J'aurais besoin de réaliser un code sur une base de données qui peut être très importante (du style 50 000 lignes). J'ai des sommes sur la colonne D ainsi que sur la colonne E. Je voudrais faire la soustraction D-E sur la colonne F et ce sur chaque ligne.
Mais il faudrait que VBA applique cette soustraction quelque soit le nombre de lignes, sans toucher à la cellule d’entête "F1" et jusqu'à ce qu'il y ait des valeurs sur la colonne D ou E.
Avec l'enregistreur de macro et ce que j'ai trouvé sur internet j'ai pu realisé ce code :
Cela fonctionne pour des bases allant de quelques lignes à quelques milliers. Mais quand la base devient plus important les remplacements et les soustractions sont très très longues à se réaliser, ce qui rend caduque l'utilité de la macro.
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 Application.ScreenUpdating = False Columns("D:E").Select Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Columns("F:F").Select Selection.Insert Shift:=xlToRight Range("F1").Select ActiveCell.FormulaR1C1 = "Montant solde" Dim lg, i As Long With ActiveSheet.Range("D1:E65000") lg = .Row + .Rows.Count - 1 End With For i = lg To 2 Step -1 If Cells(i, "D") <> "" And Cells(i, "E") <> "" Then Cells(i, "F").FormulaR1C1 = "=RC[-2]-RC[-1]" Next i End Sub
Auriez vous une idée pour que ces actions se fassent beaucoup plus rapidement ?
En vous remerciant
Partager