Fonction INDIRECT() Excel 2007

Fonction INDIRECT() Excel 2007 - Logiciels - Windows & Software

Marsh Posté le 06-01-2012 à 08:33:40    

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:

Reply

Marsh Posté le 06-01-2012 à 08:33:40   

Reply

Marsh Posté le 06-01-2012 à 14:52:00    

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 !
Reply

Marsh Posté le 06-01-2012 à 16:50:49    

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
Reply

Marsh Posté le 06-01-2012 à 16:58:16    

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


---------------
Mieux vaut apprendre à un homme à pêcher avant de l'avoir tué.
Reply

Marsh Posté le 06-01-2012 à 16:59:27    

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 !
Reply

Marsh Posté le 06-01-2012 à 17:05:57    

+152687


---------------
Mieux vaut apprendre à un homme à pêcher avant de l'avoir tué.
Reply

Marsh Posté le 06-01-2012 à 17:11:32    

Reply

Marsh Posté le 06-01-2012 à 18:13:18    

#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.

Reply

Marsh Posté le 06-01-2012 à 18:29:50    

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é.
Reply

Marsh Posté le 06-01-2012 à 18:48:51    

=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é.
Reply

Marsh Posté le 06-01-2012 à 18:48:51   

Reply

Marsh Posté le 06-01-2012 à 18:54:42    

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 !
Reply

Marsh Posté le 06-01-2012 à 18:57:39    

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é.
Reply

Marsh Posté le 06-01-2012 à 18:58:30    

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.

Reply

Marsh Posté le 06-01-2012 à 19:00:24    

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é.
Reply

Marsh Posté le 06-01-2012 à 19:06:49    

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
Reply

Marsh Posté le 06-01-2012 à 19:08:21    

tu oublie le 3eme message ;)
 
 


---------------
Mieux vaut apprendre à un homme à pêcher avant de l'avoir tué.
Reply

Marsh Posté le 06-01-2012 à 19:12:38    

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 ?

Reply

Marsh Posté le 06-01-2012 à 19:15:29    

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é.
Reply

Marsh Posté le 06-01-2012 à 19:17:34    

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

Reply

Marsh Posté le 06-01-2012 à 19:18:36    

c'est a ton nivo de reponse


---------------
Mieux vaut apprendre à un homme à pêcher avant de l'avoir tué.
Reply

Marsh Posté le 06-01-2012 à 19:22:47    

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 !
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed