Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA - problème syntaxe Somme-Decaler

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 !

Excelced

XLDnaute Junior
Bonjour le forum,

j'ai un soucis de syntaxe avec ma formule
le problème est que je n'arrive pas à soustraire ma variable i au nombre de "Rows"
si quelqu'un sait comment corriger la formule

Code:
For i = 8 To Range("G65536").End(xlUp).Row
    If Cells(i, 7) <> "" Then
    ActiveCell.offset(0, 3).FormulaR1C1 = "=SUM(OFFSET(RC[2],,,,Controle!R[-7-i]C[-8]))"
    End If
Next i

Merci d'avance
 
Re : VBA - problème syntaxe Somme-Decaler

Salut,

le problème c'est que quand tu met quelque chose entre guillemet, il l'écrit tel quel dans la cellule. Donc ton i n'est plus considéré comme une variable. Pour ca il faut l'évaluer à l'extérieur de la formule avant :

"=SUM(OFFSET(RC[2],,,,Controle!R[" & -7-i & "]C[-8]))"

@+
 
Re : VBA - problème syntaxe Somme-Decaler

Ah ok merci
je n'ai plus d'erreur mais par contre il me fais n'importe quoi 🙂
je pense que je ne comprend pas la syntaxe d'un somme RC[]
comment faut il l'interpréter ?
 
Re : VBA - problème syntaxe Somme-Decaler

En fait c'est la syntaxe dans ton offset qui pose problème (je pense)
tu utilise une plage en dernier argument alors qu'il attend un nombre qui correspond à la largeur de la plage que tu souhaite obtenir (cf aide sur DECALER).
Qu'est-ce que tu cherche à faire plus exactement ?

Sinon pour RC[] -> R = Row, C = Column donc si tu te place en D8 et que tu veux faire référence à la case B2 par exemple, il faut écrire R[-6]C[-2] (B2 est située 6 lignes et 2 colonnes avant D8)
Par contre les crochet signifient que la référence de ta cellule n'est pas fixe. Si tu veux faire référence à une cellule fixe (qui apparait sous la forme $B$2 dans la barre de formules Excel), tu dois écrire R2C2 (pour B2 -> 2eme ligne et 2eme colonne. De même pour H47 ca sera R47C8)
 
Re : VBA - problème syntaxe Somme-Decaler

Bonjour le fil 🙂,
Si tu veux pas t'em..., le plus simple c'est d'utiliser la syntaxe
Code:
ActiveCell.Offset(0, 3).Formula = "=SUM(OFFSET(A1,,,,Feuil1!A" & i - 2 & "))"
à adapter 🙄...
D'autre part, dans ta boucle, ActiveCell ne change jamais, donc c'est toujours la même cellule qui sera remplie 😱 !!!
La logique serait d'utiliser Cells(i, 10) 😛...
Bon courage 😎
 
Re : VBA - problème syntaxe Somme-Decaler

@ Joebob : Merci pour la précision sur les $, c'est justement ce que je cherchais

@ JNP : Merci pour cette précision.
une partie du problème venait de la dernière partie de la formule, la largeur de la plage
j'y ai remédié en la remplaçant par une variable

Code:
Sub somme_decaler()
'
' calculer le cumul en fonction du mois
'
Dim Mois As Byte

Mois = Sheets("Controle").Range("B2").Value

For i = 8 To Range("G65536").End(xlUp).Row
    If Cells(i, 7) <> "" Then
    Cells(i, 7).Select
    ActiveCell.Offset(0, 3).FormulaR1C1 = "=SUM(OFFSET(RC[2],,,," & Mois & "))"
    End If
Next i
End Sub
 
- 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

  • Question Question
Microsoft 365 FormulaR1C1 erreur
Réponses
5
Affichages
330
Réponses
1
Affichages
281
  • Question Question
Microsoft 365 VBA sur outlook
Réponses
14
Affichages
1 K
Réponses
5
Affichages
570
Réponses
17
Affichages
2 K
Réponses
21
Affichages
2 K
Réponses
5
Affichages
470
Réponses
11
Affichages
551
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…