Eviter les FormulaR1C1

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

thierry.bayard

XLDnaute Junior
Bonjour à tous,

J'essaie de retravailler le code d'une macro (très longue) utilisée pour des tableaux de bord.
La macro enchaine beaucoup de calcul. Pour le moment, j'utilise souvent des FormulaR1C1 puis je fige la valeur dans la cellule. Ca donne des trucs comme ça, pas très beau :

With .Range("AA5:AA" & .Range("E4").End(xlDown).Row)
.FormulaR1C1 = "=RC[-1]-RC[-2]"
.Value = .Value
End With
With .Range("AB5:AB" & .Range("E4").End(xlDown).Row)
.FormulaR1C1 = "=IF(RC[-3]=0,0,RC[-1]/RC[-3])"
.Value = .Value
End With


J'ai essayer de créer une boucle. Ca fonctionne mais le temps d'exécution de la macro s'est encore allongé :

Dim c As Range
For Each c In Range("AA5:AA" & .Range("E4").End(xlDown).Row)
c.Value = Cells(c.Row, c.Column - 1) - Cells(c.Row, c.Column - 2)
Next

For Each c In Range("AB5:AB" & .Range("E4").End(xlDown).Row)
If Cells(c.Row, c.Column - 3) = 0 Then
c.Value = ""
Else
c.Value = Cells(c.Row, c.Column - 1) / Cells(c.Row, c.Column - 3)
End If
Next


Pour d'autres fonctions, je bloque encore plus et ne voit pas du tout comment remplacer la fonction Excel. C'est le cas pour les RECHERCHEV et les SOMMPROD où je mets des codes de ce style :
.FormulaR1C1 = "=VLOOKUP(RC[1],Structure!C[6]:C[7],2,FALSE)"
.FormulaR1C1 = "=SUMIFS(Activité!R2C37:R5000C37,Activité!R2C1:R5000C1,'Synthèse spé'!RC4,Activité!R2C3:R5000C3,'Synthèse spé'!R1C,Activité!R2C4:R5000C4,""Entrées"")"


Pouvez-vous m'expliquer comment me passer de l'étape fonction Excel tout en diminuant le temps d'exécution de la macro (qui est l'objectif N°1).
Dites moi si un fichier exemple est nécessaire où si j'ai été suffisamment clair...

Merci d'avance pour votre aide.

Thierry
 
Bonjour.
Pour remplacer les VLOOKUP je préconise un Dictionary.
Pour le reste ma fonction Gigogne peut aussi offrir des solutions rapides.
Mais elle ne convient que pour des rapports où tous les arguments de regroupements doivent être reproduits classés.
Une concaténation de tableaux peut aussi apporter une solution différente en remplacement des VLOOKUP s'ils se rapportent aux arguments de regroupements.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
708
Réponses
16
Affichages
1 K
  • Question Question
Microsoft 365 VBA sur outlook
Réponses
14
Affichages
1 K
Réponses
1
Affichages
609
Réponses
0
Affichages
598
Réponses
11
Affichages
842
Réponses
28
Affichages
2 K
Retour