IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

[Formules] Décalage vertical et horizontal


Sujet :

Excel

  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Points : 324
    Points
    324
    Par défaut [Formules] Décalage vertical et horizontal
    Bonjour,

    je vous sollicite pour un problème qui me tient en échec...

    Voila, je pars d'un fichier où les colonnes représentent des années et les lignes un nombre d'années. J'ai une liste de valeurs à l'intérieur de celles-ci.
    Je voudrais appliquer un décalage différent suivant l'année de départ, je mets donc ces nombres dans un tableau de paramètres.

    Dans mon tableau d'arrivée, j'aimerais donc obtenir les données décalées, à la fois en ligne et en colonne (exemple : on a une valeur 'a' pour 2006 et un nombre d'années de 1. Je souhaite décaler ce 'a' de 3 années. Il devra donc se trouver en 2009 et au nombre d'année 4.)

    J'avais fait quelque chose qui me semblait bien avec des recherchev mais en regardant les résultats qui n'étaient pas ceux escomptés, je me suis aperçu que je partais de l'année d'arrivée pour effectuer le décalage donc ce n'est pas ce que je veux...

    Si quelqu'un peut m'aider, je joins un fichier pour expliquer plus clairment ce que je souhaite.

    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti Avatar de Tdeny
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 287
    Points : 311
    Points
    311
    Par défaut
    Bonjour,

    Tu peux faire ça avec les adresses de cellules.
    Pour le 1er a, la 1ère serie en lignes même, c'est la même formule :

    =INDIRECT(ADRESSE(LIGNE()-13;COLONNE()-1;1;1))

    ADRESSE(no_lig;no_col;no_abs;a1;feuille_texte)

    no_lig est le numéro de la ligne à utiliser dans la référence de cellule.

    no_col est le numéro de la colonne à utiliser dans la référence de cellule.

    no_abs spécifie le type de référence à renvoyer.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Points : 324
    Points
    324
    Par défaut
    Bonjour TDeny, merci pour cette réponse mais d'où vient le -13 et le -1 dans ta formule ?

    Je souhaite en effet que cela se fasse automatiquement, je ne connais pas forcément le décalage en nombre de lignes puisque ça vient du passé...

    A moins de tester exhaustivement toutes les années, je ne vois pour l'instant pas comment faire

  4. #4
    Membre averti Avatar de Tdeny
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 287
    Points : 311
    Points
    311
    Par défaut
    C'est vrai que ces valeurs sont fixes.
    -13 indique le nombre de lignes de décalage, vers le haut puisque négatif.
    -1 idem colonne.
    Pour automatiser comme tu le demandes, ajouter des infos (lesquelles ?)
    ADRESSE
    Crée une adresse de cellule sous forme de texte, à partir des numéros de ligne et de colonne spécifiés.

    Syntaxe

    ADRESSE(no_lig;no_col;no_abs;a1;feuille_texte)

    no_lig est le numéro de la ligne à utiliser dans la référence de cellule.

    no_col est le numéro de la colonne à utiliser dans la référence de cellule.

    no_abs spécifie le type de référence à renvoyer.

    L'argument no_abs Renvoie ce type de référence
    1 ou omis Absolue
    2 Ligne absolue, colonne relative
    3 Ligne relative, colonne absolue
    4 Relative


    a1 représente une valeur logique indiquant si le type de référence est A1 ou R1C1. Si l'argument a1 est VRAI ou omis, la fonction ADRESSE renvoie une référence de type A1. S'il est FAUX, la fonction ADRESSE renvoie une référence de type L1C1.

    feuille_texte représente une valeur de texte précisant le nom de la feuille de calcul à utiliser comme référence externe. Si l'argument feuille_texte est omis, aucun nom de feuille n'est utilisé.

  5. #5
    Membre averti Avatar de Tdeny
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 287
    Points : 311
    Points
    311
    Par défaut
    Le décalage peut éventullement se faire selon le chiffre de la date (39269 aujourd'hui)

  6. #6
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Points : 324
    Points
    324
    Par défaut
    Effectivement, je ne peux pas utiliser ce -13 et ce -1 car ils sont fixes alors que si je change mes paramètres de décalage, ces valeurs là ne seront plus les bonnes.

    J'ai essayé de faire la "solution exhaustive" pour voir si on ne pourrait pas creuser de ce côté là, mais si ça marche bien sur cet exemple simplifié, ça risque d'être plus dur sur mon fichier de base à cause de la longueur des formules.
    Du coup, je me demande s'il n'y aurait pas moyen de "condenser" la formule en trouvant quelque chose qui automatise à tous les cas (un peu dans le genre d'un sommeprod par exemple)

    Voila la bête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    =SI(C$2=K$28-C$1;RECHERCHEV($B29-C$2;tab_init;2+(K$28-C$2-2006);0);0)
    +SI(D$2=K$28-D$1;RECHERCHEV($B29-D$2;tab_init;2+(K$28-D$2-2006);0);0)
    +SI(E$2=K$28-E$1;RECHERCHEV($B29-E$2;tab_init;2+(K$28-E$2-2006);0);0)
    +SI(F$2=K$28-F$1;RECHERCHEV($B29-F$2;tab_init;2+(K$28-F$2-2006);0);0)
    +SI(G$2=K$28-G$1;RECHERCHEV($B29-G$2;tab_init;2+(K$28-G$2-2006);0);0)
    +SI(H$2=K$28-H$1;RECHERCHEV($B29-H$2;tab_init;2+(K$28-H$2-2006);0);0)
    +SI(I$2=K$28-I$1;RECHERCHEV($B29-I$2;tab_init;2+(K$28-I$2-2006);0);0)
    +SI(J$2=K$28-J$1;RECHERCHEV($B29-J$2;tab_init;2+(K$28-J$2-2006);0);0)
    +SI(K$2>0;0;RECHERCHEV($B29-K$2;tab_init;2+(K$28-K$2-2006);0))
    Si on excepte la dernière ligne de recherche qui est différente, les autres se ressemblent beaucoup, avec la seule référence C$2, C$1 qui change en D$2, D$1.

    Voila le fichier Excel issu de cette nouvelle piste
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 13
    Dernier message: 28/08/2008, 12h15
  2. Copier champ vertical vers horizontal
    Par benjisan dans le forum Excel
    Réponses: 2
    Dernier message: 31/05/2007, 10h59
  3. Question débutant: Affiche vertical et horizontal
    Par Hijack54 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 09/02/2007, 13h24
  4. [HTML][CSS]Décalage vertical entre éléments d'un tableau IE
    Par toctof dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 09/09/2005, 15h50
  5. scrolling vertical et horizontal
    Par myriam dans le forum MFC
    Réponses: 2
    Dernier message: 24/01/2003, 17h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo