XL 2019 Formule R1C1 avec enregistreur de macro (erreur)

  • Initiateur de la discussion Initiateur de la discussion re4
  • Date de début Date de début

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 !

re4

XLDnaute Occasionnel
Bonjour,
Lorsque je créé une formule avec l'enregistreur de macro cela me donne des formules de type R1C1. Est-il possible de contourner et d'utiliser les formules telles qu'écrites ?

Avec ce code, j'ai une erreur à "=*" alors que ça fonctionne dans l'exemple 2, bien sur il y a des erreurs de syntaxe , par ; ect... mais je ne sais pas faire ,-(
Code:
Range("B2").Formula="SOMME.SI.ENS($A$3:$A$9;B3:B9; "=*";B3:B9; "*")"

Exemple 2 :
VB:
  Range("B2").Select
    '=SOMME.SI.ENS($A$3:$A$9;B3:B9; "=*";B3:B9; "*") ' je voudrai écrire sous cette forme
     ActiveCell.FormulaR1C1 = _
        "=SUMIFS(R3C1:R9C1,R[1]C:R[7]C, ""=*"",R[1]C:R[7]C, ""*"")"

Merci à vous
 
Dernière édition:
Qui cherche trouve, surtout si l'on corrige ses erreurs 🙂
VB:
Range("B2") = WorksheetFunction.SumIfs(Range(Cells(3, 1), Cells(9, 1)), Range("B3:B9"), "=*", Range("B3:B9"), "*")

Le calcul se fait bien mais comment faire pour que la formule s'écrive dans la cellule B2 ?
 
Dernière édition:
Merci beaucoup Dranreb, ça fonctionne mais comment utiliser Range(cells... dans ce cas parce que je compte la dernière ligne et la dernière colonne. je fais un Autofill sur la ligne 2 à partir de la formule en B2
Bonne nuit

 
Pas besoin d'AutoFill, vous pouvez mettre d'un coup la formule à toutes les colonnes de la ligne 2 :
VB:
Cells(2, "B").Resize(, ColMax - 1).FormulaLocal = "=SOMME.SI.ENS($A$3:$A$9;B3:B9;""=*"";B3:B9;""*"")"
Ou bien
VB:
[B2].Resize(, ColMax - 1).FormulaR1C1 = "=SUMIFS(R3C1:R9C1,R3C:R9C,""=*"",R3C:R9C,""*"")"
Remarque: je ne comprends pas bien le rôle de la dernière paire de termes car il me semble que si toutes les cellules d'une colonnes sont de la forme "=*", elles sont forcément aussi de la forme "*". Ou alors c'est la 2ème paire qui ne sert à rien !
 
Dernière édition:
Bonjour et encore merci de votre aide.
C'est parfait, je ne connaissait pas cette syntaxe pour recopier les formules.
effectivement j'ai remplacé "=*" par "*", c'est OK

Est- il possible de remplacer les ($A$3:$A$9;B3:B9;""=*"";B3:B9 par des Range(cells( ?
l'idée est de remplacer les 9 pour ce test par dernière ligne de colonne A et suivantes

Bonne journée
 
Dernière édition:
Bonjour.
Non. Éventuellement par des " & Range(… ).Address(True, False, xlR1C1) & "
Mais si vous avez le LMax, le plus simple c'est de faire :
VB:
Dim LMax AsCong, CMax As Integer, LxC As String
…
LxC = "R" & LMax & "C"
[B2].Resize(, CMax - 1).FormulaR1C1 = "=SUMIF(R3C:" & RxC & ",""*"",R3C1:" & RxC & "1)"
 
Merci Dranreb
Comme ceci ça marche ,-)
Dim LMax As Long, CMax As Integer, LxC As String
LxC = "R" & LMax & "C"
[B2].Resize(, CMax - 1).FormulaR1C1 = "=SUMIF(R3C:" & LxC & ",""*"",R3C1:" & LxC & "1)"

Tu m'as fait découvrir des nouvelles façon de faire dont je ne connaissait absolument pas
Je testerai le " & Range(… ).Address(True, False, xlR1C1) & " mais ça fonctionne très bien avec ton dernier code
Encore merci pour ton implication
Bonne journé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
11
Affichages
712
Réponses
2
Affichages
799
Réponses
1
Affichages
1 K
Retour