Fonction INDIRECT dans Excel : guide complet avec exemples
INDIRECT est l'une des rares fonctions Excel qui prend un texte et le traite comme une référence de cellule ou de plage. Ce comportement unique en fait l'outil idéal pour tout ce qui change selon une variable : un nom d'onglet choisi dans une liste, un mois sélectionné, une catégorie. Une fois qu'on découvre INDIRECT, on se demande comment on faisait sans.
🧠 Le concept en une phrase
Normalement, quand vous écrivez =A1, Excel sait exactement où aller. Mais si la référence doit changer selon une valeur dans une autre cellule, vous êtes bloqué — on ne peut pas écrire ="A"&B1 et attendre qu'Excel traite ça comme une adresse.
INDIRECT fait exactement ce pont : elle prend une chaîne de texte construite dynamiquement et l'évalue comme si vous l'aviez tapée directement comme référence.
INDIRECT transforme du texte en référence. C'est comme si vous donniez une adresse postale à Excel sous forme de phrase, et qu'il allait sonner à la bonne porte.
📐 Syntaxe
=INDIRECT(réf_en_texte; [style_L1C1])
réf_en_texte— une chaîne représentant une référence valide :"A1","Feuille2!B3","MaPlageNommée", ou une expression construite par concaténation.style_L1C1— facultatif.VRAIpour le style L1C1 (L1C1 = ligne 1 colonne 1),FAUXou omis pour le style A1 classique.
Cas 1 — Référence dynamique selon une valeur de cellule
C'est le cas de base. En B1 se trouve un numéro de ligne. On veut lire la valeur de la colonne A à cette ligne, sans que la référence soit figée.
B1 = 7
=INDIRECT("A"&B1) → lit la valeur de A7
=INDIRECT("A"&B1+1) → lit la valeur de A8
Changez B1 en 12 : la formule lit automatiquement A12. Sans toucher à la formule elle-même.
Application : tableau de bord avec ligne de référence variable
Imaginez un tableau de ventes sur 500 lignes. Une cellule (disons D1) contient le numéro de la semaine à analyser — une validation de données permet à l'utilisateur de choisir. Toutes les formules du tableau de bord utilisent INDIRECT("C"&D1), INDIRECT("D"&D1), etc. Changer D1 met à jour tout le rapport instantanément.
Cas 2 — Référencer un onglet dynamiquement
C'est le cas d'usage qui fait découvrir INDIRECT à la plupart des utilisateurs. Vous avez des feuilles nommées Janvier, Février, Mars… et une cellule A1 contient le nom du mois choisi. Comment pointer vers la bonne feuille ?
=INDIRECT("'"&A1&"'!B5")
→ la chaîne construite est : 'Janvier'!B5
→ INDIRECT lit la cellule B5 de la feuille Janvier
Si A1 = "Mars"
→ la chaîne construite est : 'Mars'!B5
→ INDIRECT lit la cellule B5 de la feuille Mars
' ? Elles sont obligatoires si le nom de la feuille contient des espaces ou des caractères spéciaux (Budget 2026, Côte d'Ivoire…). Par sécurité, mettez-les systématiquement — elles ne posent aucun problème sur les noms simples.
Exemple concret : rapport mensuel automatique
Chaque feuille du classeur représente un mois. Une feuille "Synthèse" présente les totaux. Au lieu de coder en dur Janvier!B5, Février!B5, etc. sur 12 lignes, une seule formule suffit :
A2:A13 = liste des mois (Janvier, Février, … Décembre)
B2 = =INDIRECT("'"&A2&"'!B5") → copier vers B3:B13
Ajoutez un onglet "Décembre" en cours d'année : la formule le lira automatiquement dès que "Décembre" apparaît en A13.
Cas 3 — Listes déroulantes en cascade (le grand classique)
C'est le cas d'usage star d'INDIRECT. Objectif : quand l'utilisateur choisit "Fruits" dans une première liste, la deuxième liste affiche uniquement les fruits. Quand il choisit "Légumes", elle affiche les légumes.
Étape par étape
-
Créez vos listes de valeurs dans des colonnes séparées :
Colonne D : Pomme, Poire, Cerise, Fraise Colonne E : Carotte, Poireau, Courgette Colonne F : Bœuf, Poulet, Agneau -
Nommez chaque plage en reprenant exactement le nom de la catégorie :
Sélectionnez D1:D4 → Formules → Définir un nom → tapezFruits
Faites de même pour E1:E3 →Légumeset F1:F3 →Viandes -
Première liste déroulante en A2 :
Données → Validation → Liste → source :Fruits;Légumes;Viandes -
Deuxième liste déroulante en B2 :
Données → Validation → Liste → source :=INDIRECT(A2)
Quand A2 change, INDIRECT résout le nom de plage correspondant et la deuxième liste se met à jour automatiquement. Pas de VBA, pas de macro, pas de formule complexe — juste INDIRECT et des plages nommées.
#REF!. Utilisez =INDIRECT(SUPPRESPACE(A2)) pour vous protéger.
Cas 4 — Consolider des données sur plusieurs feuilles
Vous avez 12 feuilles mensuelles et vous voulez additionner la cellule B5 de chacune dans une synthèse. Sans INDIRECT, il faut écrire manuellement =Janvier!B5+Février!B5+…. Avec INDIRECT :
A2:A13 = Janvier, Février, … Décembre
=SOMME(INDIRECT("'"&A2:A13&"'!B5"))
En Excel 365, cette formule fonctionne directement (matriciel implicite). En Excel 2019 et antérieur, validez avec Ctrl+Maj+Entrée pour en faire une formule matricielle.
=Janvier!B5
+Février!B5
+Mars!B5
+Avril!B5
… (×12)
=SOMME(INDIRECT(
"'"&A2:A13&"'!B5"
))
Cas 5 — Gel de référence sans signe $
Situation inhabituelle mais réelle : vous copiez une formule vers le bas mais vous voulez qu'elle pointe toujours vers A1, sans mettre $A$1. INDIRECT le permet :
=INDIRECT("A1") → restera A1 quelle que soit la ligne où la formule est copiée
C'est un usage rare, mais utile dans certains tableaux de bord où les $ posent des problèmes de lisibilité ou de compatibilité avec des noms dynamiques.
Cas 6 — Combiné à RECHERCHEX pour des recherches multi-feuilles
Vous avez plusieurs feuilles régionales (Nord, Sud, Est, Ouest) et une cellule B1 permet de choisir la région. Pour chercher le chiffre d'affaires d'un commercial dans la bonne feuille :
=RECHERCHEX(
A2;
INDIRECT("'"&B1&"'!A:A");
INDIRECT("'"&B1&"'!C:C");
"Non trouvé"
)
Changez B1 de "Nord" à "Sud" : RECHERCHEX cherche automatiquement dans la feuille Sud. Une seule formule couvre toutes les régions.
⚠️ Les pièges d'INDIRECT
1. INDIRECT est volatile
Une fonction volatile se recalcule à chaque modification du classeur, même si ses arguments n'ont pas changé. INDIRECT en fait partie, avec DECALER, ALEA et MAINTENANT.
Conséquence : sur un fichier avec des centaines de formules INDIRECT, chaque frappe au clavier déclenche un recalcul complet. Les fichiers deviennent lents, parfois inutilisables.
Règle : n'utilisez INDIRECT que quand aucune alternative non-volatile ne couvre le besoin. Sur les petits fichiers, le problème est imperceptible. Sur 50 000 lignes, c'est rédhibitoire.
2. Les outils d'audit ne suivent pas INDIRECT
Formules → Repérer les antécédents et Repérer les dépendants ne traversent pas INDIRECT. La dépendance entre cellules est invisible dans le graphe d'audit. Si vous héritez d'un classeur rempli d'INDIRECT, démêler les liaisons est très difficile.
3. Classeurs fermés non supportés
Si vous référencez une feuille d'un autre classeur via INDIRECT, ce classeur doit être ouvert. INDIRECT ne sait pas aller chercher dans un fichier fermé. Résultat : #REF! dès que l'autre fichier est fermé.
4. Erreurs fréquentes
| Erreur | Cause probable | Correction |
|---|---|---|
#REF! |
La chaîne ne correspond à aucune référence valide | Vérifiez les apostrophes, le nom de feuille, l'orthographe |
#REF! |
Le nom de plage nommée ne correspond pas exactement | Utilisez SUPPRESPACE() autour de la cellule source |
#NOM? |
INDIRECT mal orthographié | Vérifiez la syntaxe |
| Résultat inattendu | Guillemets manquants ou mal placés dans la chaîne | Déboguez en évaluant la chaîne seule dans une cellule à part |
="'"&A1&"'!B5" affiche 'Janvier'!B5, c'est correct. Ensuite seulement, encapsulez dans INDIRECT.
⚖️ INDIRECT vs les alternatives
| Besoin | INDIRECT | Alternative non-volatile |
|---|---|---|
| Référence selon numéro de ligne | =INDIRECT("A"&B1) |
=INDEX(A:A;B1) ✅ |
| Choisir parmi 2–5 plages fixes | =INDIRECT(A1) |
=CHOISIR(A1;Plage1;Plage2) ✅ |
| Onglet dynamique | =INDIRECT("'"&A1&"'!B5") |
Pas d'équivalent simple sans VBA ⚠️ |
| Listes déroulantes en cascade | =INDIRECT(A2) |
Fonction FILTRE (365) — plus souple ✅ |
| Consolidation multi-feuilles | =SOMME(INDIRECT(…)) |
Power Query — plus robuste, non volatile ✅ |
Résumé : pour les onglets dynamiques, INDIRECT est souvent incontournable. Pour le reste, préférez INDEX, CHOISIR ou FILTRE dès que possible — ils sont plus rapides et plus faciles à auditer.
❓ FAQ : Fonction INDIRECT
INDIRECT est-elle disponible sur toutes les versions d'Excel ?
Oui. INDIRECT existe depuis Excel 97. Elle fonctionne sur toutes les versions : 2010, 2013, 2016, 2019, 2021, 365, et même LibreOffice Calc. C'est l'une de ses forces : aucun problème de compatibilité pour les fichiers partagés.
Peut-on utiliser INDIRECT avec des tableaux structurés ?
Non directement. INDIRECT ne reconnaît pas la syntaxe Tableau[Colonne]. Elle fonctionne uniquement avec des références de cellules (A1:B10) et des noms de plages définis. Pour référencer dynamiquement un tableau structuré, utilisez INDEX ou FILTRE.
Comment éviter #REF! quand le nom de la feuille contient des espaces ?
Encadrez toujours le nom de la feuille d'apostrophes simples dans la chaîne :
=INDIRECT("'"&A1&"'!B5")
Ça fonctionne aussi sur les noms sans espace — c'est la forme universelle à adopter.
INDIRECT fonctionne-t-elle dans Google Sheets ?
Oui. La syntaxe est identique. Google Sheets supporte même INDIRECT avec des références vers d'autres feuilles du même classeur, avec les mêmes guillemets et apostrophes.
Comment combiner INDIRECT et NB.SI pour compter sur un onglet variable ?
=NB.SI(INDIRECT("'"&A1&"'!B:B");"Paris")
NB.SI, SOMME.SI, SOMME.SI.ENS, MOYENNE.SI — toutes ces fonctions acceptent une plage définie par INDIRECT comme premier argument.
Peut-on référencer une plage entière avec INDIRECT (pas juste une cellule) ?
Oui. INDIRECT peut renvoyer une plage :
=SOMME(INDIRECT("A1:A10")) → additionne A1:A10
=SOMME(INDIRECT("A1:A"&B1)) → additionne A1 jusqu'à la ligne indiquée en B1
La deuxième forme est très utile pour des plages de taille variable (listes qui grandissent).
🏁 Conclusion
INDIRECT est une fonction qui divise Excel en deux périodes : avant et après. Avant, certaines références dynamiques nécessitaient du VBA ou des formules gigantesques. Avec INDIRECT, un texte construit intelligemment devient une adresse vivante.
Ses deux cas d'usage les plus précieux — les onglets dynamiques et les listes déroulantes en cascade — n'ont pas d'équivalent simple dans Excel. Pour tout le reste, gardez un œil sur ses alternatives non-volatiles (INDEX, CHOISIR, FILTRE) qui offrent les mêmes résultats sans ralentir vos fichiers.
Maîtrisez INDIRECT, et vous débloquez une classe entière de problèmes que la plupart des utilisateurs Excel considèrent comme "impossibles sans macro".
Fiche formule INDIRECT → Listes déroulantes en cascade Fonction INDEX