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 ...
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
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)
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
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
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.
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
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
PfoooaaaAAAA j'halucine !!!
Donc dans mon code j'ai adapté la réponse comme ça
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
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
Le 11/05/22 Í 12:45, LaurentC a écrit :
PfoooaaaAAAA j'halucine !!!
Donc dans mon code j'ai adapté la réponse comme ça
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].
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
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
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 !
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
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
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
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
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
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 :-(
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