Comprendre une formule

coyote06

XLDnaute Junior
Bonsoir à tous et toutes !
Je cherche a comprendre cette formule :
DECALER($A$2;F$1+LIGNES(F$2:F2)-2-(F$1+(LIGNES(F$2:F2)-2)>14)*15;)
Cette formule vient de monique .
Je vous joint également le fichier ou je l'ai pris.
Si quelqu'un pouvait m'éclairer merci par avance.

Je cherche aussi a savoir comment l'on peux faire varier la cellule de ref qui permet a la fonction decaler de fonctionner.
Encore merci de votre aide
 

Pièces jointes

  • ExempleGillesV3.zip
    26.5 KB · Affichages: 86
  • ExempleGillesV3.zip
    26.5 KB · Affichages: 85
  • ExempleGillesV3.zip
    26.5 KB · Affichages: 82

hoerwind

XLDnaute Barbatruc
Re : Comprendre une formule

Bonjour,

Essai d'explication :

L'objet de la formule :
Ecrire une seule formule, pouvant être copiée vers le bas et vers la droite dans le tableau E2:p16, qui renvoie en boucle les valeurs de A2:A16 en les décalant d'une ligne (A2, A3, A4, ...) à chaque changement de ligne et de colonne dans le tableau.
En boucle, c'est à dire qu'après la valeur de A16 on reprend les valeurs de A2, A3, A4, ...

La formule :
=DECALER($A$2;E$1+LIGNES(E$2:E2)-2-(E$1+(LIGNES(E$2:E2)-2)>14)*15; )

La fonction :
=DECALER(réf;lignes;colonnes;[hauteur];[largeur])
Les deux derniers arguments (hauteur et largeur) sont facultatifs et ne sont pas employés sous la formule
réf : $A$2 → la cellule à partir de laquelle le décalage est effectué
lignes : E$1+LIGNES(E$2:E2)-2-(E$1+(LIGNES(E$2:E2)-2)>14)*15 → voir explication ci-dessous
colonnes : ; ) (sans l'espace) → rien, par défaut Excel l'interprète comme étant égal à 0.

E$1+LIGNES(E$2:E2)-2
E$1 : =1 (voir format de la cellule : "Ch. n°"0)
ne s'incrémente pas en copiant vers le bas, mais bien en copiant vers la droite (F$1=2)
LIGNES(E$2:E2) : =1
s'incrémente en copiant vers le bas (LIGNES(E$2:E3)=2), mais pas en copiant vers la droite (LIGNES(F$2:F2)=1)
En additionnant ces deux valeurs on obtient 2 en E2, ... , 4 en F3, ...
-2 : en E2 il faut obtenir 0 (on décale A2 de 0 lignes pour renvoyer "aaa"), il faut donc soustraire 2 pour obtenir le résultat.
En replaçant dans la formule globale A$2 par C$2 c'est plus parlant.

-(E$1+(LIGNES(E$2:E2)-2)>14)
Lorsque le résultat obtenu est <=14 cette partie de formule renvoie FAUX ou 0 et la multiplication renvoie 0, lorsqu'elle est >14 elle renvoie VRAI ou 1 et la multiplication renvoie 15, à soustraire, donc en recommence à renvoyer la valeur de A2.
Cette partie de formule aurait pu être écrite comme suit :
-(E$1+(LIGNES(E$2:E2))>16)


J'espère avoir été clair dans mon explication.
 

coyote06

XLDnaute Junior
Re : Comprendre une formule

Salut Hoerwind,
J'ai imprimé ta réponse afin de mieux la comprendre et y travailler dessus
Encore merci !

Mais une petite question sur decaler.
Peux t'on faire vairier la ref dans decaler
Exemple
Si la valeur de la cellule est X alors le decalage part de la valeur X ?
 

hoerwind

XLDnaute Barbatruc
Re : Comprendre une formule

Re,

La cellule qui sert de référence à la fonction DECALER() n'a pas d'importance, il suffit d'en tenir compte lors de l'écriture de la formule.
D'habitude on prend une cellule située plus haut et plus à gauche que le tableau dans lequel on fait la recherche, ceci pour ne pas avoir des décalages négatifs.

Par exemple, dans la formule pour laquelle tu demandais une explication la cellule de référence aurait pu être $A$1.
Ce serait d'ailleurs un très bon exercice pour mieux comprendre le fonctionnement de cette fonction.
 

CISCO

XLDnaute Barbatruc
Re : Comprendre une formule

Bonjour à tous, bonjour Hoerwind, bonjour Coyote06

Si la valeur de la cellule est X alors le decalage part de la valeur X ?

La cellule de reférence peut très bien être le résultat d'une formule. Conclusion : excel peut faire ce que tu demandes. Exemple :
DECALER(CHOISIR(........);lignes;colonnes;[hauteur];[largeur])

Si tu as des difficultés pour obtenir ce que tu veux, le plus simple serait que tu mettes un exemple sans données confidentielles en pièce jointe.

@ plus
 

coyote06

XLDnaute Junior
Re : Comprendre une formule

Me revoilà,une vilaine petite bête etait dans mon ordi...
Salut CISCO et vous tous .
Je cherche améliorer un tableau un peu "tiré par les cheveux !!"
J'ai un tableau sur la feuil1 qui indique:
En A :un chiffre en fonction des jours (5 si jrs férié;1 sam;2 dim;et 4 si sam férié)
En B :le mois;en C les jrs fériés et Wk( Spécifique à nous !!!!)
En D :Les types de service en fonction du jrs
En E /ma formule calcule la rotation qui est defini (voir feuil tab)
En F reprend la valeur de E si Jrs fériés afin de permetre à la formule qui se trouve en E de fonctionner.
Et enfin en G reprend les données de E et F et les transforment afin que cela soit plus clair .
C'est le tableau définir ! OUF
J'espére que vous arrivez à me suivre car moi parfois je m'y perd un peu...
Ce tableau doit comporter 16 postes.
Aussi je pensais avec la formule Decaler trouver quelque chose de plus simple
 

Pièces jointes

  • Rot.zip
    14.8 KB · Affichages: 54

Statistiques des forums

Discussions
312 414
Messages
2 088 225
Membres
103 773
dernier inscrit
Palekor