Valeur relative dans formule VBA

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 !

Zizkovak

XLDnaute Nouveau
Bonjour,

Je cherche à faire le total d'une colonne comportant plusieurs montants.

Le problème est que le nombre de montants dans la colonne est variable. Ma somme se trouve donc toujours dans la même colonne, mais toujours dans une ligne différente.

Avec l'enregistrement, j'ai obtenu cette formule :

ActiveCell.Columns("A:A").EntireColumn.Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-149]C:R[-1]C)"
ActiveCell.Offset(1, 0).Range("A1").Select


Bien sur, elle n'est pas correcte, car 149 était la ligne pour ce fichier ci.
Comment puis-je faire la somme à partir de la cellule au dessus de la sélection et non à partir d'un numéro de ligne ?

J'ai essayé en vain quelque chose comme cela :

FormulaR1C1 = "=SUM(R(Offset(-1, 0))C:R[-1]C)"

Merci pour votre aide
 
Re : Valeur relative dans formule VBA

Bonsoir Zizkovak 🙂,
la formule ActiveCell.Row te donnera la valeur de la ligne de la cellule active. La formule
Code:
[I]ActiveCell.FormulaR1C1 = "=SUM(R[-[COLOR=red][B]" & [/B][/COLOR][/I][COLOR=red][B]ActiveCell.Row & "[/B][/COLOR][I]]C:R[-1]C)"[/I]
devrait te permettre d'arriver à tes fins.
Bonne soirée 😎
 
Re : Valeur relative dans formule VBA

Bonsoir Zizkovak, bonsoir le forum,

Essaie comme ça :

Code:
Sub Macro1()
Dim dl As Integer
dl = Range("A65536").End(xlUp).Row
Cells(dl + 1, 1).Formula = "=SUM(R[-" & dl & "]C:R[-1]C)"
End Sub

Édition :

Bonsoir JNP on s'est croisés
 
Re : Valeur relative dans formule VBA

Bonjour,

Je vous remercie pour votre aide. J'ai toujours un souci avec la première option :

ActiveCell.FormulaR1C1 = "=SUM(R[-" & ActiveCell.Row & "]C:R[-1]C)"

Si je comprends bien, il devrait additionner les X lignes au dessus de la cellules actives.

Or au lieu de faire
=SUM(B1:B150), j'obtiens la formule : =SUM(B150:B65536)


Si j'utilise l'option :
Dim dl As Integer
dl = Range("A65536").End(xlUp).Row
Cells(dl + 1, 1).Formula = "=SUM(R[-" & dl & "]C:R[-1]C)"

J'obiens la formule =SUM(A1:A150) dans la cellule A151. Les lignes sont correctes mais la colonne est incorrecte. Je devrais avoir la colonne B.

J'ai tenté
Dim dl As Integer
dl = Range("A65536").End(xlUp).Row
Cells(dl + 1, 2).Formula = "=SUM(R[-" & dl & "]C:R[-1]C)
"
J'obtiens la bonne formule :
=SUM(B1:B150)

Pourriez avoir la gentillesse de m'expliquer le fonctionnement de la formule SUM ? Ou pourriez-vous me dire où je peux trouver des informations à ce sujet ?

Merci encore
 
Re : Valeur relative dans formule VBA

Bonsoir,
VBA ne reconnait les formules de cellule qu'en anglais, d'où =SOMME() devient en VBA =SUM(). Maintenant, depuis le début, tu utilises des formules relatives (N° de ligne en +/-, N° de colonne en +/-). Le plus simple est d'utiliser des formules absolues (1er N° de ligne, dernier N° de ligne, 1er N° de colonne, dernier N° de colonne). Alors,
Code:
Cells(dl + 1, 2).Formula = "=SUM(B1:B" & dl & ")"
ce qui peut paraître plus simple...
Bonne soirée 😎
 
- 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
2
Affichages
290
Réponses
4
Affichages
272
Retour