affichage année correspondant à un record dans une cellule.

  • Initiateur de la discussion Initiateur de la discussion ricomomone
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

R

ricomomone

Guest
Bonjour,
Je ne suis pas très chevronné sur excel.
Comment afficher l'année correspondant à un record dans le tableau ci-joint

Le tableau est fait à partir d'un classeur avec feuilles représentant les années sur excel 2003.

Merci d'avance pour la réponse.
 

Pièces jointes

Re : affichage année correspondant à un record dans une cellule.

Bonjour ricomomone, et bienvenue sur le site,

Si tu n'es pas plus précis dans l'énoncé de ton problème, tu as peu de chances d'obtenir une réponse rapidement.
En l'état actuel, ton fichier n'est pas exploitable. Il serait souhaitable que tu le renvoies avec l'exemple de ce que tu veux obtenir. Quelques explications concernant son fonctionnement et sa finalité seraient également les bienvenues.

A +

Cordialement.
 
Re : affichage année correspondant à un record dans une cellule.

Bonjour ricomomone, et bienvenue sur le site,

Si tu n'es pas plus précis dans l'énoncé de ton problème, tu as peu de chances d'obtenir une réponse rapidement.
En l'état actuel, ton fichier n'est pas exploitable. Il serait souhaitable que tu le renvoies avec l'exemple de ce que tu veux obtenir. Quelques explications concernant son fonctionnement et sa finalité seraient également les bienvenues.

A +

Cordialement.

Bonjour Papou-net,
Je vais être plus clair. Je vous envoie le classeur sur lequel je travaille. Dans la feuille "records", les années ont été placées manuellement. Ce que j'aimerais savoir, c'est s'il existe une formule, par exemple, dans la cellule C3, qui peut afficher automatiquement la date (autrement dit la feuille "janv 1998") correspondant au record B3 et ainsi de suite.
je reste à votre disposition pour renseignements complémentaires, si besoin est.
Cordialement.
 

Pièces jointes

Re : affichage année correspondant à un record dans une cellule.

Bonjour ricomomone,

Mettre cette formule en R3 (par exemple) et tirer-copier cette formule vers le bas:
Code:
=SI(ESTNUM(A3);DATEVAL(A3 &" "& STXT(CELLULE("filename";A3);TROUVE("]";CELLULE("filename"; A31))+1;99));"")

Pour compléter la formule, il faudrait connaître l'orthographe exacte des abréviations des onze autres mois.

edit : version Excel 2003 de la formule
 
Dernière édition:
Re : affichage année correspondant à un record dans une cellule.

Bonjour ricomomone,

Mettre cette formule en R3 (par exemple) et tirer-copier cette formule vers le bas:
Code:
=SI(ESTNUM(A3);DATEVAL(A3 &" "& STXT(CELLULE("filename";A3);TROUVE("]";CELLULE("filename"; A31))+1;99));"")

Pour compléter la formule, il faudrait connaître l'orthographe exacte des abréviations des onze autres mois.

edit : version Excel 2003 de la formule

Bonjour mapomme
Je mets votre formule et excel m'indique #valeur !. Pour info, j'ai fait un classeur séparé pour chaque mois. Si votre formule tient compte des 12 mois de l'année, ça ne peut pas marcher.
Merci tout de même pour votre suggestion.
Cordialement.
 
Re : affichage année correspondant à un record dans une cellule.

re ricomonne,

Bonjour mapomme
Je mets votre formule et excel m'indique #valeur !. Pour info, j'ai fait un classeur séparé pour chaque mois. Si votre formule tient compte des 12 mois de l'année, ça ne peut pas marcher.
Merci tout de même pour votre suggestion.
Cordialement.

Dans le 2ième terme de la cellule, il fallait mettre , A1 au lieu de A31. mais cela ne devrait rien changer.

Si vous avez un fichier par mois, on peut simplifier la formule:

pour le classeur janvier: =DATE(DROITE(STXT(CELLULE("filename";A3);TROUVE("]";CELLULE("filename";A3))+1;99);4);1;A3)

pour le classeur février: =DATE(DROITE(STXT(CELLULE("filename";A3);TROUVE("]";CELLULE("filename";A3))+1;99);4);2;A3)
...
...

pour le classeur décembre: =DATE(DROITE(STXT(CELLULE("filename";A3);TROUVE("]";CELLULE("filename";A3))+1;99);4);12;A3)

nota : je n'ai laissé que 3 années dans le fichier pour l'alléger.
 

Pièces jointes

Re : affichage année correspondant à un record dans une cellule.

Bonjour Ricomomone,
Salut les amis 🙂

J'ignore ce qu'en pensent mes camarades de jeux, mais je n'ai pas l'impression qu'une fonction "native" d'Excel fournisse de réponse à ce que j'ai compris de ta demande (apparemment la même chose que JCGL).

Papou-net a eu 1000 fois raison de te demander des explications supplémentaires: le fichier de départ n'est en rien comparable avec ton fichier réel 😱 (ceci dit, pour nous, tu aurais pu te contenter d'une dizaine de feuilles, plutôt que 100)

Je viens de tester avec une fonction personnalisée ... 5 (ou 10 ?) colonnes de calcul, appliqués à 100 feuilles d'un classeur, ça risque d'être un tantinet gourmand en ressources. Il faudrait (à tout le moins) passer en calcul manuel, pour ne pas être trop handicapé par le temps de recalcul, à chaque modif!

On ne gère pas du tout le cas où un des MAX calculés figurerait dans plusieurs feuilles (pour la même région et la même date) ... ce n'est pas important pour toi?
Je ne sais qui a eu la bonne idée de perturber l'ordre des colonnes dans les 100 feuilles, mais ça ne facilite pas le travail 🙄

Si tu n'es pas opposé à une proposition utilisant vba, regarde la pièce jointe.
Je me suis contenté de 3-4 vérifications et de 5 feuilles. Si la proposition te convient, poursuis les tests dans mon fichier, puis essaye sur le tien (et dis-nous s'il te faut des indications pour y arriver)
 

Pièces jointes

Re : affichage année correspondant à un record dans une cellule.

Bonjour Ricomomone,
Salut les amis 🙂

J'ignore ce qu'en pensent mes camarades de jeux, mais je n'ai pas l'impression qu'une fonction "native" d'Excel fournisse de réponse à ce que j'ai compris de ta demande (apparemment la même chose que JCGL).

Papou-net a eu 1000 fois raison de te demander des explications supplémentaires: le fichier de départ n'est en rien comparable avec ton fichier réel 😱 (ceci dit, pour nous, tu aurais pu te contenter d'une dizaine de feuilles, plutôt que 100)

Je viens de tester avec une fonction personnalisée ... 5 (ou 10 ?) colonnes de calcul, appliqués à 100 feuilles d'un classeur, ça risque d'être un tantinet gourmand en ressources. Il faudrait (à tout le moins) passer en calcul manuel, pour ne pas être trop handicapé par le temps de recalcul, à chaque modif!

On ne gère pas du tout le cas où un des MAX calculés figurerait dans plusieurs feuilles (pour la même région et la même date) ... ce n'est pas important pour toi?
Je ne sais qui a eu la bonne idée de perturber l'ordre des colonnes dans les 100 feuilles, mais ça ne facilite pas le travail 🙄

Si tu n'es pas opposé à une proposition utilisant vba, regarde la pièce jointe.
Je me suis contenté de 3-4 vérifications et de 5 feuilles. Si la proposition te convient, poursuis les tests dans mon fichier, puis essaye sur le tien (et dis-nous s'il te faut des indications pour y arriver)

Bonjour Modeste,
Tu as bien compris ce que je voulais. Je t'avoue que je ne sais pas du tout ce qu'est VBA. Comme je l'ai dit auparavant, je ne suis chevronné sur excel. J'ai regardé le fichier qui me convient mais qui ne fonctionne plus lorsque l'on rajoute une feuille, par exemple janv 2015. Excel m'indique #nom ? dans la cellule C3 par exemple.
Essaies de faire la même chose pour l'ensoleillement dans la feuille "record" et envoie-moi le fichier modifié.
Encore merci pour ton aide.
Cordialement.
 
Re : affichage année correspondant à un record dans une cellule.

Bonjour,

je ne sais pas du tout ce qu'est VBA
En deux mots: comme je l'écrivais plus tôt "je n'ai pas l'impression qu'une fonction "native" d'Excel fournisse de réponse à ce que j'ai compris de ta demande". La seule solution que j'ai trouvée est donc de créer une fonction personnalisée. On utilise VBA (Visual Basic pour Applications) quand on veut écrire des macros dans une application de la famille MS-Office.

Ouvre le classeur que j'ai déposé hier, assure-toi que les macros sont bien activées et appuie sur les touches Alt+F11. Dans la fenêtre qui s'affiche, tu devrais voir (à gauche) une série d'objets (les feuilles du classeur) et en-dessous de celles-ci, un Module. Double-clique sur ce module pour voir apparaître (à droite, cette fois) le "code".

Profitons-en pour y apporter 2-3 modifs (simplifications et précisions): efface ce code et colle celui figurant ci-dessous à la place.
VB:
Private Function AnnéeDuRecord(adr As Range) As String
    Application.Volatile
    tabLoc = Array("Tours", "Poitiers", "Lyon Bron", "Lyon Satolas", "Creil")
    tabCol = Array(2, 6, 8, 11, 14) 'pour la localité concernée, n° de la colonne dans les feuilles
    With ThisWorkbook
        i = Application.Match(.ActiveSheet.Cells(1, adr.Column), tabLoc, 0)
        For sh = 1 To .Worksheets.Count - 1
            If .Sheets(sh).Cells(adr.Row, tabCol(i - 1)) = adr Then AnnéeDuRecord = Right(.Sheets(sh).Name, 4)
        Next sh
    End With
End Function

La fonction passe en revue toutes les feuilles du classeur, de la première à l'avant-dernière! Il est donc essentiel que la feuille "records janv" figure en dernière position.
Si le code fonctionnait avec 5 feuilles, il fonctionnera avec 6 (j'ai testé sur tes 100 feuilles). Par contre, cette fonction ne peut pas être utilisée dans un autre classeur! Il faut donc bien ajouter des feuilles avant "records janv" dans ce classeur et non copier la feuille "records janv" dans un autre classeur!
 
Re : affichage année correspondant à un record dans une cellule.

Bonjour,

En deux mots: comme je l'écrivais plus tôt "je n'ai pas l'impression qu'une fonction "native" d'Excel fournisse de réponse à ce que j'ai compris de ta demande". La seule solution que j'ai trouvée est donc de créer une fonction personnalisée. On utilise VBA (Visual Basic pour Applications) quand on veut écrire des macros dans une application de la famille MS-Office.

Ouvre le classeur que j'ai déposé hier, assure-toi que les macros sont bien activées et appuie sur les touches Alt+F11. Dans la fenêtre qui s'affiche, tu devrais voir (à gauche) une série d'objets (les feuilles du classeur) et en-dessous de celles-ci, un Module. Double-clique sur ce module pour voir apparaître (à droite, cette fois) le "code".

Profitons-en pour y apporter 2-3 modifs (simplifications et précisions): efface ce code et colle celui figurant ci-dessous à la place.
VB:
Private Function AnnéeDuRecord(adr As Range) As String
    Application.Volatile
    tabLoc = Array("Tours", "Poitiers", "Lyon Bron", "Lyon Satolas", "Creil")
    tabCol = Array(2, 6, 8, 11, 14) 'pour la localité concernée, n° de la colonne dans les feuilles
    With ThisWorkbook
        i = Application.Match(.ActiveSheet.Cells(1, adr.Column), tabLoc, 0)
        For sh = 1 To .Worksheets.Count - 1
            If .Sheets(sh).Cells(adr.Row, tabCol(i - 1)) = adr Then AnnéeDuRecord = Right(.Sheets(sh).Name, 4)
        Next sh
    End With
End Function

La fonction passe en revue toutes les feuilles du classeur, de la première à l'avant-dernière! Il est donc essentiel que la feuille "records janv" figure en dernière position.
Si le code fonctionnait avec 5 feuilles, il fonctionnera avec 6 (j'ai testé sur tes 100 feuilles). Par contre, cette fonction ne peut pas être utilisée dans un autre classeur! Il faut donc bien ajouter des feuilles avant "records janv" dans ce classeur et non copier la feuille "records janv" dans un autre classeur!
Bonjour Modeste
Ta fonction marche à merveille. Est-il possible de faire la même chose pour l'ensoleillement mini et maxi ?
Le tableau peut être modifié si c'est nécessaire.
Donne-moi le mode opératoire pour intégrer ta fonction dans mon fichier à 100 feuilles. Encore merci.
Cordialement.
 
Re : affichage année correspondant à un record dans une cellule.

Bonjour Ricomomone,

Il y a une série de questions/remarques qui restent lettres mortes ...

  • J'avais évoqué la question des records identiques pour la même date et la même région dans différentes feuilles. Tu n'as jamais dit quelle attitude il fallait adopter à ce niveau ?
  • L'ordre des colonnes dans tes 100 feuilles est permuté au niveau de Poitiers: la colonne ensoleillement est passée avant celle des précipitations. Comment être certain que dans les feuilles à venir cet ordre sera toujours "perturbé"?
    Comme j'ai signalé que ça compliquait encore un peu le travail, tu aurais pu nous dire que la colonne "fautive" pouvait reprendre une place plus "normale"!? Si c'était déjà compliqué à gérer, ça ne va pas se simplifier si il faut aussi calculer l'ensoleillement mini / maxi!
  • J'ai déjà évoqué aussi le risque que le temps de recalcul devienne "envahissant" et tu nous demandes déjà de rajouter le même type de fonction sur un paquet de cellules supplémentaires. À ce stade, tu ne sembles pourtant avoir testé qu'avec un nombre de feuilles assez réduit?


Lorsque tu auras apporté des éléments de réponse à ces différents éléments, on envisagera la suite 🙂
 
Re : affichage année correspondant à un record dans une cellule.

Bonjour Ricomomone,

Il y a une série de questions/remarques qui restent lettres mortes ...

  • J'avais évoqué la question des records identiques pour la même date et la même région dans différentes feuilles. Tu n'as jamais dit quelle attitude il fallait adopter à ce niveau ?
  • L'ordre des colonnes dans tes 100 feuilles est permuté au niveau de Poitiers: la colonne ensoleillement est passée avant celle des précipitations. Comment être certain que dans les feuilles à venir cet ordre sera toujours "perturbé"?
    Comme j'ai signalé que ça compliquait encore un peu le travail, tu aurais pu nous dire que la colonne "fautive" pouvait reprendre une place plus "normale"!? Si c'était déjà compliqué à gérer, ça ne va pas se simplifier si il faut aussi calculer l'ensoleillement mini / maxi!
  • J'ai déjà évoqué aussi le risque que le temps de recalcul devienne "envahissant" et tu nous demandes déjà de rajouter le même type de fonction sur un paquet de cellules supplémentaires. À ce stade, tu ne sembles pourtant avoir testé qu'avec un nombre de feuilles assez réduit?


Lorsque tu auras apporté des éléments de réponse à ces différents éléments, on envisagera la suite 🙂
Bonjour Modeste,
Tout d'abord, merci pour ton dévouement et ton vif intérêt porté à ma demande.
Ce qu'il faut retenir c'est que je travaille sur 12 classeurs représentant les mois de l'année, que je qualifierai de "dynamiques" car j'ajoute une feuille à chaque mois écoulés, donc de plus en plus de données à gérer. Ce qui compte pour moi, c'est le résultat et non le temps de calcul. Je suis conscient que ce temps sera de plus en plus long, ce n'est pas important pour moi.
Le tableau dans la feuille records a été fait, avec mes maigres connaissances d'excel. Il n'est pas définitif. Si tu juges qu'il faut le modifier pour simplifier ta fonction, alors n'hésites pas. Je suis ouvert à toute proposition, d'autant plus que tu es certainement plus qualifié que moi pour le savoir.
Pour ce qui est des records identiques, ta fonction indique la date la plus récente. C'est parfait pour moi.
Pour ce qui est de la permutation des colonnes pluies et ensoleillement, libre à toi de la modifier ou non.
Ce que je souhaite, pour conclure, c'est l'affichage de toutes les dates des records.
Ne t'occupes pas du calcul de l'ensoleillement mini et maxi.
Si tu as d'autres questions à me poser, surtout, n'hésites pas.
Enfin, si tu juges le travail trop fastidieux, alors on en restera la et donnes-moi le mode opératoire pour intégrer ta fonction dans mon classeur.
Cordialement.
 
Re : affichage année correspondant à un record dans une cellule.

Bonjour Ricomomone,

Si je pose ces questions maintenant, c'est parce que la fonction est personnalisée et dépend donc de la manière dont les données sont structurées.
Au stade actuel, pour la formule en C3, tu écris simplement =AnnéeDuRecord(B3) et pour Tours, le chiffre des précipitations du 1er janvier est précisément en B3 de chacune de tes 100 feuilles.
Pour Poitiers, la formule est insérée en E3 et devient =AnnéeDuRecord(D3) MAIS c'est en F3 qu'il faut aller chercher les chiffres dans les 100 feuilles. L'emplacement des données est donc primordial ... d'où mon insistance!

Pour illustrer concrètement j'ai déplacé (pour la feuille "janv 2014" seulement) la colonne "Insolation" pour Poitiers en colonne G plutôt qu'en colonne E. De cette manière, pour chaque région, les 3 colonnes seraient toujours dans le même ordre ("Pluie/neige", [vide], "Insolation"). C'est cette manipulation qu'il faudrait faire sur les 100 feuilles existantes.
Compare les 2 feuilles en pièce jointe, pour visualiser.

Au passage et dans le même ordre d'idée, on pourrait peut-être supprimer dans tes 100 feuilles, cette colonne vide qui figure chaque fois entre "Pluie/neige "et "Insolation", non?

Pour les feuilles "janv 2015" et suivantes, elles te sont fournies "telles quelles" ou est-ce toi qui en structure le contenu? Autrement dit la fameuse colonne "déplacée" le sera-t-elle systématiquement dans le futur? Et donc, penseras-tu aussi systématiquement à la remettre dans une position plus "logique" avant de faire des calculs (faute de quoi, il y aura des erreurs, sans que tu le saches nécessairement!)

Enfin, pour le temps de recalcul, tu n'as peut-être jamais été confronté à la situation, mais en fonction des performances de la machine, des fonctions "gourmandes" peuvent aboutir au "bloquage complet". Autant prendre cet aspect en considération dès à présent. On pourrait, par exemple mettre un bouton dans la feuille records, pour ne lancer une macro qu'à la demande, plutôt qu'une fonction qui se recalcule à chaque modif dans le classeur. À charge pour toi de penser à cliquer sur ce bouton, chaque fois que tu auras ajouté une nouvelle feuille au classeur.

Mes questions (et l'importance des réponses que tu apporteras) te semblent-elles plus claires?
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
242
Retour