OVH Cloud OVH Cloud

Trouver la dernière date

5 réponses
Avatar
Michir
Bonjour et Bon Noël à toutes et tous,

J'ai une question un peu tordue mais je voudrais être le plus clair possible
dans son exposé.

Soit un classeur de 12 feuilles dont l'architecture est strictement
identique (une par mois)
Dans chaque feuille, la colonne A contient des dates d'opérations mais
disjointes (elles sont groupées en 3 paquets).
Je souhaiterais récupérer dans une cellule d'une feuille Récap. la valeur
maximum de la dernière feuille saisie (elle correspond à la dernière date
d'opération) ainsi que le libellé de l'opération qui se trouve immédiatement
à sa doite en colonne B

Je pense qu'une formule doit pouvoir le faire, mais je sèche.

Voilà, j'espère avoir été clair.

Merci

Michel

5 réponses

Avatar
michdenis
Bonjour Michir,

Pour la valeur "Date" la plus grande de la colonne A de la feuil1
= Max(Feuil1:A:A)

Pour trouver l'information située en colonne B pour la date la plus grande,
=INDEX(Feuil1!B:B;EQUIV(MAX(Feuil1!A:A);Feuil1!A:A;0);1)

P.S.. En supposant que ta colonne ne possède pas des nombres
entiers long ...!


Salutations!


"Michir" a écrit dans le message de news: 43ae9d4d$0$20159$
Bonjour et Bon Noël à toutes et tous,

J'ai une question un peu tordue mais je voudrais être le plus clair possible
dans son exposé.

Soit un classeur de 12 feuilles dont l'architecture est strictement
identique (une par mois)
Dans chaque feuille, la colonne A contient des dates d'opérations mais
disjointes (elles sont groupées en 3 paquets).
Je souhaiterais récupérer dans une cellule d'une feuille Récap. la valeur
maximum de la dernière feuille saisie (elle correspond à la dernière date
d'opération) ainsi que le libellé de l'opération qui se trouve immédiatement
à sa doite en colonne B

Je pense qu'une formule doit pouvoir le faire, mais je sèche.

Voilà, j'espère avoir été clair.

Merci

Michel
Avatar
Michir
Merci michdenis
Le seul problème est que je résonne sur l'ensemble des 12 feuilles comme si
cela était une seule feuille
et je souhaite récupérer la dernière date en colonne A (ainsi que son objet
en colonne B) figurant sur la dernière feuille saisie.
En cerise sur le gâteau, je peux avoir plusieurs dates identiques (seule la
denière est à considérer)
Michel

"michdenis" a écrit dans le message de news:

Bonjour Michir,

Pour la valeur "Date" la plus grande de la colonne A de la feuil1
= Max(Feuil1:A:A)

Pour trouver l'information située en colonne B pour la date la plus
grande,
=INDEX(Feuil1!B:B;EQUIV(MAX(Feuil1!A:A);Feuil1!A:A;0);1)

P.S.. En supposant que ta colonne ne possède pas des nombres
entiers long ...!


Salutations!


"Michir" a écrit dans le message de news:
43ae9d4d$0$20159$
Bonjour et Bon Noël à toutes et tous,

J'ai une question un peu tordue mais je voudrais être le plus clair
possible
dans son exposé.

Soit un classeur de 12 feuilles dont l'architecture est strictement
identique (une par mois)
Dans chaque feuille, la colonne A contient des dates d'opérations mais
disjointes (elles sont groupées en 3 paquets).
Je souhaiterais récupérer dans une cellule d'une feuille Récap. la valeur
maximum de la dernière feuille saisie (elle correspond à la dernière date
d'opération) ainsi que le libellé de l'opération qui se trouve
immédiatement
à sa doite en colonne B

Je pense qu'une formule doit pouvoir le faire, mais je sèche.

Voilà, j'espère avoir été clair.

Merci

Michel





Avatar
Michel Gaboly
Bonsoir Michir,

Voici une solution, moyennant quelques contraintes, qui pourront être a daptées si nécessaire.

1 - Par hypothèse, la feuille "Récap" a eté ajoutée au classeur, et il n'y a pas à construire de liaison externe.

2 - Les 12 feuilles à la même structure sont nommées "janvier" à "décembre"

3 - Il n'y a qu'une opération par date


Je propose la création de 12 noms de niveau feuille, permettant de stoc ker la date maximale de chaque feuille, ce qui
peut s'automatiser en VBA :

Pour cela, si le classeur ne contient que les 12 feuilles (la feuille Ré cap) n'a pas encore été créée :

Sub Toto()
Dim f As Worksheet, i As Integer
For Each f In ThisWorkbook.Sheets
i = i + 1
f.Names.Add "DerDate", "=MAX(!C1)"
Next
End Sub

Si le classeur comporte les 12 feuilles ET la feuille Récap :


Sub Toto()
Dim f As Worksheet, i As Integer
For Each f In ThisWorkbook.Sheets
i = i + 1
If f.Name <> "Récap" Then f.Names.Add "DerDate", "=MAX(!C1)"
Next
End Sub


Ensuite, après avoir ajouté si nécessaire la feuille Récap au cla sseur, on crée une 13ème occurrence du nom "DerDate",
de niveau classeur cette fois, ainsi défini :

=MAX(janvier!DerDate;février!DerDate;mars!DerDate;avril!DerDate;
mai!DerDate;juin!DerDate;juillet!DerDate;août!DerDate;
septembre!DerDate;octobre!DerDate;novembre!DerDate;décembre!DerDate)

(sur 1 seule ligne)

A partir de là on est capable de déterminer la date maxi toutes feuil les (janvier à décembre) confondues. Puisque chaque
feuille comporte uniquement des dates du mois correspondant, on peut dé duire du mois la feuille concernée :
(=TEXTE(DerDate;"mmmm")

On peut associer le nom "Mois" à cette formule

Un EQUIV() permet de trouver la "bonne ligne", et une indirection conduit à la valeur située sur la même ligne en
colonne B :

=INDIRECT(Mois & "!B" & EQUIV(DerDate;INDIRECT(Mois & "!A:A");0))


Dis-moi si tu veux mon fichier test.

Joyeux Noël


Bonjour et Bon Noël à toutes et tous,

J'ai une question un peu tordue mais je voudrais être le plus clair p ossible
dans son exposé.

Soit un classeur de 12 feuilles dont l'architecture est strictement
identique (une par mois)
Dans chaque feuille, la colonne A contient des dates d'opérations mai s
disjointes (elles sont groupées en 3 paquets).
Je souhaiterais récupérer dans une cellule d'une feuille Récap. l a valeur
maximum de la dernière feuille saisie (elle correspond à la derniè re date
d'opération) ainsi que le libellé de l'opération qui se trouve im médiatement
à sa doite en colonne B

Je pense qu'une formule doit pouvoir le faire, mais je sèche.

Voilà, j'espère avoir été clair.

Merci

Michel





--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
JB
Bonjour,


http://cjoint.com/?mAjcftYZlE

Plus grande date:

Sur l'onglet Recap:

-En B2: + grande date: =MAX(janvier:Décembre!A:A)
-En B5: Mois de la + grande date: =TEXTE(B2;"mmmm")
-En B8: Libellé:
=INDEX(INDIRECT(B5&"!b:b");EQUIV(B2;INDIRECT(B5&"!a:a");0))


Cordialement JB
Avatar
JB
Solution pour obtenir tous les libellés:


http://cjoint.com/?mAkjmXIz0s

-Sélectionner D8:D11
=tous(INDIRECT(B5&"!a2:a1000");INDIRECT(B5&"!b2:b1000");Recap!B2)
Valider avec Maj+Ctrl+Entrée

Dans un module:

Function tous(champ1 As Range, champ2 As Range, v)
Dim temp(1000, 1)
j = 0
For i = 1 To champ1.Count
If v = champ1(i) Then
temp(j, 0) = champ2(i)
j = j + 1
End If
Next i
tous = temp
End Function

Cordialement JB