Supposons que vous ayez un classeur avec trois feuilles de calcul, Sheet1, Sheet2 et Sheet3. Dans la colonne A1 de la feuille de calcul Sheet2, vous avez la formule = Sheet1! A1. Lorsque vous copiez cette formule de Sheet2 vers la cellule A1 de Sheet3, la formule fait toujours référence à Sheet1. Mais comment est-ce possible? Pourquoi Excel n’ajuste-t-il pas la référence de feuille, comme il le fait pour les références de cellule?

Comme les plages nommées, Excel traite les noms de feuille de calcul comme absolus. Chaque objet de feuille de calcul est indépendant de toutes les autres feuilles de calcul du classeur.

Lorsque vous collez une formule qui inclut une référence de feuille, cette référence de feuille reste inchangée dans ce qui est collé.

Il y a quelques choses que vous pouvez faire. La première consiste simplement à modifier la référence de formule une fois qu’elle a été collée afin qu’elle fasse référence à la feuille correcte. Si vous en avez beaucoup à modifier, vous pouvez sélectionner toutes les formules dans la feuille de calcul cible (F5 | Spécial | Formules), puis utiliser Rechercher et remplacer pour remplacer le nom de la feuille de calcul d’origine (Feuille1)

avec le nom correct de la feuille de calcul (Sheet2).

Si vos besoins de référencement ne sont pas complexes, vous pouvez utiliser une approche macro. Par exemple, si vous souhaitez qu’une formule dans une cellule particulière fasse référence à une cellule de la feuille précédente à la feuille actuelle, vous pouvez le faire par macro assez facilement. Considérez la macro suivante:

Function PrevSheet(rCell As Range)

Application.Volatile     Dim i As Integer     i = rCell.Cells(1).Parent.Index     PrevSheet = Sheets(i - 1).Range(rCell.Address)

End Function

La macro examine la feuille de calcul actuelle, puis détermine quelle feuille de calcul se trouve devant elle. La référence est alors faite pour cette feuille de calcul.

Une fois que vous avez créé la macro PrevSheet, voici une façon dont la fonction peut être utilisée dans une cellule:

=PrevSheet(A1)

Cela renvoie la valeur de la cellule A1 de la feuille de calcul précédente. Si vous avez Sheet1, Sheet2 et Sheet3 et que vous utilisez cette formule sur Sheet3, elle renvoie la valeur de Sheet2! A1. Si la feuille précédente est la première feuille du classeur ou si ce n’est pas une feuille de calcul, la fonction renvoie une erreur #Value.

Si vous copiez plus tard cette formule dans une feuille différente (par exemple dans la feuille 5), elle extrait la valeur par rapport à son nouvel emplacement, ce qui signifie qu’elle extrait la valeur de Sheet4! A1.

Vous pouvez également inclure un nom de feuille et la fonction fonctionnera très bien:

=PrevSheet(Sheet3!A5)

Cette version renverra toujours Sheet2! A5 puisque sheet2 est la feuille précédente de Sheet3.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (3088) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

lien: / excelribbon-Relative_Worksheet_References [Relative Worksheet References].