Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Recuperer des données provenant de plusieurs feuilles

Clodsud

XLDnaute Nouveau
Bonjour,

C'est la premiere fois que je post sur ce site et je vous prie de me pardonner mes eventuelles erreur ou maladresse

Je souhaite créer un fichier méteo, dans chaque feuille par années, les données de T° Max, Min, Pluie, Soleil
dans une feuille récap les extrêmes des valeurs avec la date de l'évenement
J'ai fais beaucoup de tests avec INDEX, EQUIV, INDIRECT, RECHERCHE
Avec mes compétances je n'ai pas reussi à faire aboutir mon projet !
Quelqu'un pourait-il m'aider ?

Je joins un fichier TestMeteo2.xls
 

Pièces jointes

  • TestMeteo2.xls
    127.5 KB · Affichages: 75
  • TestMeteo2.xls
    127.5 KB · Affichages: 73
  • TestMeteo2.xls
    127.5 KB · Affichages: 78

vgendron

XLDnaute Barbatruc
Re : Recuperer des données provenant de plusieurs feuilles

Salut,

je me casse les dents sur ton problème depuis ce matin. et ... ca m'agace..
LE problème, c'est de récupérer l'adresse complete (nom Onglet et position) du max trouvé.. pour pouvoit ensuite utiliser la fonction equiv.. ou décaler..
et la. franchement. suis comme toi.. je sèche..
une solution macro VBA serait elle acceptable?

.. je t'ai pas vraiment aidé. si ce n'est que j'ai remonté ton post en tete de liste pour attirer l'attention des pros de la formule.. ;-)
 

st007

XLDnaute Barbatruc
Re : Recuperer des données provenant de plusieurs feuilles

Bonjour,

Je récupère le nom de l'onglet comportant la valeur. Soit l'année de l’événement.

Vgendron, je pensais inutile de récupérer la date entière puisque la ligne définit le jour en quelque sorte...

A suivre ....
 

Pièces jointes

  • TestMeteo2.xls
    140 KB · Affichages: 49
  • TestMeteo2.xls
    140 KB · Affichages: 50
  • TestMeteo2.xls
    140 KB · Affichages: 51
Dernière édition:

Clodsud

XLDnaute Nouveau
Re : Recuperer des données provenant de plusieurs feuilles

Bonjour,
Merci de vous pencher sur mon problème, c'est bien sympa !

Je ne souhaite pas que le problème soit résolu en VBA mais si c'est la SEULE solution je serais malgré tout preneur !

Pour être plus précis, comme vous avez remarqué les valeurs extrêmes remontent bien en récap , mais ce qui serait le plus intéressant c'est de remonter la date exacte de l'évènement sur la même ligne sachant que j'ai les données depuis 1973
Merci encore de votre aide
 

vgendron

XLDnaute Barbatruc
Re : Recuperer des données provenant de plusieurs feuilles

Hello St007
j'avais bien pensé à une formule avec des si, comme tu le proposes.. mais je me suis dit que dans l'exemple. on n'a que 4 années...
et que certainement, ca allait évoluer..et donc la "longueur" de la formule avec..

du coup.; avec des sommeprod??

et pour compléter la formule pour obtenir la date exacte:
en A4:
=INDIRECT(SI(MAX(('2000'!B4=B4)*1)>0;"2000";SI(MAX(('2001'!B4=B4)*1)>0;"2001";SI(MAX(('2002'!B4=B4)*1)>0;"2002";SI(MAX(('2003'!B4=B4)*1)>0;"2003";"-"))))&"!A"&LIGNE())

et tu tires vers le bas
à adapter pour les autres colonnes
 

st007

XLDnaute Barbatruc
Re : Recuperer des données provenant de plusieurs feuilles

je trouve un peu nouille de vouloir absolument la date car on est dans une colonne de x mois et la ligne y correspondant au jour

bref, je creuse mon idée de récupérer que le nom de l'onglet
et ensuite, reconstituer la date avec date(ligne();en tête du tableau;nom onglet)

ceci en supposant qu'il souhaite la plus ancienne avec ses onglets triés .
 

vgendron

XLDnaute Barbatruc
Re : Recuperer des données provenant de plusieurs feuilles

sinon. à la place de indirect. comme effectivement la cellule utilisée représente le jour et le mois de l'année cherchée. suffit de "reconstruire" la date
=DATE(SI(MAX(('2000'!B3=B3)*1)>0;"2000";SI(MAX(('2001'!B3=B3)*1)>0;"2001";SI(MAX(('2002'!B3=B3)*1)>0;"2002";SI(MAX(('2003'!B3=B3)*1)>0;"2003";"-"))));1;LIGNE()-3)
avec le 1 pour le mois de janvier
et ligne()-3 pour le jour

@St007.. le "problème" de ta formule. c'est qu'il faut l'allonger autant de fois qu'il y a d'onglets.. et si j'ai bien compris.. le premier commence en 1973..
 

st007

XLDnaute Barbatruc
Re : Recuperer des données provenant de plusieurs feuilles

Tout à fait,
j'essayais en matriciel (selon une fonction de JB) mais, çà cafouille
en A4
Code:
=DATE(cherche3DFeuille(3;6;B4;"B4");1;LIGNE()-3)
Code:
Function cherche3DFeuille(début, fin, clé, champRecherche)
  Application.Volatile
  Dim b()
  ReDim b(1 To Application.Caller.Rows.Count)
  n = 0
  For s = début To fin
    Set f = Sheets(s)
    For lig = 1 To f.Range(champRecherche).Count
      If UCase(f.Range(champRecherche)(lig)) = UCase(clé) Or (clé = "*" And f.Range(champRecherche)(lig) <> "") Then
        n = n + 1
        b(n) = Sheets(s).Name
      End If
    Next lig
  Next s
  cherche3DFeuille = Application.Transpose(b)
End Function
 

Pièces jointes

  • TestMeteo2.xls
    150 KB · Affichages: 38
  • TestMeteo2.xls
    150 KB · Affichages: 40
  • TestMeteo2.xls
    150 KB · Affichages: 40
Dernière édition:

st007

XLDnaute Barbatruc
Re : Recuperer des données provenant de plusieurs feuilles

A voir clodsud,
je suis sous 2007 et j'ai un message d'erreur à l’enregistrement sous 2003 sur ces formules, genre A4 en matriciel
Code:
=DATE(INDEX(onglets;EQUIV(VRAI;(NB.SI(INDIRECT("'"&onglets&"'!B"&LIGNE());B4)>0);0));1;LIGNE()-3)
mais je ne sais pas vérifier
sinon, étire A4, C4....
 

Pièces jointes

  • TestMeteo2.xls
    159 KB · Affichages: 46
  • TestMeteo2.xls
    159 KB · Affichages: 41
  • TestMeteo2.xls
    159 KB · Affichages: 42

Clodsud

XLDnaute Nouveau
Re : Recuperer des données provenant de plusieurs feuilles

Je vois que vous avez dépensé beaucoup d'énergie et que le résultat est peut bon !

Dans la première solution de St007 effectivement il ne serait pas indispensable de remonter la date exact puisque c'est le jour de la ligne , cependant j'ai plus de 40 années alors j'imagine la longueur de la formule et peut être le temps de calcul !
Donc ce n'est pas vraiment la meilleur solution.

Ensuite, si j'ai bien compris tu utilises VB et cette formule =DATE(cherche3DFeuille(3;6;B4;"B4");1;LIGNE()-3)
ça fonctionne ou presque sauf lorsque pour un max identique sur deux années on affiche #Valeur !

Enfin pour la dernière solution, ça semble fonctionner sous 2003 avec cette formule tirée jusqu’au 31 du mois

=DATE(INDEX(onglets;EQUIV(VRAI;(NB.SI(INDIRECT("'"&onglets&"'!B"&LIGNE());B4)>0);0));1;LIGNE()-3)
cette formule ne se suffit pas à elle toute seule j'imagine, on doit aussi passer par VB ?

Le problème c'est que je ne comprend rien en VB

Question d'un nul ( c'est moi) Pourquoi est-il aussi simple de remonter une valeur (maxi ou min en l’occurrence) sur plusieurs feuilles et qu'il est aussi compliqué de remonter la référence de la cellule qui à généré cette valeur ?????????

Merci vous faite du bon boulot !
 

st007

XLDnaute Barbatruc
Re : Recuperer des données provenant de plusieurs feuilles

Bonjour clodsud,

cette dernière formule n'est pas du vb ....
la seule chose qui n'est pas d'excel, c'est onglets qui est un nom de champs que j'ai attribué pour lister les feuilles ou doit s'effectuer la recherche
Vois le gestionnaire de nom et [lisez moi!]L2:L20

Donc je te suggère de créer les noms (sois extrêmement vigilent sur l'orthographe et la casse)
NbFeuilles
NomsFeuilles
A l'endroit de ton choix mais judicieux tout de même (pour l'exemple, en D5 de la feuille toto)
Colle les cellules L2:L3 de ma feuille Lisezmoi
sélectionne L3 et valide la formule en matriciel ("CTRL"+"MAJ"+"ENTREE" et pas simplement entree) puis étire autant que nécessaire.
Tu dois obtenir sous forme de liste le nom de chacun de tes onglets
Note, que j'ai déplacé les feuilles de lisez moi et récap (en premier, fais en de même)
tu peux maintenant créer le nom par le gestionnaire
onglets qui fait référence à : =DECALER(toto!$D$7;;;NBVAL(toto!$D:$D))
D7 parce que cette cellule contient 1973 (mince, c'était D6 ou D8 ...)
tu peux maintenant copier les formules A4,C4,E,G,I.... et valide les bien en matriciel, étire ....
l' élément à modifier n'est que la lettre de la colonne de recherche
sur ma pièce jointe, quand tu copies Recap!O4 et que tu colles en RecapQ4, modifie le J en L valide en matriciel étire,c'est réglé
 

Clodsud

XLDnaute Nouveau
Re : Recuperer des données provenant de plusieurs feuilles

Merci,
Maintenant je vais décrypter tout cela avant de poser une nouvelle question qui ne serait pas utile si je regarde correctement ton fichier, effectivement dans l'onglet lisez moi il y avait la liste des feuilles !

Je réitère ma question, j'imagine que la réponse est dans la question
Pourquoi est-il aussi simple de remonter une valeur (maxi ou min en l’occurrence) sur plusieurs feuilles et qu'il est aussi compliqué de remonter la référence de la cellule qui à généré cette valeur ?????????
Genre antécédent, cellule, adresse etc, en fait je n'est pas trouvé de solution ni comment écrire la fonction

je n'ai plus qu'a mettre en forme pour un fichier de 40 ans et plus avec 12 mois , des années bissextiles etc

merci encore
 

st007

XLDnaute Barbatruc
Re : Recuperer des données provenant de plusieurs feuilles

Je considère ton problème par formules, le VBA et moi çà fait 20 quand il faut l'écrire
c'est simple de la remonter, puisqu'elles se trouvent au même endroit, toujours B4 quelle que soit la feuille
il faut recherché sur quelle feuille se trouve ce max puis rechercher la valeur à gauche du max
c'est déja bien long en français, alors en formule ....
maintenant, en vba ce serait certainement faisable, mais pas par moi ...
mettre en forme, bah, il ne reste que six mois à faire ...
 

Clodsud

XLDnaute Nouveau
Re : Recuperer des données provenant de plusieurs feuilles

Bonjour st007
Je reviens avec mes questions malheureusement de néophyte !
je ne comprend pas le fonctionnement de LIRE.CLASSEUR, TROUVE dans le gestionnaire de Noms
Tout se trouve dans le même fichier, je crois comprendre que LIRE CLASSEUR permet d'aller dans d'autre fichier Xls ?
NbFeuilles =LIRE.CLASSEUR(4)
NomsFeuilles =STXT(LIRE.CLASSEUR(1);TROUVE("]";LIRE.CLASSEUR(1))+1;99)&INDIRECT("iv65000")

Par contre le fonctionnement de onglets me parait à peut près clair
onglets =DECALER('Lisez moi'!$L$5;;;NBVAL('Lisez moi'!$L:$L))
Désolé mais je n'ai pas tout compris
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…