Enregistrement macro
Bonjour,
Depuis que je suis passé à Excel 2010, l'enregistrement auto des macros se fait en L1C1.
Est-il possible de retrouver l'enregistrement en valeur absolue, comme je l'avais sur l'Excel précédent ?
Je n'ai pas su trouver ce choix dans les options.
Merci.
Bonjour,
Dans le ruban > Développeur Désactiver Utiliser les références relatives (sous Enregistrer une macro...)
A+
Merci,
C'était trop visible pour que je trouve ce bouton !
Néanmoins, ayant désactivé l'option, je réalise que j'ai mal posé ma question, que je reformule ci-dessous :
Effectivement, en décochant les références relatives, la sélection des cellules se fait en absolu.
Range("A1").Select
ActiveCell.FormulaR1C1 = "=SUM(C[2])"
Mais la formule elle-même reste codée en références relatives.
C'était cela que je souhaitais corriger dans ma question initiale.
En fait je voudrais obtenir directement
ActiveCell.Formula = "=SUM(A:A)"
Pour l'instant, je modifie manuellement la formule pour avoir la forme voulue.
Question subsidiaire :
Sur des développement que j'avais faits bien avant, j'avais :
ActiveCell.FormulaArray = "=SUM("A:A)"
Je ne saisis pas la signification de Array.
Avec tous mes remerciements.
bonjour,
Tu as la formule que tu avais enregistré : Si tu enregistres et que dans ta parenthèse tu sélectionnes toute la colonne tu as :
"=SUM(A:A)"
si tu ne sélectionnes qu'une cellule tu as :
"=SUM(C2)" sans crochets
si tu sélectionnes plusieurs cellules tu peux avoir :
"=SOMME(C2:C5)" (par exemple...)
Pour FormulaArray voir l'aide de VBA :
Range.FormulaArray, propriété
Cette propriété renvoie ou définit la formule d'une plage, sous forme matricielle. Cette propriété renvoie (ou peut se voir affecter) une seule formule ou un tableau Visual Basic. Si la plage spécifiée ne contient aucune formule sous forme matricielle, cette propriété renvoie la valeur null. Type de données Variant en lecture-écriture.
Syntaxe
expression.FormulaArray
expression Variable qui représente un objet Range.
Remarques
Si vous utilisez cette propriété pour entrer une formule sous forme matricielle, vous devez utiliser le style de référence L1C1, et non le style de référence A1 (consultez le second exemple).
La propriété FormulaArray a également une limite de 255 caractères.
Exemple
Cet exemple montre comment saisir le chiffre 3 sous la forme d'une constante matricielle dans les cellules A1 à C5 de la feuille Sheet1.
Visual Basic pour Applications
Worksheets("Sheet1").Range("A1:C5").FormulaArray = "=3"
Cet exemple montre comment saisir la formule matricielle =Sum(R1C1:R3C3) (=SOMME(R1C1:R3C3)) dans les cellules E1 à E3 de la feuille Sheet1.
Visual Basic pour Applications
Worksheets("Sheet1").Range("E1:E3").FormulaArray = _
"=Sum(R1C1:R3C3)"
A+
Merci pour la contribution, mais décidément je n'arrive pas à me faire comprendre :
Voici que que j'obtiens en enregistrant automatiquement la macro :
Pour le total de toute la colonne
Range("H5").Select
ActiveCell.FormulaR1C1 = "=SUM(C[-3])"
Pour le total de quelques cellules
Range("H6").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-3]C[-3]:RC[-3])"
Ces formules, enregistrées automatiquement, sont en R1C1, et moi j'aurais souhaité qu'elles soient en A1.
C'est à dire que ce soit FORMULA et non pas FORMULAR1C1, ce qui me donnerait :
Range("I5").Select
ActiveCell.Formula = "=SUM(E:E)"
Range("I6").Select
ActiveCell.Formula = "=SUM(E3:E6)"
Merci pour votre coopération
Bonjour.
Je ne pense pas qu'il y ait de système automatique. Je ne m'en suis jamais soucié.
De toute façon une fois enregistrée une macro à vocation à être retravaillée...
Personnellement une fois enregistrée en R1C1 je modifie la macro de la manière suivante :
Je mémorise la traduction en anglais.
Je transforme le ActiveCell.FormulaR1C1 en :
ActiveCell.Formula:=" "Pour la formule à l'intérieur des guillemets je fais un copier coller de la formule que je récupère dans la barre de formule.
Traduire avec les mots mémorisés et remplaçer les points-virgules par des virgules...
A+