Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

indirect vers référence cellule

17 réponses
Avatar
LaurentC
Bonjour

Au cours d'une Sub(), j'écris l'adresse d'une première cellule.address
dans une seconde sous la forme $B$12, plus loin j'utilise la fonction
indirect() vers la seconde cellule et retrouve le contenu de la
première cellule B12, ok c'est super ça fonctionne ... euf, ça
fonctionne jusqu'Í  ce que j'insère une ligne plus haut que la ligne 12
... le contenu attendu se retrouve en B13 et mon adresse n'est plus
bonne :-(

Y a t'il moyen d'écrire dans une cellule la référence d'une cellule et
non son adresse ?
Une référence qui bougerait lorsque j'insère une ligne ou colonne pour
désigner le même contenu ...

Merci pour vos idées
@+Laurent

7 réponses

1 2
Avatar
MichD
Le 11/05/22 Í  08:32, LaurentC a écrit :
Salut
Moi, j'essayerais comme ça :
En P139 ==> la valeur 100
En B2 au lieu d'écrire  l'adresse de la cellule P139, j'inscrirais la
formule suivante : ="P"&LIGNE((DECALER($P139;;;;)))
Dans une autre cellule : Tu peux inscrire la formule : Indirect(B2)
Lorsque tu ajoutes une ligne,  la formule en B2 retournera P140, la
nouvelle adresse de la cellule contenant la valeur 100. La cellule
contenant la formule =Indirect(B2) retournera 100.

en 1 mot : excellent !
Je peux  ajouter d'autres qualificatifs ;-)
Vraiment chouette
Pile poil
...
Je comprends pas tout bien ...
Ligne() ça va.
Decaler(), dans cet usage je ne comprends pas
j'ai enlevé un jeu de parenthèses
je ne comprends pas le $ dans décaler, ça semble fonctionner
J'en ai pas super besoin mais parce que je suis curieux (et aussi un
gros abuseur) ça serait bien que ça fonctionne aussi pour les colonnes,
j'ai essayé
=COLONNE(DECALER(B2;;;;))&LIGNE(DECALER(B2;;;;))
Alors ça fonctionne (ça incérmente quand j'insère des ligne et colonne)
mais ça renvoie 22 pour désigner B2 ... c'est pas terrible, comment
remplacer le premier 2 par B ?
Nomnbreux merci
@+Laurent

Bonjour
Je dois partir pour un moment...
En cellule B2, essaie la formule : ­RESSE(LIGNE(P139);COLONNE(P139);4)
Les explications => plus tard.
MichD
Avatar
LaurentC
salut
Je dois partir pour un moment...

pas de problème :-) prends ton temps !
En cellule B2, essaie la formule : ­RESSE(LIGNE(P139);COLONNE(P139);4)

Je pense que ça va aller :-)
Les explications => plus tard.

Je pense avoir compris, DECALER(B2;;;;) renvoie B2 mais vu que la
référence est dans une formule elle évolura avec le temps si j'insert
des lignes.
Super merci Í  toi
@+Laurent
Avatar
LaurentC
PfoooaaaAAAA j'halucine !!!
Donc dans mon code j'ai adapté la réponse comme ça
Intersect(Rows(CpteLigne), Range("TblOpérations[Soldée]")).FormulaLocal
= _
"=""P""&LIGNE(DECALER(P" & NumLingeInit & ";;;;))"
Et ça marche bien ... sauf un détail, la formule écrite est
="P"&@LIGNE(DECALER(P288;;;;))
Il sert Í  quoi le @ ? (arobase devant LIGNE)
Il est venu lÍ  comment ?
merci
@+Laurent
Avatar
MichD
Le 11/05/22 Í  12:45, LaurentC a écrit :
PfoooaaaAAAA j'halucine !!!
Donc dans mon code j'ai adapté la réponse comme ça
Intersect(Rows(CpteLigne), Range("TblOpérations[Soldée]")).FormulaLocal = _
"=""P""&LIGNE(DECALER(P" & NumLingeInit & ";;;;))"
Et ça marche bien ... sauf un détail, la formule écrite est
="P"&@LIGNE(DECALER(P288;;;;))
Il sert Í  quoi le @ ? (arobase devant LIGNE)
Il est venu lÍ  comment ?
merci
@+Laurent

="P"&@LIGNE(DECALER(P288;;;;))
L'utilisation de "@" dans une formule Excel standard est utilisée
seulement dans les versions Microsoft Office 365. Je n'ai jamais vu cela
dans ma version Excel 2016.
VoilÍ  l'explication...
Le symbole @ est déjÍ  utilisé dans les références de tableaux pour
indiquer une intersection implicite. Considérons la formule suivante
dans un tableau =[@Column1]. Ici, le symbole @ indique que la formule
doit utiliser l'intersection implicite pour récupérer la valeur de la
même ligne dans [Column1].
Cela t'aide? ;-))
MichD
Avatar
LaurentC
salut
VoilÍ  l'explication...
Le symbole @ est déjÍ  utilisé dans les références de tableaux pour indiquer
une intersection implicite. Considérons la formule suivante dans un tableau
=[@Column1]. Ici, le symbole @ indique que la formule doit utiliser
l'intersection implicite pour récupérer la valeur de la même ligne dans
[Column1].
Cela t'aide? ;-))

Euf ... pour être tout Í  fait honnète, il y a bien longtmps que je me
suis persuadé que je ne pourrais pas comprendre tout Excel ... même si
tu fais des efforts :-)
Notons que le code VBA ajoute le @ mais la formule marche très bien
sans !
Encore merci Í  toi
@+Laurent
Avatar
Jc
LaurentC a écrit :
Une fois l'un inscrit, calculer, copier le résultat et coller la valeur au
même endroit ou ailleur et passer Í  la cote suivante.

Ma proposition était :
Une fois "Historique.Action()" inscrit, calculer, copier le résultat et
coller la valeur au même endroitet passer Í  la cote suivante
Ce qui fait qu'il n'y a, Í  chaque passage dans la boucle, qu'un seul
"Historique.Action() ".
Et en le calculant dans la macro, pour inscrire le résultat en dur ?
Têtu je suis.....# ; D
--
______________________________________________
Jc
Avatar
LaurentC
Salut
Faudrait essayer mais j'ai un doute.
Quand ton code valide le Historique.Action(), si tu copies juste
derrière, tu auras parfois les premières cellule duement remplies, les
suivantes marquée #BUSY! et dans ton collé le #BUSY! est traduit par
#CALC!.
J'ai tenté de chercher comment détecter cet état avant de faire copier
... sans succès :-(
@+Laurent
1 2