XL pour MAC Référence circulaire

rtlv17

XLDnaute Nouveau
Bonjour, dans mon application de gestion de compte que j'ai mise au point (c'est une véritable usine à gaz !!), j'ai une formule qui contient une référence circulaire.
Cette formule m'a été proposée via ce forum ; cependant je ne la comprend pas.
Quelqu'un peut il l'expliquer pas à pas et ainsi lever cette référence circulaire ?

Merci

Voici la formule ; elle a pour objectif de rassembler, dans une colonne, une liste sans vide, des données réparties de manière éparse dans une longue colonne.
La formule fonctionne mais contient une référence circulaire.

=SI(ESTNA(EQUIV(MIN(BA$4:BA$240)+LIGNE()-LIGNE(BB$4);BA$4:BA$240;0));"";INDEX(AZ$4:AZ$240;EQUIV(MIN(BA$4:BA$240)+LIGNE()-LIGNE(BB$4);BA$4:BA$240;0)))
 

Gégé-45550

XLDnaute Accro
Bonjour, dans mon application de gestion de compte que j'ai mise au point (c'est une véritable usine à gaz !!), j'ai une formule qui contient une référence circulaire.
Cette formule m'a été proposée via ce forum ; cependant je ne la comprend pas.
Quelqu'un peut il l'expliquer pas à pas et ainsi lever cette référence circulaire ?

Merci

Voici la formule ; elle a pour objectif de rassembler, dans une colonne, une liste sans vide, des données réparties de manière éparse dans une longue colonne.
La formule fonctionne mais contient une référence circulaire.

=SI(ESTNA(EQUIV(MIN(BA$4:BA$240)+LIGNE()-LIGNE(BB$4);BA$4:BA$240;0));"";INDEX(AZ$4:AZ$240;EQUIV(MIN(BA$4:BA$240)+LIGNE()-LIGNE(BB$4);BA$4:BA$240;0)))
Bonjour,
a priori, cette formule ne contient aucune référence circulaire.
VB:
MIN(BA$4:BA$240)
renvoie la plus petite valeur trouvée dans le champ fixe (en hauteur) BA$4:BA$240
Code:
LIGNE(BB$4)
renvoie le numéro de la ligne BB$4 fixe (en hauteur), donc il renvoie toujours 4
Code:
LIGNE()
renvoie le numéro de la ligne qui contient la cellule dans laquelle est écrite cette formule
donc,
Code:
MIN(BA$4:BA$240)+LIGNE()-LIGNE(BB$4)
renvoie la valeur la plus petite de la colonne BA augmentée du numéro de la ligne actuelle et réduite de 4.
Si l'on convient d'appeler cette valeur "référence", alors
Code:
EQUIV(MIN(BA$4:BA$240)+LIGNE()-LIGNE(BB$4);BA$4:BA$240;0)
équivaut à
EQUIV(référence;BA$4:BA$240;0)
et renvoie la première position relative de la valeur référence (exactement celle-ci du fait du paramètre 0) dans le champ BA$4:BA$240.
Si cette valeur existe,
EQUIV(MIN(BA$4:BA$240)+LIGNE()-LIGNE(BB$4);BA$4:BA$240;0)
renvoie un numéro de position, sinon elle renvoie N/A.
Si l'on convient d'appeler "position" la valeur renvoyée par
EQUIV(MIN(BA$4:BA$240)+LIGNE()-LIGNE(BB$4);BA$4:BA$240;0)
on a alors la formule :
Code:
=SI(ESTNA(position);"";INDEX(AZ$4:AZ$240;position;0)
qui se lit :
Si la formule de calcul de position renvoie N/A, alors afficher une cellule vide sinon afficher le résultat du calcul de la formule :
Code:
INDEX(AZ$4:AZ$240;position;0)
qui elle même renvoie la valeur située dans la champ AZ$4:AZ$240 à la position "position".
Cordialement,
 

rtlv17

XLDnaute Nouveau
Bonjour,
a priori, cette formule ne contient aucune référence circulaire.
VB:
MIN(BA$4:BA$240)
renvoie la plus petite valeur trouvée dans le champ fixe (en hauteur) BA$4:BA$240
Code:
LIGNE(BB$4)
renvoie le numéro de la ligne BB$4 fixe (en hauteur), donc il renvoie toujours 4
Code:
LIGNE()
renvoie le numéro de la ligne qui contient la cellule dans laquelle est écrite cette formule
donc,
Code:
MIN(BA$4:BA$240)+LIGNE()-LIGNE(BB$4)
renvoie la valeur la plus petite de la colonne BA augmentée du numéro de la ligne actuelle et réduite de 4.
Si l'on convient d'appeler cette valeur "référence", alors
Code:
EQUIV(MIN(BA$4:BA$240)+LIGNE()-LIGNE(BB$4);BA$4:BA$240;0)
équivaut à

et renvoie la première position relative de la valeur référence (exactement celle-ci du fait du paramètre 0) dans le champ BA$4:BA$240.
Si cette valeur existe,

renvoie un numéro de position, sinon elle renvoie N/A.
Si l'on convient d'appeler "position" la valeur renvoyée par

on a alors la formule :
Code:
=SI(ESTNA(position);"";INDEX(AZ$4:AZ$240;position;0)
qui se lit :
Si la formule de calcul de position renvoie N/A, alors afficher une cellule vide sinon afficher le résultat du calcul de la formule :
Code:
INDEX(AZ$4:AZ$240;position;0)
qui elle même renvoie la valeur située dans la champ AZ$4:AZ$240 à la position "position".
Cordialement,
Merci beaucoup,

Cette formule me parait bien alambiquée ! et bien compliquée pour remonter et rassembler dans une autre colonne des valeurs (une dizaine) éparpillées sur 240 lignes d'une colonne.

Je vais quand même l'ausculter.
 

rtlv17

XLDnaute Nouveau
Bonjour,
a priori, cette formule ne contient aucune référence circulaire.
VB:
MIN(BA$4:BA$240)
renvoie la plus petite valeur trouvée dans le champ fixe (en hauteur) BA$4:BA$240
Code:
LIGNE(BB$4)
renvoie le numéro de la ligne BB$4 fixe (en hauteur), donc il renvoie toujours 4
Code:
LIGNE()
renvoie le numéro de la ligne qui contient la cellule dans laquelle est écrite cette formule
donc,
Code:
MIN(BA$4:BA$240)+LIGNE()-LIGNE(BB$4)
renvoie la valeur la plus petite de la colonne BA augmentée du numéro de la ligne actuelle et réduite de 4.
Si l'on convient d'appeler cette valeur "référence", alors
Code:
EQUIV(MIN(BA$4:BA$240)+LIGNE()-LIGNE(BB$4);BA$4:BA$240;0)
équivaut à

et renvoie la première position relative de la valeur référence (exactement celle-ci du fait du paramètre 0) dans le champ BA$4:BA$240.
Si cette valeur existe,

renvoie un numéro de position, sinon elle renvoie N/A.
Si l'on convient d'appeler "position" la valeur renvoyée par

on a alors la formule :
Code:
=SI(ESTNA(position);"";INDEX(AZ$4:AZ$240;position;0)
qui se lit :
Si la formule de calcul de position renvoie N/A, alors afficher une cellule vide sinon afficher le résultat du calcul de la formule :
Code:
INDEX(AZ$4:AZ$240;position;0)
qui elle même renvoie la valeur située dans la champ AZ$4:AZ$240 à la position "position".
Cordialement,
Bonjour,
a priori, cette formule ne contient aucune référence circulaire.
VB:
MIN(BA$4:BA$240)
renvoie la plus petite valeur trouvée dans le champ fixe (en hauteur) BA$4:BA$240
Code:
LIGNE(BB$4)
renvoie le numéro de la ligne BB$4 fixe (en hauteur), donc il renvoie toujours 4
Code:
LIGNE()
renvoie le numéro de la ligne qui contient la cellule dans laquelle est écrite cette formule
donc,
Code:
MIN(BA$4:BA$240)+LIGNE()-LIGNE(BB$4)
renvoie la valeur la plus petite de la colonne BA augmentée du numéro de la ligne actuelle et réduite de 4.
Si l'on convient d'appeler cette valeur "référence", alors
Code:
EQUIV(MIN(BA$4:BA$240)+LIGNE()-LIGNE(BB$4);BA$4:BA$240;0)
équivaut à

et renvoie la première position relative de la valeur référence (exactement celle-ci du fait du paramètre 0) dans le champ BA$4:BA$240.
Si cette valeur existe,

renvoie un numéro de position, sinon elle renvoie N/A.
Si l'on convient d'appeler "position" la valeur renvoyée par

on a alors la formule :
Code:
=SI(ESTNA(position);"";INDEX(AZ$4:AZ$240;position;0)
qui se lit :
Si la formule de calcul de position renvoie N/A, alors afficher une cellule vide sinon afficher le résultat du calcul de la formule :
Code:
INDEX(AZ$4:AZ$240;position;0)
qui elle même renvoie la valeur située dans la champ AZ$4:AZ$240 à la position "position".
Cordialement,
"Cette formule m'a été proposée via ce forum ; cependant je ne la comprend pas."

Vous avez 5 messages sur ce forum et aucun d'entre eux n'affiche cette formule.
Bonsoir...,
je suis bien incapable de l'avoir créer et si elle fonctionne j'ai du la copier de quelque part.
Sachant que je ne communique que sur ce forum pour des questions relatives à Excel.
Crdlmt
 

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35