INDIRECT (même nom en anglais) est la fonction qui transforme du texte en référence de cellule active. Tu lui passes une chaîne comme "Janvier!B5" et elle te renvoie la valeur qui se trouve réellement à cet endroit. C'est la clé des tableaux de bord interactifs où l'utilisateur contrôle quelles données s'affichent simplement en changeant une valeur dans une liste déroulante.
Imagine pouvoir référencer la feuille « Janvier », « Février » ou « Mars » sans jamais réécrire ta formule, juste en modifiant un menu déroulant. Ou créer des listes déroulantes en cascade sans une ligne de VBA. INDIRECT rend tout ça possible : navigation entre feuilles, sélecteurs de KPI par département, formulaires de saisie avec listes dépendantes.
Syntaxe de la fonction INDIRECT
=INDIRECT(réf_texte; [a1])Comprendre chaque paramètre de la fonction INDIRECT
Tu te demandes pourquoi écrire =INDIRECT(A2&"!B5") plutôt qu'un simple =A2 ? Tout part du premier argument, réf_texte : INDIRECT n'attend pas une cellule mais une chaîne de texte, celle que tu fabriques par concaténation (A2&"!B5") pour pointer ailleurs sans jamais retoucher la formule. Le second, a1, tu peux l'oublier (tu restes alors en style A1 classique) et ne le passer à FAUX que le jour où tu veux travailler ligne ET colonne en numérique avec le style L1C1.
réf_texte
: une chaîne de texte représentant une référence Excel valideÇa peut être "A1", "Feuil2!B5", une plage nommée "Ventes_Q1", ou une référence construite dynamiquement comme A1&"!C5" si A1 contient le nom d'une feuille.
C'est ce paramètre qui fait toute la magie d'INDIRECT : tu construis le texte de la référence avec des concaténations (&), et INDIRECT la résout en temps réel. Si la référence n'existe pas ou est mal formatée, tu obtiens #REF!.
Tu peux également utiliser des noms de plages nommées : =INDIRECT("Ventes") renvoie les valeurs de la plage nommée Ventes. C'est particulièrement utile pour des tableaux de bord où la plage à afficher change selon la sélection de l'utilisateur.
Astuce : Pour déboguer une formule INDIRECT qui renvoie #REF!, commence par vérifier la chaîne construite sans INDIRECT : =A1&"!B5" doit afficher exactement le texte de référence attendu. Si le texte est bon mais que l'erreur persiste, vérifie l'orthographe du nom de feuille (sensible à la casse) et la présence d'apostrophes pour les noms avec espaces.
a1
: détermine le style de référence utilisé(facultatif)VRAI (ou omis) utilise le style A1 classique (lettres pour les colonnes, chiffres pour les lignes). FAUX utilise le style L1C1 (Ligne 1 Colonne 1).
Le style L1C1 est utile quand tu calcules des positions numériques pour les lignes ET les colonnes : =INDIRECT("L5C3";FAUX) pointe vers la ligne 5, colonne 3 (soit la cellule C5).
Dans 99 % des cas, tu utiliseras le style A1 par défaut.
Pas envie d'écrire la formule INDIRECT à la main ?
Génère-la avec notre IAExemples pratiques pas à pas
Contrôleur de gestion : tableau de bord avec sélection de mois
Tu es contrôleur de gestion et tu as créé une feuille par mois (Janvier, Février, Mars...). Tu veux un tableau de bord qui affiche les données du mois sélectionné dans une liste déroulante, sans réécrire la formule chaque fois.
| A | B | C | |
|---|---|---|---|
| 1 | Mois sélectionné | CA Total | Formule |
| 2 | Janvier | 245 000 € | =SOMME(INDIRECT(A2&"!B2:B100")) |
| 3 | Février | 268 000 € | Même formule, résultat auto |
| 4 | Mars | 291 000 € | Même formule, résultat auto |
=SOMME(INDIRECT(A2&"!B2:B100"))La formule concatène le nom de feuille saisi en A2 avec le suffixe de plage pour bâtir la référence Janvier!B2:B100, qu'INDIRECT résout avant que SOMME en additionne les valeurs. Change A2 en « Février » via une liste déroulante (Données > Validation > Liste) et le total bascule instantanément sur la feuille Février.
Astuce de pro : Crée une liste déroulante en A2 avec les noms exacts de tes feuilles. Si un nom de feuille contient des espaces, entoure-le d'apostrophes dans la formule : =SOMME(INDIRECT("'"&A2&"'!B2:B100")). Le "'" ajoute l'apostrophe autour du nom.
Data analyst : sélecteur de KPI par département
Tu es data analyst et tu as créé des plages nommées pour chaque département (Ventes, Marketing, RH, IT). Tu veux permettre à ton manager de sélectionner un département dans une liste déroulante et voir automatiquement les KPI correspondants.
| A | B | C | |
|---|---|---|---|
| 1 | Département | KPI Principal | Configuration |
| 2 | Ventes | 1 245 000 € | Plage nommée : Ventes |
| 3 | Marketing | 85 % | Plage nommée : Marketing |
| 4 | RH | 127 | Plage nommée : RH |
| 5 | IT | 98.7 % | Plage nommée : IT |
=INDEX(INDIRECT(A2);1;1)La formule passe le texte de A2 à INDIRECT, qui le résout en plage nommée (ici Ventes), puis INDEX en extrait la première valeur. Tes plages nommées (créées via Formules > Gestionnaire de noms) doivent porter exactement les noms de la liste déroulante : change A2 et toute la vue suit.
Chef de projet : navigation multi-projets avec références croisées
Tu es chef de projet et tu gères 15 projets, chacun sur une feuille séparée. Tu veux un tableau de bord consolidé où tu sélectionnes le projet et vois instantanément le budget, l'avancement et les ressources, sans maintenir 15 formules différentes.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Projet | Budget | Avancement | Formule budget |
| 2 | Projet_Alpha | 450 000 € | 78 % | =INDIRECT(A2&"!C5") |
| 3 | Projet_Beta | 320 000 € | 45 % | Même formule |
| 4 | Projet_Gamma | 580 000 € | 92 % | Même formule |
=INDIRECT(A2&"!C5")La formule accède dynamiquement à la cellule C5 de la feuille dont le nom est saisi en A2. Le secret tient à la structure identique de toutes les feuilles projet (budget toujours en C5, avancement en C6) : il suffit ensuite de changer la référence de cellule finale pour afficher une autre donnée.
Responsable commercial : listes déroulantes en cascade sans VBA
Tu es responsable commercial et tu crées un formulaire de saisie de commande. Quand le commercial sélectionne une catégorie de produit, la seconde liste doit afficher uniquement les produits de cette catégorie. INDIRECT permet de créer ces listes en cascade sans une ligne de VBA.
| A | B | C | |
|---|---|---|---|
| 1 | Catégorie | Produit disponible | Configuration |
| 2 | Ordinateurs | Dell Latitude 5420 | Plage : Ordinateurs |
| 3 | Smartphones | iPhone 15 Pro | Plage : Smartphones |
| 4 | Tablettes | iPad Air M2 | Plage : Tablettes |
| 5 | Accessoires | Souris Logitech MX | Plage : Accessoires |
=INDIRECT(A2)La fonction résout le texte de A2 en plage nommée du même nom (Ordinateurs, Smartphones...) : utilisée comme source d'une validation de données en B2, elle fait afficher uniquement les produits de la catégorie choisie en A2. Un troisième niveau de cascade s'obtient en chaînant deux INDIRECT.
Astuces avancées avec INDIRECT
Enveloppe INDIRECT de SIERREUR pour une expérience propre
Quand la cellule source est vide ou contient un nom de feuille invalide, INDIRECT affiche #REF!. Enveloppe systématiquement avec SIERREUR : =SIERREUR(INDIRECT(A1);"Sélectionne un mois valide"). Tes utilisateurs voient un message clair au lieu d'une erreur technique.
Tu peux adapter le message selon le contexte : « Sélectionne un département », « Choisir une feuille... », etc.
Réfère une feuille à partir d'une date avec TEXTE
Pour référencer automatiquement la feuille du mois courant : =INDIRECT(TEXTE(AUJOURDHUI();"MMMM")&"!A1"). Si tes feuilles sont nommées Janvier, Février, etc., cette formule pointe toujours vers la bonne feuille sans aucune mise à jour manuelle.
Combine avec TEXTE(A1;"AAAA") pour des feuilles nommées par année dans des classeurs de reporting annuel.
Stocke les noms de feuilles dans une zone de configuration
Plutôt que d'écrire les noms de feuilles en dur dans tes formules INDIRECT, stocke-les dans une zone de configuration cachée (ou une feuille dédiée Config). Si tu renommes une feuille, tu changes juste l'entrée dans Config, et toutes tes formules INDIRECT continuent de fonctionner.
C'est un gain de temps énorme en maintenance, surtout dans les fichiers partagés avec plusieurs contributeurs.
Envie de t'entraîner sur de vrais exercices Excel ?
M'entraînerLes erreurs fréquentes avec la fonction INDIRECT
Avant de te lancer, demande-toi toujours : la chaîne que je construis correspond-elle vraiment à une feuille qui existe, écrite à l'identique ? Là où une référence directe te suit quand tu déplaces une cellule, INDIRECT prend le texte au pied de la lettre, et c'est de là que viennent l'essentiel des #REF! : un janvier qui n'est pas Janvier, des apostrophes oubliées autour d'un nom à espaces, un classeur source resté fermé, ou des guillemets et & mal placés (A1&"!B5", pas l'inverse). Et si ton fichier rame, souviens-toi qu'INDIRECT est volatile : elle recalcule à chaque frappe.
#REF! : référence invalide ou feuille inexistante
La chaîne de texte ne correspond pas à une référence valide : nom de feuille mal orthographié (la casse compte : « janvier » n'est pas « Janvier »), feuille supprimée ou renommée, classeur source fermé, ou apostrophes manquantes pour les noms de feuilles avec espaces.
Solution : Commence par tester la chaîne construite sans INDIRECT pour vérifier qu'elle produit le bon texte. Utilise des apostrophes autour des noms de feuilles avec espaces : =INDIRECT("'Ma Feuille'!A1"). Assure-toi que toutes les feuilles référencées existent dans le classeur ouvert.
Guillemets ou esperluette incorrects dans la construction du texte
La concaténation nécessite des guillemets doubles autour du texte fixe et une esperluette & pour joindre les références de cellules. Confondre les deux génère une erreur de syntaxe qu'Excel refuse.
Solution : Formule correcte : =INDIRECT(A1&"!B5"). Le texte "!B5" est entre guillemets, séparé par & de la référence A1. Si tu combines plusieurs éléments : =INDIRECT(A1&"!"&B1) où A1 contient le nom de feuille et B1 l'adresse de cellule.
Noms de feuilles avec apostrophes ou caractères spéciaux
Si le nom de ta feuille contient une apostrophe (comme L'équipe), des crochets ou des caractères spéciaux, INDIRECT a besoin d'un échappement spécifique que la plupart des utilisateurs ne connaissent pas.
Solution : Pour une feuille nommée L'équipe, utilise deux apostrophes successives pour l'apostrophe interne : =INDIRECT("'L''équipe'!A1"). Les apostrophes extérieures délimitent le nom de feuille, les deux apostrophes intérieures représentent une seule apostrophe littérale.
Confusion entre INDIRECT et les références absolues ($)
INDIRECT ne sert pas à « fixer » une référence lors de la copie d'une formule. C'est le rôle des $ (références absolues). Utiliser INDIRECT à cette fin est plus lent et plus complexe sans aucun bénéfice.
Solution : Si tu veux fixer une référence lors d'une copie, utilise =$A$1. Utilise INDIRECT uniquement quand tu veux que la référence change selon le contenu d'une cellule ou une construction de texte. Ce sont deux mécanismes qui résolvent des problèmes différents.
Fichier qui ralentit avec de nombreuses formules INDIRECT
INDIRECT est volatile : elle recalcule à chaque modification de la feuille. Dans un fichier avec plusieurs centaines de formules INDIRECT, chaque frappe au clavier déclenche autant de recalculs.
Solution : Réserve INDIRECT aux vrais besoins de dynamique. Pour des références qui ne changent pas souvent, utilise des références directes ou INDEX qui ne sont pas volatiles. Si ton fichier rame, passe en calcul manuel (Formules > Options de calcul > Manuel) et déclenche les calculs avec F9.
Tu cherches surtout à corriger l'erreur #REF! affichée dans ta cellule, sans passer par la fonction INDIRECT ? Consulte la fiche dédiée à l'erreur #REF! pour comprendre toutes ses causes et comment la corriger.
INDIRECT vs ADRESSE vs DECALER vs INDEX
« Je veux que ma formule pointe ailleurs selon une sélection, je prends laquelle ? » Tout dépend de ce que tu lui donnes en entrée : INDIRECT est la seule à partir d'un texte que tu fabriques (Janvier!B5) pour te renvoyer la valeur, parfaite pour un dashboard où l'utilisateur choisit la feuille dans une liste déroulante. Si tu veux juste produire un texte d'adresse comme $C$5, c'est ADRESSE ; pour faire glisser ou grandir une plage, c'est DECALER ; et dès que la dynamique n'est pas le sujet, préfère INDEX, non volatile, plus rapide et seul à lire encore un classeur fermé.
| Critère | INDIRECT | ADRESSE | DECALER | INDEX |
|---|---|---|---|---|
| Entrée principale | Texte représentant une référence | Numéros de ligne et colonne | Référence + décalage numérique | Plage + position |
| Résultat | Valeur de la cellule référencée | Texte d'adresse ($C$5) | Référence décalée (ou plage) | Valeur extraite |
| Volatile | ✅ Oui | ❌ Non | ✅ Oui | ❌ Non |
| Classeurs fermés | ❌ Non (#REF!) | ⚠️ Retourne un texte seulement | ❌ Non | ✅ Oui (références directes) |
| Plages redimensionnables | ⚠️ Non directement | ❌ Non | ✅ Oui | ❌ Non |
| Cas d'usage principal | Dashboards avec sélection de feuille | Construire des textes d'adresse | Plages dynamiques, graphiques | Recherches rapides et performantes |
Questions fréquentes sur la fonction INDIRECT
Pourquoi INDIRECT retourne #REF! alors que la référence semble correcte ?
INDIRECT est sensible à la casse pour les noms de feuilles : Janvier et janvier sont deux feuilles différentes. Vérifie aussi que la feuille existe dans le classeur et qu'elle est ouverte (INDIRECT ne fonctionne pas avec les classeurs fermés).
Si le nom de feuille contient des espaces, encadre-le d'apostrophes : "'Feuille 1'!A1". Sans apostrophes, tu obtiens #REF! même si la feuille existe.
Quelle est la différence entre INDIRECT(A1) et simplement =A1 ?
=A1 crée une référence directe qui se met à jour automatiquement si tu déplaces des cellules. =INDIRECT(A1) lit le texte dans A1 et l'interprète comme adresse, créant une référence basée sur le contenu de A1, pas sa position.
Si A1 contient le texte "B5", =INDIRECT(A1) renvoie le contenu de B5. Si tu déplaces B5, la formule ne suit pas : elle continue à chercher ce qu'il y a en B5.
INDIRECT fonctionne-t-elle avec des classeurs fermés ?
Non. INDIRECT renvoie #REF! si le classeur source n'est pas ouvert. C'est une limitation importante qui la distingue des références directes entre classeurs.
Pour travailler avec des fichiers fermés, utilise des références directes (=[Classeur.xlsx]Feuil1!A1) ou des requêtes Power Query, qui peuvent lire des fichiers externes sans les ouvrir.
Comment utiliser INDIRECT avec des listes déroulantes dynamiques ?
Crée une validation de données en source =INDIRECT(A1), où A1 contient le nom d'une plage nommée. Quand A1 change, la liste déroulante affiche automatiquement les valeurs de la nouvelle plage.
C'est la technique classique pour des listes en cascade : choisir un pays en A1 met à jour la liste de villes en B1, choisir une région met à jour la liste de départements, etc. Tout sans VBA.
Quel est l'impact de INDIRECT sur les performances Excel ?
INDIRECT est volatile : elle recalcule à chaque modification de la feuille, même si les données référencées n'ont pas changé. Dans les fichiers avec des centaines de formules INDIRECT, cela peut ralentir Excel de manière perceptible.
Limite son usage aux vrais besoins de dynamique. Pour des références qui ne changent pas souvent, INDEX ou les références directes sont beaucoup plus performants.
Pour aller plus loin
Bloqué sur une formule Excel ?
Pose ta question à notre assistant Excel IA, il te sort la bonne formule en quelques secondes.
Essayer l'assistant IAGratuit · 10 questions par mois

