1 pièce(s) jointe(s)
Intégration Formules sous VBA
Bonjour,
J'ai aujourd'hui un fichier de 250 000 cellules a devoir gérer avec 40 colonnes et 6215 lignes.
Ce fichier contient l’ensemble des références en gestion sur notre site.
Le fichier a pour but de venir comparer pour chaque références les prévisions de vente du Moi M avec le Mois M-1, M-2…
Pièce jointe 188956
Si je laisse les formules dans toutes ces cellules, le fichier devient trop volumineux et non manipulable.
J’ai donc pensé à passer par du VBA qui viendrait exécuter ma formule se trouvant dans une cellule et la copier/coller sur une plage définie.
J’ai donc tapé ce code
Code:
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
| Sub copie_colle_formules()
'
' copie_colle_formules Macro
'
'
Dim nbligne As Integer
Dim DernColonne As Integer
nbligne = Sheets("Analysis").Range("I5").End(xlDown).Row
DernColonne = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
For i = 10 To DernColonne
'copie la formule et la colle sur la bonne cellule
Cells(3, i).Select
Application.CutCopyMode = False
Selection.Copy
Range(Cells(5, i), Cells(nbligne, i)).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'remplace la formule par la valeur
Range(Cells(5, i), Cells(nbligne, i)).Value = Range(Cells(5, i), Cells(nbligne, i)).Value
Next
End Sub |
Cela fonctionne mais le mise à jour prend tout de même 4 à 5 minutes.
Les Formules se trouvant sur la ligne 3 ressemble à :
Code:
1 2
|
=SI(ESTERREUR(RECHERCHEV($E3;INDIRECT("'" & J$4 & "'" & "!$C$3:$S$6215" );Analysis!J$1;0));"";RECHERCHEV($E3;INDIRECT("'" & J$4 & "'" & "!$C$3:$S$6215" );Analysis!J$1;0)) |
J’utilise la formule INDIRECT() pour rendre la sélection de l’onglet dynamique.
Qqun aurait-il une bonne idée