traduction d'une formule

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
g
guerando33
Jeune membre
Jeune membre
Messages : 45
Inscrit le : 18 août 2015
Version d'Excel : 365

Message par guerando33 » 19 novembre 2016, 10:12

Bonjour à tous,

j'avais besoin de récupérer des informations toutes les 56 lignes, on m'a donné une formule qui marche trés bien, mais j'aimerai la comprendre pour pouvoir l'adapter plus tard.

Quelqu'un pourrait il m'expliquer comment elle marche s'il vous plais ?
la voici :

En B4 mettre cette formule

=INDIRECT(ADRESSE(LIGNE($A1)*56+1;1;3;1;"tableau source");1)

je vous remercie d'avance,

Cordialement

stephanie
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'171
Appréciations reçues : 448
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 19 novembre 2016, 11:33

Bonjour,

Sais-tu que la consultation de l'Aide sur chaque fonction est suffisamment bien faite pour te fournir en général toutes les informations que tu peux souhaiter à son propos, et souvent plus que tu n'en auras en réponse à une question, accompagnée d'exemples... :D

La fonction ADRESSE une adresse de cellule sous forme texte. Sa syntaxe est la suivante :
ADRESSE(numéro de ligne; numéro de colonne; [caractère absolu ou relatif de la référence]; [style de référence]; [nom de feuille])

Les deux premiers arguments sont obligatoires, les suivants facultatifs.
Le premier est défini dans ta formule par : LIGNE(A1)*56+1
LIGNE(A1) renvoie 1 (numéro de ligne de A1) ; 1*56+1 renverra donc 57
Ceci en B4 car recopiée en B5 LIGNE(A1) deviendra LIGNE(A2) [la référence étant relative], lequel renvoie 2, d'où : 2*56+1 =>113

Le deuxième argument est fixé à 1 : la colonne de la référence renvoyée par ADRESSE sera donc toujours A.
Pour le 3e, la valeur 3 signifie colonne absolue et ligne relative. Pour le 4e la valeur 1 signifie référence de style A1. Quant au dernier il conduit la fonction à inclure le nom de feuille dans la référence renvoyée.
Ainsi en B4 la fonction renverrra : 'tableau source'!$A56
et en B5 : 'tableau source'!$A113
etc.
Il faut noter que le 4e argument peut être omis (la réf. sera en style A1 par défaut).
Le 3e peut l'être également : par défaut la réf. sera absolue, ce qui n'a aucune incidence dans la valeur renvoyée par ta formule, le recalcul incrémenté de la ligne étant fait sur chaque ligne.

Donc en écrivant : ADRESSE(LIGNE(A1)*56+1;1;;;"tableau source")
le résultat sera : 'tableau source'!$A$56 en B4
et : 'tableau source'!$A$113 en B5, et ainsi de suite.

ADRESSE renvoie une valeur texte. Cette valeur représente une référence de cellule mais le fait de l'inscrire n'appelle pas le contenu de la cellule désignée, il ne fait qu'inscrire la référence sous forme texte.
C'est la fonction INDIRECT qui permet de pointer vers la référence à partir de sa valeur texte.
Ainsi :
=INDIRECT(ADRESSE(LIGNE(A1)*56+1;1;;;"tableau source"))
affichera en B4 le contenu de la cellule A56 de la feuille tableau source, en B5 celui de la cellule A113, en B6 celui de A169...

J'ai aussi omis le 2e argument de INDIRECT facultatif, 1 ou VRAI étant sa valeur par défaut pour interpréter la référence textuelle comme étant de style A1 (ce qui est le cas).

Cordialement.
g
guerando33
Jeune membre
Jeune membre
Messages : 45
Inscrit le : 18 août 2015
Version d'Excel : 365

Message par guerando33 » 19 novembre 2016, 16:36

bonjour et grand merci !!

je viens de voir ton message je vais plancher dessus !! c 'est surper merci et j'irai voir l"aide" promis :) !!

bonne soirée
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message