Référence calculée

9 réponses
Avatar
Dudule
Bonjour,
J'ai un petit problème pour référencer une cellule de manière fixe, même si
on ajoute une ligne au dessus.
Je m'explique, je veux pouvoir référencer toujours dans une formule, une
cellule par exemple "C8", même si on ajoute une ligne au dessus, à ce moment
là la "C8" devient "D8" et la référence "C8" est changée dans la formule en
"D8" (même si je mets "$C$8"), alors que je veux toujours référencer "C8"
même si l'on rajoute des lignes au dessus; la notion de référence absolue en
utilisant "$C$8", ne fonctionne qu'en recopie de formule, mais pas si l'on
rajoute des lignes.
Pour cela, j'ai pensé calculer la référence à la cellule "C8", à partir de
la cellule C7+1, car C7 ne change pas, les lignes ajoutées se font toujours
après la ligne 7, et avant la ligne 8.; mais je ne sais pas comment calculer
le N° de ligne (C7+1) dans une formule...
Merci pour vos réponses.

9 réponses

Avatar
MichD
Bonjour,

Tu peux utiliser la fonction "Decaler".

Tu peux utiliser ceci DECALER($C$1;7;;;) à la place
de C8.

Si tu préfères, tu peux définir un nom (Insertion / nom / définir)
et lui attribuer la formule suivante :

Nom : Toto
Référence à : ÞCALER(C1;7;;;)

Et dans ta formule dans la feuille, tu utilises toto pour désigner la
cellule C8




MichD
---------------------------------------------------------------
"Dudule" a écrit dans le message de groupe de discussion :
512791cb$0$2274$

Bonjour,
J'ai un petit problème pour référencer une cellule de manière fixe, même si
on ajoute une ligne au dessus.
Je m'explique, je veux pouvoir référencer toujours dans une formule, une
cellule par exemple "C8", même si on ajoute une ligne au dessus, à ce moment
là la "C8" devient "D8" et la référence "C8" est changée dans la formule en
"D8" (même si je mets "$C$8"), alors que je veux toujours référencer "C8"
même si l'on rajoute des lignes au dessus; la notion de référence absolue en
utilisant "$C$8", ne fonctionne qu'en recopie de formule, mais pas si l'on
rajoute des lignes.
Pour cela, j'ai pensé calculer la référence à la cellule "C8", à partir de
la cellule C7+1, car C7 ne change pas, les lignes ajoutées se font toujours
après la ligne 7, et avant la ligne 8.; mais je ne sais pas comment calculer
le N° de ligne (C7+1) dans une formule...
Merci pour vos réponses.
Avatar
MichD
Bonjour,

Tu peux utiliser la fonction "Decaler".

Tu peux utiliser ceci DECALER($C$1;7;;;) à la place
de C8.

Si tu préfères, tu peux définir un nom
(Insertion / nom / définir)
et lui attribuer la formule suivante :

Nom : Toto
Référence à : ÞCALER(C1;7;;;)

Et dans ta formule dans la feuille, tu utilises toto
pour désigner la cellule C8




MichD
---------------------------------------------------------------
"Dudule" a écrit dans le message de groupe de discussion :
512791cb$0$2274$

Bonjour,
J'ai un petit problème pour référencer une cellule de manière fixe, même si
on ajoute une ligne au dessus.
Je m'explique, je veux pouvoir référencer toujours dans une formule, une
cellule par exemple "C8", même si on ajoute une ligne au dessus, à ce moment
là la "C8" devient "D8" et la référence "C8" est changée dans la formule en
"D8" (même si je mets "$C$8"), alors que je veux toujours référencer "C8"
même si l'on rajoute des lignes au dessus; la notion de référence absolue en
utilisant "$C$8", ne fonctionne qu'en recopie de formule, mais pas si l'on
rajoute des lignes.
Pour cela, j'ai pensé calculer la référence à la cellule "C8", à partir de
la cellule C7+1, car C7 ne change pas, les lignes ajoutées se font toujours
après la ligne 7, et avant la ligne 8.; mais je ne sais pas comment calculer
le N° de ligne (C7+1) dans une formule...
Merci pour vos réponses.
Avatar
Dudule
Super,
J'avais bien essayé DECALER, mais je n'avais pas bien compris le
fonctionnement.
Merci, formule adoptée avec $C$1 pour permettre la recopie sans changer la
formule.
Encore un grand MERCI

================================= "MichD" a écrit dans le message de groupe de discussion :
kg84og$sb1$

Bonjour,

Tu peux utiliser la fonction "Decaler".

Tu peux utiliser ceci DECALER($C$1;7;;;) à la place
de C8.

Si tu préfères, tu peux définir un nom
(Insertion / nom / définir)
et lui attribuer la formule suivante :

Nom : Toto
Référence à : ÞCALER(C1;7;;;)

Et dans ta formule dans la feuille, tu utilises toto
pour désigner la cellule C8




MichD
---------------------------------------------------------------
"Dudule" a écrit dans le message de groupe de discussion :
512791cb$0$2274$

Bonjour,
J'ai un petit problème pour référencer une cellule de manière fixe, même si
on ajoute une ligne au dessus.
Je m'explique, je veux pouvoir référencer toujours dans une formule, une
cellule par exemple "C8", même si on ajoute une ligne au dessus, à ce moment
là la "C8" devient "D8" et la référence "C8" est changée dans la formule en
"D8" (même si je mets "$C$8"), alors que je veux toujours référencer "C8"
même si l'on rajoute des lignes au dessus; la notion de référence absolue en
utilisant "$C$8", ne fonctionne qu'en recopie de formule, mais pas si l'on
rajoute des lignes.
Pour cela, j'ai pensé calculer la référence à la cellule "C8", à partir de
la cellule C7+1, car C7 ne change pas, les lignes ajoutées se font toujours
après la ligne 7, et avant la ligne 8.; mais je ne sais pas comment calculer
le N° de ligne (C7+1) dans une formule...
Merci pour vos réponses.
Avatar
Dudule
Salut,
J'ai un autre problème, associé au précédent.....;-)
En utilisant la formule "decaler", si je rajoute 6 lignes au dessus de la
ligne 7 et que je supprime 6 lignes au dessus de ces lignes ajoutées, (et
donc la référence C1 dans ta formule), la fonction "decaler" perd ses
repères (c1 est supprimée), et la formule donne #ref.
Est-il possible d'y remédier ??
J'ai essayé d'utiliser un nom avec le même problème.
J'ai essayé de référencer une autre cellule sans résultat ...
J'ai également essayé de protéger la ligne 1 (pour éviter de l'effacer), et
de déprotéger toutes les autres lignes, malheureusement il n'est plus
possible d'insérer des lignes ....
Merci pour ta réponse.

"Dudule" a écrit dans le message de groupe de discussion :
512b610d$0$16482$

Super,
J'avais bien essayé DECALER, mais je n'avais pas bien compris le
fonctionnement.
Merci, formule adoptée avec $C$1 pour permettre la recopie sans changer la
formule.
Encore un grand MERCI

================================= "MichD" a écrit dans le message de groupe de discussion :
kg84og$sb1$

Bonjour,

Tu peux utiliser la fonction "Decaler".

Tu peux utiliser ceci DECALER($C$1;7;;;) à la place
de C8.

Si tu préfères, tu peux définir un nom
(Insertion / nom / définir)
et lui attribuer la formule suivante :

Nom : Toto
Référence à : ÞCALER(C1;7;;;)

Et dans ta formule dans la feuille, tu utilises toto
pour désigner la cellule C8




MichD
---------------------------------------------------------------
"Dudule" a écrit dans le message de groupe de discussion :
512791cb$0$2274$

Bonjour,
J'ai un petit problème pour référencer une cellule de manière fixe, même si
on ajoute une ligne au dessus.
Je m'explique, je veux pouvoir référencer toujours dans une formule, une
cellule par exemple "C8", même si on ajoute une ligne au dessus, à ce moment
là la "C8" devient "D8" et la référence "C8" est changée dans la formule en
"D8" (même si je mets "$C$8"), alors que je veux toujours référencer "C8"
même si l'on rajoute des lignes au dessus; la notion de référence absolue en
utilisant "$C$8", ne fonctionne qu'en recopie de formule, mais pas si l'on
rajoute des lignes.
Pour cela, j'ai pensé calculer la référence à la cellule "C8", à partir de
la cellule C7+1, car C7 ne change pas, les lignes ajoutées se font toujours
après la ligne 7, et avant la ligne 8.; mais je ne sais pas comment calculer
le N° de ligne (C7+1) dans une formule...
Merci pour vos réponses.
Avatar
MichD
Ce n'est pas le fait d'ajouter ou de supprimer des lignes
qui posent problème, mais bien de supprimer la ligne 1
dont la cellule C1 sert de référence. En supprimant cette
ligne, que ce soit un nom ou la fonction decaler(), tu
obtiens une valeur d'erreur #REF!

Au lieu de supprimer la ligne 1, n'y a-t-il pas moyen
d'effacer seulement son contenu?




MichD
---------------------------------------------------------------
"Dudule" a écrit dans le message de groupe de discussion :
512f8f1c$0$16504$

Salut,
J'ai un autre problème, associé au précédent.....;-)
En utilisant la formule "decaler", si je rajoute 6 lignes au dessus de la
ligne 7 et que je supprime 6 lignes au dessus de ces lignes ajoutées, (et
donc la référence C1 dans ta formule), la fonction "decaler" perd ses
repères (c1 est supprimée), et la formule donne #ref.
Est-il possible d'y remédier ??
J'ai essayé d'utiliser un nom avec le même problème.
J'ai essayé de référencer une autre cellule sans résultat ...
J'ai également essayé de protéger la ligne 1 (pour éviter de l'effacer), et
de déprotéger toutes les autres lignes, malheureusement il n'est plus
possible d'insérer des lignes ....
Merci pour ta réponse.

"Dudule" a écrit dans le message de groupe de discussion :
512b610d$0$16482$

Super,
J'avais bien essayé DECALER, mais je n'avais pas bien compris le
fonctionnement.
Merci, formule adoptée avec $C$1 pour permettre la recopie sans changer la
formule.
Encore un grand MERCI

================================= "MichD" a écrit dans le message de groupe de discussion :
kg84og$sb1$

Bonjour,

Tu peux utiliser la fonction "Decaler".

Tu peux utiliser ceci DECALER($C$1;7;;;) à la place
de C8.

Si tu préfères, tu peux définir un nom
(Insertion / nom / définir)
et lui attribuer la formule suivante :

Nom : Toto
Référence à : ÞCALER(C1;7;;;)

Et dans ta formule dans la feuille, tu utilises toto
pour désigner la cellule C8




MichD
---------------------------------------------------------------
"Dudule" a écrit dans le message de groupe de discussion :
512791cb$0$2274$

Bonjour,
J'ai un petit problème pour référencer une cellule de manière fixe, même si
on ajoute une ligne au dessus.
Je m'explique, je veux pouvoir référencer toujours dans une formule, une
cellule par exemple "C8", même si on ajoute une ligne au dessus, à ce moment
là la "C8" devient "D8" et la référence "C8" est changée dans la formule en
"D8" (même si je mets "$C$8"), alors que je veux toujours référencer "C8"
même si l'on rajoute des lignes au dessus; la notion de référence absolue en
utilisant "$C$8", ne fonctionne qu'en recopie de formule, mais pas si l'on
rajoute des lignes.
Pour cela, j'ai pensé calculer la référence à la cellule "C8", à partir de
la cellule C7+1, car C7 ne change pas, les lignes ajoutées se font toujours
après la ligne 7, et avant la ligne 8.; mais je ne sais pas comment calculer
le N° de ligne (C7+1) dans une formule...
Merci pour vos réponses.
Avatar
MichD
Crée un nom avec Decaler

Exemple :
Nom : Toto
Fait référence à = Decaler($C$1;7;;;)


Et dans le module feuille où l'action se déroule,
copie ce code :
'---------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Rows(1), Target) Is Nothing Then
ThisWorkbook.Names.Add "Toto", RefersTo:="=Offset($C$1,7,,,)"
End If
End Sub
'---------------------------------------

Maintenant, tu peux supprimer toutes les lignes que tu désires!


MichD
---------------------------------------------------------------
Avatar
MichD
Dans la procédure, ceci est suffisant :

If Not Intersect(Range("C1"), Target) Is Nothing Then

en lieu et place de :

If Not Intersect(Rows(1), Target) Is Nothing Then

MichD
---------------------------------------------------------------
Avatar
Dudule
Bonjour,
Merci pour toutes ces réponses, qui apportent une autre solution,.... que je
n'ai pas encore essayé, car hier soir j'ai modifié ta formule 'decaler',
pour ne pas utilise "C1" qui est "volatile" (sujet à effacement), et je l'ai
remplacé par une cellule dans le bas de ma feuille "C200", et cela
fonctionne.
La formule devient:
ÞCALER($C$200;-193;;;)
Je ne manquerai pas de tester ta deuxième solution dès que possible.
Encore merci pour ton implication.


"MichD" a écrit dans le message de groupe de discussion :
kgof4h$t19$

Dans la procédure, ceci est suffisant :

If Not Intersect(Range("C1"), Target) Is Nothing Then

en lieu et place de :

If Not Intersect(Rows(1), Target) Is Nothing Then

MichD
---------------------------------------------------------------
Avatar
Dudule
Re-Salut,
Je viens de faire des essais avec ta dernière solution, qui est très
satisfaisante sauf que...
J'ai "Excel 2013",
-1- Qui impose d'enregistrer le fichier Excel en format *.xslm (sinon point
de VBA enregistré)
-2- A l'ouverture du fichier Excel demande si il active les macros (un clic
de plus)...
-3- Si on active les macros dans les options d'Excel, il y a risque avec
d'autres fichiers (il semble que l'on ne puisse pas activer les macros
uniquement pour un fichier donné).
Je vais continuer à voir quelle est la meilleure des deux solution...
Encore un grand merci pour ton aide.


"Dudule" a écrit dans le message de groupe de discussion :
51307001$0$2280$

Bonjour,
Merci pour toutes ces réponses, qui apportent une autre solution,.... que je
n'ai pas encore essayé, car hier soir j'ai modifié ta formule 'decaler',
pour ne pas utilise "C1" qui est "volatile" (sujet à effacement), et je l'ai
remplacé par une cellule dans le bas de ma feuille "C200", et cela
fonctionne.
La formule devient:
ÞCALER($C$200;-193;;;)
Je ne manquerai pas de tester ta deuxième solution dès que possible.
Encore merci pour ton implication.


"MichD" a écrit dans le message de groupe de discussion :
kgof4h$t19$

Dans la procédure, ceci est suffisant :

If Not Intersect(Range("C1"), Target) Is Nothing Then

en lieu et place de :

If Not Intersect(Rows(1), Target) Is Nothing Then

MichD
---------------------------------------------------------------