Microsoft 365 Adresse de cellule R[] C[)

PAPA WALKER

XLDnaute Junior
Bonjour à toutes et à tous,

je suis à créer un petit outil pour mon boult et là je butte surla syntaxe dans VBA

J'ai écrit pas mal de formule dans un oglet et qui vont récuerer des valeurs dans une autre feuille

Exemple j'ai écrit dans la Feuil1 ou je vais chercher une valeur de la ligne 5

="TEST"&Feuil2!A5

Comme je veux utiliser ces formules de manière répétitives, j'ai enregistré le code VBA pour pouvoir la retrouver et la recoller plus tard
en, notation ça donne ça:

Range("A1").FormulaR1C1 = "=""TEST""&Feuil2!R[2]C"
Range("A2").FormulaR1C1 = "=""TEST""&Feuil2§R[3]C[1]"
Range("A3").FormulaR1C1 = "=""TEST""&Feuil2!R[4]C[2]"

Comme je vais chercher mes infos dans lamême lige de la feuille 2, mais que mes formule dans la Feuille 1 sont en colonne, la valeur des ligne et des colonne s'incrémentent à chaque fois.
Pour les colonnes, ça me vas mais pour changer la valeur de la ligen das toutes les formules.... ?

Mon souci est que je veux que la valeur de laligne change selon la ligne de la feuille 2 sur la quelle je me trouve.
J'ai donc récupérer la valeur Row de la cellule active dans une variable "Ligne" et je voudrais donc que dans le dans le cas présent,
le code VA s'adapte en quelque sotre comme suit:

Range("A1").FormulaR1C1 = "=""TEST""&Feuil2!R[4+"Ligne"]C"

Mais est-ce possible demodifier cette valeur sachant que j'ai au moins 100 formules dans la feuille 1 (c'est pour produire est fichiers TXT)

je n'utilise peut-être pas la bonne méthode.

Bien à vous,

:)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour PapaWalker,
Très franchement, pas bien compris. Un fichier test serait le bienvenu pour expliquer ce que vous voulez exactement.
Cependant, cette ligne est erronée :
VB:
Range("A1").FormulaR1C1 = "=""TEST""&Feuil2!R[4+"Ligne"]C"
Cela passerait mieux comme ça :
Code:
Range("A1").FormulaR1C1 = "=TESTFeuil2!R[" & 4+Ligne & "]C"
On peut aussi passer par une notation A1 au lieu de R1C1, ce qui, quelquefois est plus parlant :
Code:
Sub Essai()
    Ligne = 4
    [A1].FormulaR1C1 = "=Feuil2!R[" & Ligne - 1 & "]C[0]"   ' Notation R1C1
    [A2].Formula = "=Feuil2!A" & Ligne                      ' Notation A1
End Sub
 

Wayki

XLDnaute Impliqué
Bonjour,
Le R1C1 est déjà pas super simple (de mon avis) à comprendre, un petit fichier exemple ne serait pas de trop.
Vous pouvez remplacer vos formules en R1C1 avec la fonction formula ou formulaarray.
Ensuite au lieu de taper toutes vos formules, il faut utiliser des boucles (Do Loop, For, For each...)
Il sera bien plus simple de faire évoluer votre variable.
A +
 

patricktoulon

XLDnaute Barbatruc
bonjour à tous
question : pourquoi le mode d’adressage RC ?
mais je vois que @sylvanu a déjà fait la remarque
si tu veux incrémenter ligne colonne utilise le .address(0,0) d'une cells
x=1
y=4
cellule.Formula = "=Feuil2!" & cells(x,y).address(0,0)
tu peux incrémenter x ou y a volonté

cela dit je me demande bien de quel besoins peut il s'agir
même en vba on peut faire un formulaarray pour toute la destination complète

si tant est qu'une formule soit nécessaire ;)
 

PAPA WALKER

XLDnaute Junior
Merci à vous deux pour vos conseils,
Pour la seconde proposition, je ne sais pas trop comment faire car un doo loop qui balayerait ce code VBA?

Je vais essayer la syntaxe de sylvanu et j'ai aussi éssayé de contournéer le pb en créant des formule avec la fonction indirect dans la preièreligne de la Feuille1.
Cimme ça je n'ai qu'aà coller la valeur de la variable ligne dans une cellue et j'aurai les données attendues toujours dans cette première ligne.

Merci en trout cas :)
 

PAPA WALKER

XLDnaute Junior
bonjour à tous
question : pourquoi le mode d’adressage RC ?
mais je vois que @sylvanu a déjà fait la remarque
si tu veux incrémenter ligne colonne utilise le .address(0,0) d'une cells
x=1
y=4
cellule.Formula = "=Feuil2!" & cells(x,y).address(0,0)
tu peux incrémenter x ou y a volonté

cela dit je me demande bien de quel besoins peut il s'agir
même en vba on peut faire un formulaarray pour toute la destination complète

si tant est qu'une formule soit nécessaire ;)
Merci aussi et oui il ya certainement mieux à faire que ce que k'ai engagé, mais le temps sera court ce dimanche pour tout recommencer .... ;:)
Ca sera pour la V2 et là je posterai un fichier/

Merci mille fois
 

PAPA WALKER

XLDnaute Junior
Merci à vous deux pour vos conseils,
Pour la seconde proposition, je ne sais pas trop comment faire car un doo loop qui balayerait ce code VBA?

Je vais essayer la syntaxe de sylvanu et j'ai aussi éssayé de contournéer le pb en créant des formule avec la fonction indirect dans la preièreligne de la Feuille1.
Cimme ça je n'ai qu'aà coller la valeur de la variable ligne dans une cellue et j'aurai les données attendues toujours dans cette première ligne.

Merci en trout cas :)
 

Pièces jointes

  • SCORE-et-POINTS.xlsm
    43.1 KB · Affichages: 4

PAPA WALKER

XLDnaute Junior
Rebonjour à tous, :)

Comme j'ai contourné le sujet pour faire vite, je reviens quand même pour un autre fichier avace un besoin quandsi similaire

J'ai joint un fichier pour exposer ma recherche.

En quelques mots:

- chaque mois j'attribue des points à des candidats selon leurs scores
-le 1er perçoit 600Pts, le second 597 Pts et ainsi de suite par pas de -3Pts
-Si égalité alors même nombr ede points pour les deux, mais le suivant -6Pts
- plusieurs égaités, même principe mais le suivant X lignes * 3Pts

si vous jouez le script pas à pas, vous errez que la pformule fait référence à la'adresse R3C4:RC. Mais chaque mois, la valeur R 3 devra s'ajuster à une variable qui sera la seconde lige du mois suivant ligne 270 je crois das mon exemple

Donc je cherche à modifier la rédaction de la formule pour la rendre variable de sorte qu'elle devienne
R270C4:RC 270 étant la variable

J'espère avoir été clair :rolleyes:

Cordialement
 

Discussions similaires

Réponses
22
Affichages
689
Réponses
5
Affichages
124