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 :

Recherche chronologique dans une matrice [XL-2007]


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Recherche chronologique dans une matrice
    Premier poste
    Hello World,
    Avec mes modestes connaissances en Excel je n’arrive pas a résoudre le cas suivant.
    Je suis en train de préparer un rapport de suivi de projet dont les données sont extraites depuis un ERP, il existe dans la table deux colonnes qui ne sont pas forcement actualiser par les utilisateurs mensuellement. La première contient l’actualisation du coût total du projet la seconde l’avancement physique.
    Avec un TCD conçu de manière à avoir les 12 mois en colonnes, par contre les lignes j’ai le code puis l’année, comme c’est un rapport mensuel je voudrai chercher le montant dans le mois en cours (déjà résolu), mais si la valeur est ‘’0’’ je dois faire une recherche chronologique afin de retrouver la dernière valeur qui n’est pas égale à 0.
    Merci d’avance

  2. #2
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour lebonprince,

    peut montrer un apercu du tcd ?
    isabelle

    Merci de m'aider à votre tour en indiquant si le problème est résolu.
    faite un clic sur le bouton en bas à gauche de la page.
    http://club.developpez.com/regles/#L4.12

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    j'imagine que la solution c'est une macro qui fait une boucle tant que, que je ne suis pas en mesure de réaliser en ce moment je dois me recycler.
    Merci,
    Fichiers attachés Fichiers attachés

  4. #4
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour lebonprince,

    si j'ai bien compris dans le fichier le résultat de la recherche
    serait la cellule E11 --> 72%, est ce bien ça ?
    isabelle

    Merci de m'aider à votre tour en indiquant si le problème est résolu.
    faite un clic sur le bouton en bas à gauche de la page.
    http://club.developpez.com/regles/#L4.12

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    oui exactement, ou plutôt Z11 dans le tableau auxiliaire

  6. #6
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour lebonprince,

    si la valeur obtenue pour un mois n'est jamais égal à 0 une fois mit à date,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDIRECT(ADRESSE(EQUIV(ANNEE(AUJOURDHUI());X1:X25;0);EQUIV(0;Y11:AK11;0)+COLONNE(Y1)-2))
    isabelle

    Merci de m'aider à votre tour en indiquant si le problème est résolu.
    faite un clic sur le bouton en bas à gauche de la page.
    http://club.developpez.com/regles/#L4.12

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Non je ne sais pas, mais cela ne fonctionne pas correctement, je joint le fichier à nouveau avec le modèle du rapport (en valeur) puisque le rapport en question est mensuel je dois faire une recherche du mois en cours sur une autre table qui fonctionne parfaitement où la fonction de recherche est loger. puisque la longueur du rapport est dynamique suivant la situation du projet : en cours, fermé, refusé...

    je ne sais pas mais j'avais en tête qu'il fallait une macro (fonction) qui utilise une boucle ''tant que'' mais comme en ce moment je suis très loin du monde de la macro, mais je vais me mettre rapidement puisque dorénavant je serai confronter à ce genre de travaux.
    merci,
    Fichiers attachés Fichiers attachés

  8. #8
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    y a t'il une cellule spécifique ou ce calcul doit être mit ?
    isabelle

    Merci de m'aider à votre tour en indiquant si le problème est résolu.
    faite un clic sur le bouton en bas à gauche de la page.
    http://club.developpez.com/regles/#L4.12

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Oui au niveau du rapport ou est afficher le "%" cellule jaune titre : AVANCE PHYSIQUE %. puisque je une recherche est effectuer avec le code du projet (B8) & le site la colonne (S8) au quelle j'ajoute l'année et le mois (201003) qui donne la U8 dans la feuille de traitement. 99019R042009.

  10. #10
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    sur le fichier que tu as joint il y a 2 ongets
    TRAITTABL et TABLERP
    sur lequel de ces onglet et à quel adresse ? ou à quel plage d'adresse ?
    isabelle

    Merci de m'aider à votre tour en indiquant si le problème est résolu.
    faite un clic sur le bouton en bas à gauche de la page.
    http://club.developpez.com/regles/#L4.12

  11. #11
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    La recherche j'effectue dans l'onglet ''TRAITTABL'' U10:AK25 pour ce loger dans ''rapport'' I9.

  12. #12
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    La recherche j'effectue dans l'onglet ''TRAITTABL'' U10:AK25 pour ce loger dans ''rapport'' I9
    la cellule I9 de l'onglet ''TRAITTABL'' est déjà occuper par le 1er tcd, on ne peut pas mettre une formule à cette adresse.
    oublie ce que je vient de dire, ,ca y est j'ai compris le principe.
    et oui cela fait une formule à ralonge, je vais revenir avec une fonction vba,
    a+
    isabelle

    Merci de m'aider à votre tour en indiquant si le problème est résolu.
    faite un clic sur le bouton en bas à gauche de la page.
    http://club.developpez.com/regles/#L4.12

  13. #13
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par sabzzz Voir le message
    la cellule I9 de l'onglet ''TRAITTABL'' est déjà occuper par le 1er tcd, on ne peut pas mettre une formule à cette adresse.
    I9 de l'onglet "rapport"

  14. #14
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    en cellule TABLERP!I9
    la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function montant(AnnéeMois As Range) As Double
    Dim année As Integer, mois  As String, ligneAnnée As Integer, colMois As Integer, x As Integer
    année = CDbl(Left(AnnéeMois, 4))
    mois = Right(AnnéeMois, 2)
    ligneAnnée = Application.Match(année, Sheets("TRAITTABL").Range("X1:X25"), 0)
    colMois = Application.Match(mois, Sheets("TRAITTABL").Range("Y9:AK9"), 0) + Range("Y1").Column - 1
    montant = Sheets("TRAITTABL").Cells(ligneAnnée, colMois)
    While montant = 0
    montant = Sheets("TRAITTABL").Cells(ligneAnnée, colMois - x)
    x = x + 1
    Wend
    End Function
    isabelle

    Merci de m'aider à votre tour en indiquant si le problème est résolu.
    faite un clic sur le bouton en bas à gauche de la page.
    http://club.developpez.com/regles/#L4.12

  15. #15
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Un grand merci, pour les efforts
    je crois qu'il y a un mal entendu sur la position ou je veut utiliser la formule puisque TABLERP est la BD de l'ERP que je ne suis pas en mesure de modifier, mais tu m'ouvre une GRANDE porte
    merci, je vais essayer de comprendre la fonction qui vu comme elle est semble très simple mais pour un novice comme moi c'est l'Himalaya... lol
    garde l'œil je vais faire des essais (je suis en train de les faire sur le fichier original). merci

  16. #16
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    je te confirme c'est l'himalaya
    Autre idée :
    comment je suis en mesure de disant un fonction généraliste plus simple.
    Explications : une fonction qui fait la meme meme recherche depuis une cellule du genre ''201003'' dont le compteur commence depuis ''03'' décremente jusqu'à ''01''. mais dans la meme ligne ou ce trouve la fonction.
    =montant(A8) la fonction recherche dans une plage prédifini de la meme ligne.

  17. #17
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Salut, sabzzz
    excuse pour la confusion c'est vrai c'es mes premiers postes mais maintenant j'ai les idées plus claires j'ai simplifié ma requete le fichier ci-joint est plus claire puisque à la suite de ton code j'ai eu cette idées puisque me TCD est sur un tableau aux j'ajoute une autre colonne ou je vais mettre le résultat que j'integrerai dans mon rapport par lisain simple.
    Fichiers attachés Fichiers attachés

  18. #18
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    il n'y a plus de colonne date ?
    c'est la ligne ou on met la formule qui détermine la ligne de montant à vérifier ?
    isabelle

    Merci de m'aider à votre tour en indiquant si le problème est résolu.
    faite un clic sur le bouton en bas à gauche de la page.
    http://club.developpez.com/regles/#L4.12

  19. #19
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Exactement ? comme tu le vois dans le nouveau fichier exemple je voudrai mettre la fonction qui a pour paramètre une chaine du genre "aaaamm"
    Merci,

  20. #20
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour lebonprince,

    j'ai essayé d'apdapter selon les nouvelles position des données, et j'ai ajouté plus de commentaire à la fonction pour que tu puisse t'y retrouver.

    http://www.cijoint.fr/cjlink.php?fil...cijmiZLFxr.xls

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Function montant(AnnéeMois As Range, Mois As Range) As Double
    'une fonction volatile est recalculée chaque fois qu'un calcul est effectué
    'dans une cellule quelconque de la feuille de calcul
    Application.Volatile
    Dim colMois As Integer, x As Integer
    'numéro de la colonne ou est trouver le mois
    colMois = Mois.Item(CDbl(Right(AnnéeMois, 2))).Column
    'montant à l'intersection de la ligne ou est mit la fonction et la colMois
    montant = Cells(ActiveCell.Row, colMois)
    'boucle tant que montant = 0 et que colMois n'est pas plus petit que
    'la premiere colonne de la plage Mois
    While montant = 0
      If colMois - x < Mois(1).Column Then montant = 0: Exit Function
      montant = Cells(ActiveCell.Row, colMois - x)
      x = x + 1
    Wend
    End Function
    isabelle

    Merci de m'aider à votre tour en indiquant si le problème est résolu.
    faite un clic sur le bouton en bas à gauche de la page.
    http://club.developpez.com/regles/#L4.12

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Recherche dichotomique dans une matrice n*n
    Par kenzo75 dans le forum Algorithmes et structures de données
    Réponses: 27
    Dernier message: 27/03/2014, 17h42
  2. [XL-2007] VBA Recherche titre dans une matrice
    Par vivi4561 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/05/2011, 15h43
  3. [find] Comment rechercher une valeur dans une matrice
    Par VanessaDu67 dans le forum MATLAB
    Réponses: 6
    Dernier message: 06/06/2007, 14h55
  4. [Débutant] Recherche de minimum non nul dans une matrice
    Par sebastien69 dans le forum MATLAB
    Réponses: 2
    Dernier message: 05/06/2007, 16h00
  5. Réponses: 1
    Dernier message: 24/05/2007, 14h46

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