Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1341 connectés 

  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Fonction INDIRECT() Excel 2007

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Fonction INDIRECT() Excel 2007

n°3022246
xilllium
Posté le 06-01-2012 à 08:33:40  profilanswer
 

Bonjour, voilà mon problème :
 
Sur excel, j'ai deux feuilles que j'appelle Feuil1 et Feuil2. La cellule Feuil1!A1 a pour texte "Feuil2!A1" sans les "". Je veux que ma cellule Feuil1!B1 prenne la valeur contenue dans la cellule Feuil2!A2. Pour cela j'utilise dans Feuil1!B1 la formule =INDIRECT(Feuil1!A$1) car elle contient l'appel vers la cellule. Parfait ça marche. Seulement voilà, quand je veux étendre cela aux cellule qui suivent (vers le bas), rien ne change. Or je voudrais que cela incrémente la valeur contenue dans ma cellule Feuil1!A1, c'est à dire Feuil2!A1 puis Feuil2!A2, puis Feuil2!A3 etc...
 
Le fichier excel pour mieux comprendre est à l'adresse : http://dl.free.fr/m0ljF68P2
 
Si quelqu'un a fait l'effort de comprendre, je le remercie  :hello:

mood
Publicité
Posté le 06-01-2012 à 08:33:40  profilanswer
 

n°3022295
SuppotDeSa​Tante
Aka dje69r
Posté le 06-01-2012 à 14:52:00  profilanswer
 

Enleves le $ devant le numéro de ligne. Le $ fixant le numéro de ligne il est logique que ca ne s'incremente pas.
 
=INDIRECT(Feuil1!A$1)
Ici le $ fixe le numéro de ligne, donc tu auras beau tirer ta formule dans tous les sens, le numéro de ligne restera figé. C'est le but du $ justement
 
=INDIRECT(Feuil1!$A1)
Ici le $ fixe la colonne. Tu auras donc beau tirer ta formule dans tous les sens, la colonne restera toujours A
 
=INDIRECT(Feuil1!$A$1)
La, tu l'auras surement compris tu fixes les deux. Colonne et ligne.
 
Donc, pour ne pas fixer les lignes et profiter de l'incrementation, pas de $ :
=INDIRECT(Feuil1!A1)
 
 
(C'est un peu les bases de la manipulation d'Excel hein... :whistle: )


Message édité par SuppotDeSaTante le 06-01-2012 à 14:54:33

---------------
Soyez malin, louez entre voisins !
n°3022319
xilllium
Posté le 06-01-2012 à 16:50:49  profilanswer
 

Tu n'as pas compris le problème... Je suis obligé de bloquer la cellule, sinon comment excel pourrait trouver le lien qu'elle contient : dès la première incrémentation, il pointerait sur une cellule vide. Ce qu'il faut c'est que l'incrémentation se fasse sur la valeur de la cellule, et non pas sur "l'adresse" de la cellule. Quelqu'un d'autre ?


Message édité par xilllium le 06-01-2012 à 16:51:33
n°3022321
gougoul07
Bo comme un dieu
Posté le 06-01-2012 à 16:58:16  profilanswer
 

as tu essayé aux moins ce qu'il a dit ?


---------------
Mieux vaut apprendre à un homme à pêcher avant de l'avoir tué.
n°3022323
SuppotDeSa​Tante
Aka dje69r
Posté le 06-01-2012 à 16:59:27  profilanswer
 

Quelqu'un d'autre ? :lol:
Si c'est comme ca, bon courage...

 

Edit : Aller, c'est vendredi soir, je ne vais pas faire mon aigri.
Donc.
Ma solution fonctionne, tu n'avais qu'a tirer les cellules A1 et B1 jusqu'en bas.

 

[:dje69r:3]

 

Comme tu veux jouer qu'avec une cellule (Celle qui est en Feuil1!A1) la solution est, comme tu le dis, de jouer sur la valeur de la reference de la ligne.
Et pour ca, il y une super fonction : Ligne()
Donc, sur le fichier que tu mets en lien, tu te mets en A1 et tu saisis :
Feuil2!A
On ne met pas le numéro de ligne pour qu'il se calcule.
Ensuite tu te mets en B1 et tu saisis :
=INDIRECT($A$1 & LIGNE(A1))
Tu tires ta cellule B1 en bas, et oh magie.

 

[Mode_Aigri] Finalement tu n'avais pas besoin de quelqu'un d'autre pour faire ton boulot à ta place [/Mode_Aigri]


Message édité par SuppotDeSaTante le 06-01-2012 à 17:12:09

---------------
Soyez malin, louez entre voisins !
n°3022325
gougoul07
Bo comme un dieu
Posté le 06-01-2012 à 17:05:57  profilanswer
 

+152687


---------------
Mieux vaut apprendre à un homme à pêcher avant de l'avoir tué.
n°3022328
SuppotDeSa​Tante
Aka dje69r
Posté le 06-01-2012 à 17:11:32  profilanswer
 
n°3022336
xilllium
Posté le 06-01-2012 à 18:13:18  profilanswer
 

#Mode pas aigri :
Sincèrement, fallait pas le prendre mal mais c'est pas ça du tout. En tout cas, ce n'est pas ce que je souhaite obtenir. Je crois pas que tu te sois servi de la feuille que j'ai mis à disposition. Apparemment, d'après un expert excel, ce n'est de toute façon pas possible, il va falloir que je trouve une autre solution.

n°3022339
gougoul07
Bo comme un dieu
Posté le 06-01-2012 à 18:29:50  profilanswer
 

peut être que ta facon de t'exprimer est limite,

 

explique nous plutôt ce que tu veux faire exactement !
il y a surement une solution,

 

pourquoi veux tu impérativement que la référence a la feuille soit utilisée vie un indirect ?


Message édité par gougoul07 le 06-01-2012 à 18:49:48

---------------
Mieux vaut apprendre à un homme à pêcher avant de l'avoir tué.
n°3022344
gougoul07
Bo comme un dieu
Posté le 06-01-2012 à 18:48:51  profilanswer
 

=INDIRECT($A$1&LIGNE() ) si tu met en a1 Feuil2!$a
 
puisque le indirect te donne une référence absolue, a toi de la faire évoluer en limitant cette référence.
 
et selon tes besoins DECALER répond peut être ?


---------------
Mieux vaut apprendre à un homme à pêcher avant de l'avoir tué.
mood
Publicité
Posté le 06-01-2012 à 18:48:51  profilanswer
 

n°3022345
SuppotDeSa​Tante
Aka dje69r
Posté le 06-01-2012 à 18:54:42  profilanswer
 

Si je te donne un exemple en citant ton fichier c'est que je l'ai ouvert pour traiter ta demande.

 

Ou alors une formule matricielle peut etre pour eviter de tirer B1 jusqu'en bas. Mais faut expliquer ce que tu veux concretement.
La ce que je t'ai donné, en tirant B1 de Feuil1 jusqu'en bas, il recupere ce qu'il y a dans Feuil2 en colonne A puisqu'en A1 de Feuil1 tu as "Feuil2!A"
Explique ce que tu veux concretement (bis)

 

Edit : rien ou presque n'est impossible sous Excel. Un 'pro' qui te dit que c'est pas faisable... Hum... Dans le pire des cas, si ta demande est explicite, infaisable en formule il y a toujours le VBA...


Message édité par SuppotDeSaTante le 06-01-2012 à 18:57:20

---------------
Soyez malin, louez entre voisins !
n°3022346
gougoul07
Bo comme un dieu
Posté le 06-01-2012 à 18:57:39  profilanswer
 

quel andouille je suis

 

puisque je donne exactement la même solution que toi sans l’avoir lue ....

 

ce que n'as pas fait xilllium a vue de nez puisque ca marche .......

 

+1 pour le rien d'impossible, et des pros y'en a ......


Message édité par gougoul07 le 06-01-2012 à 18:58:20

---------------
Mieux vaut apprendre à un homme à pêcher avant de l'avoir tué.
n°3022347
xilllium
Posté le 06-01-2012 à 18:58:30  profilanswer
 

Edit :
 
Ca ne fonctionne pas du tout avec la première méthode, mais ça fonctionne parfaitement avec la deuxième. Me reste plus qu'à me pencher sur le sujet pour comprendre. Donc merci à toi pour ton aide, et je vais apprendre un truc à un "expert" en plus.

n°3022348
gougoul07
Bo comme un dieu
Posté le 06-01-2012 à 19:00:24  profilanswer
 

tu as donc lu trop vite ...
moi aussi car je ne vois pas tes zexcuse :D :o


---------------
Mieux vaut apprendre à un homme à pêcher avant de l'avoir tué.
n°3022349
xilllium
Posté le 06-01-2012 à 19:06:49  profilanswer
 

Quand j'ai répondu que ça ne fonctionnait pas, j'ai répondu par rapport à sa première réponse car dans son deuxième message il a dit "Ma solution fonctionne, tu n'avais qu'a tirer les cellules A1 et B1 jusqu'en bas.". Ensuite j'ai posté, ivre de colère (joke inside). Et enfin j'ai testé sa deuxième solution, et ça a marché. Donc j'ai pris la peine de revenir sur le forum pour remercier un travail bien fait, et du temps passé gratuitement. En ce sens, je ne vois pas de quoi m'excuser, mais je le fais le plus platement du monde si tu préfères ça à ma reconnaissance ;-)


Message édité par xilllium le 06-01-2012 à 19:07:39
n°3022350
gougoul07
Bo comme un dieu
Posté le 06-01-2012 à 19:08:21  profilanswer
 

tu oublie le 3eme message ;)
 
 


---------------
Mieux vaut apprendre à un homme à pêcher avant de l'avoir tué.
n°3022351
xilllium
Posté le 06-01-2012 à 19:12:38  profilanswer
 

Son troisième message ? C'est un smiley avilissant pour tout un peuple. Dois-je encore préciser le ton avec lequel je m'exprime ?

n°3022352
gougoul07
Bo comme un dieu
Posté le 06-01-2012 à 19:15:29  profilanswer
 

TON 3eme, mais cessons la
2 personnes on trouvé une solution, tu as commencé a prendre de haut, peut être sans le vouloir, mais un petit excuse moi si j'ai paru sec, je ne le voulais pas etc etc la tu continue
 
fin du hs pour moua bye


---------------
Mieux vaut apprendre à un homme à pêcher avant de l'avoir tué.
n°3022353
xilllium
Posté le 06-01-2012 à 19:17:34  profilanswer
 

Et :
"C'est un peu les bases de la manipulation d'Excel hein..."  
C'est prendre de bas ? Bref, encore merci, @tte

n°3022355
gougoul07
Bo comme un dieu
Posté le 06-01-2012 à 19:18:36  profilanswer
 

c'est a ton nivo de reponse


---------------
Mieux vaut apprendre à un homme à pêcher avant de l'avoir tué.
n°3022356
SuppotDeSa​Tante
Aka dje69r
Posté le 06-01-2012 à 19:22:47  profilanswer
 

Avec la 1ere methode il faut tirer en bas les deux cellules A1 ET B1 de Feuil1 et ca marche aussi.
Mais moins pratique je l'avoue.
 
Indirect() va convertir du texte saisi dans une cellule en une REFERENCE de cellule géré par Excel.
Donc si tu mets Indirect("Feuil1!A1" ), comme il y a des guillemets c'est du texte, et Excel interprete qu'il doit pointer (donc recuperer la valeur) de A1 sur la Feuil1.
Exactement de la meme maniere avec Indirect(A1)
Il n'y a pas de guillemets, donc A1 est une reference a une cellule. Excel va donc pointer (recuperer la valeur) sur A1. Il recupere la valeur Texte. Puis avec Indirect, cette valeur texte va etre interpreter coe une reference.
 
 
Ligne() est une fonction toute conne qui recupere le numero de ligne de la reference pasee en parametre.
Donc Ligne(A1) renvoi 1, Ligne(A5) renvoi 5 etc.
 
 
Concatener. Ca veut dire "coller" de valeur Texte a la suite.
="To" & "to" renvoi Toto.
Pour concatener il existe la fonction Concatener(), mais le "&" est plus facile/pratique.
 
 
 
Donc si en A1 de la Feuil1 on saisi : Feuil2!A
En B1 : =Indirect($A$1 & Ligne(A1))
ici Ligne(A1) renvoi 1, mais quand tu tireras la formule en B2, le Ligne(A1) se transformera en Ligne(A2) et renverra donc 2.
Ca voudrait dire qu'on se retrouve avec cette expression en B2 :
=Indirect($A$1 & "2" )
Ensuite $A$1 vu qu'il y a les dollars renverra TOUJOURS ce qu'il y a en A1, c'est a dire : Feuil2!A
On se retrouve donc avec cette expression :
=Indirect("Feuil2!A" & "2" )
La concatenation (le "&" ) permet avec "Feuil2!A" & "2" de se retrouver avec cette expression "Feuil2!A2"
Et donc Indirect("Feuil2!A2" ) renvoi ce qu'il y a en A2 de la Feuil!2
 
Je peux pas plus clair ce soir ;)
 
 
 
 
Edit : bon comme je me suis fait chier a ecrire je le laisse ca servira surement a d'autre.
Pour ta gouverne, le :jap: est un "merci" donc tout le contraire de ce que tu penses.
Ensuite, ma reflexion sur les bases est d'une entre parentheses et de deux suivie de :whistle: Je ne sais pas comment tu interpretes ce smiley, mais il est plus sympa que pejoratif.
Bref, j'en ai terminé avec ce post.


---------------
Soyez malin, louez entre voisins !
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Fonction INDIRECT() Excel 2007

 

Sujets relatifs
Pb d'autorisation Calendrier Outlook 2007Microsoft outlook professional 2007
Ciel GestCom Evolution 9.1 "Fonction non implémentée"Word 2007: curseur qui déconne sévère...
Outlook 2007Aide sur fonction recherche thunderbird
Comment récupérer les données d'une carte SD avec Excel ?[Excel 2011 - Version MAC] Format k€ impossible
Besoin d'aide pour realiser une fonction sur excel 
Plus de sujets relatifs à : Fonction INDIRECT() Excel 2007


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR