English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
Toutes les catégories

J'ai des cellules qui contiennent des noms
ces noms correspondent à des noms de feuilles du même classeur
je voudrais utiliser ces noms pour faire référence à la feuille qui convient
exemple:
la cellule A1 contient "toto" et je voudrais dans la cellule A2 faire référence à la cellule B1 de la feuille "toto"

Merci d'avance
(et si vous connaissez un site avec des explications sur ce genre de choses je suis preneur)

2007-02-21 21:28:38 · 7 réponses · demandé par machin 2 dans Informatique et internet Programmation

j'essaie d'éclaircir:

je trouve le résultat en tapant : ='toto'!B1

mais je voudrais que la valeur "toto" soit dynamique, résultant de la valeur de la cellule A1. comme ça si je tape "titi" dans la cellule A1 on ira chercher pour A2 automatiquement dans la feuille "titi" sans avoir à modifier la formule.
J'espère avoir été + clair ...

2007-02-21 21:42:41 · update #1

7 réponses

Ma solution est bonne mais celle d'Idefix est conforme à ta demande.

Bonjour,

Avec une macro, tu peux générer la bonne formule dans la cellule.
Voici le code doccumenté sous Excel 2003

Sub test()
Rem se positionne dans la cellule B1 de feuil1
Worksheets("feuil1").Range("B1").Activate
Rem se positionne dans la cellule à gauche
ActiveCell.Offset(0, -1).Activate
Rem récupère le nom de la feuille
nom_feuille$ = ActiveCell.Value
Rem revient dans la cellule à écrire
ActiveCell.Offset(0, 1).Activate
Rem génère la formule
ActiveCell.Value = "=" + nom_feuille$ + "!B1"
End Sub

D'accord, le résultat n'apparaît pas aussitôt la saisie du nom de la feuille mais si tu associes la macro à un bouton sur la barre d'outils ou à un raccourcis clavier c'est très rapide et facile.

André

2007-02-21 22:40:07 · answer #1 · answered by Anonymous · 3 0

le problème auquel tu fais face est un problème de type de données :
les références de cellules sont de type Range (référence ou étendue en anglais) alors que le contenu des cellules et notamment le nom de la feuille "toto" est du type texte. Il faut donc utiliser une ou plusieurs fonctions qui permettront de traduire le texte en Range et ensuite pointer vers cette référence pour que ta formule retourne le contenu de la cellule que tu veux située sur la feuille que tu veux. C'est ce que je te propose de faire au moyen des fonctions adresse et indirect. Adresse se charge de traduire du texte en référence et indirect() se charge de renvoyer le contenu de la référence traduite par adresse().
place le nombre 100 en toto!B1
dans A1 : toto
dans A2 : =INDIRECT(ADRESSE(1;2;;;A1))
dans l'exemple ci dessus la fonction adresse traduit la référence de la cellule B1 de la feuille toto et retourne toto!$B$1
la fonction indirect() comprend qu'il s'agit d'une référence à une cellule et retourne son contenu soit 100 dans mon exemple.

2007-02-23 12:28:19 · answer #2 · answered by Anonymous · 2 0

J'ai essayé, je n'y arrive pas non plus.
La seule méthode reste de créer une macro en auto exécution dont voici le code :

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
A = Range("A1").Value
Range("A2").FormulaLocal = "=" & A & "!A1"
End Sub

Ce code est à coller sur le module Worksheet et non dans un module de code.

En cas de soucis, envoies moi un mail

2007-02-22 07:30:13 · answer #3 · answered by Anonymous · 1 0

la cellule A2 doit être "=toto!B1" sans les guillemets.
Si tu veux que ça fasse réference à la feuille qui est nommé dans la cellule A1 de la feuille en cours, ce n'est pas possible.

2007-02-22 06:01:51 · answer #4 · answered by Le_Zouave 7 · 0 1

Dans A2, tu tapes "=" puis tu vas dans ta feuille toto, tu cliques sur B1 puis Entrée.

2007-02-22 05:35:31 · answer #5 · answered by Bluedks 6 · 1 2

j'ai pas trop compris mais je crois que c'est la fonction "recherchev" dont tu parles...
si tu n'as pas de reponse, ecris moi.

2007-02-22 05:34:21 · answer #6 · answered by A mort YahooQR ! 3 · 0 1

Dans la cellule A2 tu rentres :
=toto!B1 toto étant le nom de la feuille excel

2007-02-22 05:45:57 · answer #7 · answered by Zorglub 6 · 0 3

fedest.com, questions and answers