web-dev-qa-db-fra.com

Comment faire une référence absolue en utilisant le format R1C1 dans VBA pour Excel?

J'écris une macro pour Excel en utilisant VBA (format r1c1) et je veux référencer une cellule qui est toujours à la position E3. Existe-t-il une syntaxe que je peux utiliser qui fera une référence absolue au format r1c1? Ou existe-t-il un moyen de passer à A1 et de revenir à r1c1?

J'ai regardé partout et je ne trouve pas la réponse ... Merci d'avance.

13
frogjockey

Si je colle =E3 dans G5 et =$E$3 dans G6, puis que je lance une fenêtre VB et dans la fenêtre immédiate, procédez comme suit:

? ActiveSheet.Range("G5").Formula
=E3
? ActiveSheet.Range("G5").FormulaR1C1
=R[-2]C[-2]
? ActiveSheet.Range("G6").Formula
=$E$3
? ActiveSheet.Range("G6").FormulaR1C1
=R3C5

Donc, le R et C le font par rapport à la cellule actuelle. Vous devez utiliser des crochets lorsque le nombre est négatif, sinon Excel pense que vous soustrayez un nombre d'une référence de cellule non valide.

EDIT: Il est à noter que la référence est gérée différemment entre absolu et relatif. 

  • Pour les références relatives que vous comptez à partir de la cellule dans laquelle se trouve la formule. E3 est R[-2]C[-2] loin de G5. c'est-à-dire 2 rangées vers le haut, 2 colonnes à gauche. 

  • Pour les valeurs absolues, vous comptez à partir du coin supérieur gauche. Donc, E3 est R3C5. c'est-à-dire 3 rangées plus bas, 5 colonnes plus. (merci à @GeorgeDooling pour la clarification)

20
Jerry Jeremiah

Parfois, la fonction 'Application.ConvertFormula' est utile pour naviguer entre les styles de référence. Par exemple, en ajoutant ceci à la fenêtre immédiate:

debug.print application.ConvertFormula ("= PRODUIT (O7, P $ 7)", xla1, xlr1c1)

retourné ceci: 

= PRODUIT (RC [-5], R7C [-4])

C'est un exemple trivial, mais quand vous avez une formule de monstre entre les mains ...

De plus, la commutation entre les styles de référence dans VBA s'effectue via:

application.ReferenceStyle = xlA1 

ou 

application.ReferenceStyle = xlR1C1

2
dra_red

Le format R1C1 peut être utilisé à la fois pour les références absolues et relatives . R1C1 sans crochets est absolu, lorsque vous utilisez des crochets, il est relatif.

R3C5 pointe toujours sur E3 peu importe où vous l'utilisez . Comme vous le savez déjà, R[3]C[5] pointe toujours 3 en bas et 5 à droite de votre position actuelle.

Comme George Dooling l’a déjà dit dans l’un des commentaires, la raison pour laquelle R-3C-5 n’a pas de sens est parce que vous êtes en dehors de la feuille. La feuille commence à R1C1 et les chiffres ne font que monter.

En ce qui concerne votre deuxième question, vous pouvez utiliser le format A1 en le mettant entre guillemets. R3C5 peut être écrit en tant que "E3" dans FormulaR1C1 sans problèmes.

0
Regret