RECHERCHEV Date la plus proche

alexos

XLDnaute Nouveau
Bonjour à tous,

Je suis en train d'élaborer un fichier excel permettant de récupérer automatiquement les taux de change actualisés chaque jour à l'ouverture du fichier (cf Feuille "Taux de change")

Les taux sont récupérés à l'aide du fichier xml suivant :https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml?b23f48754f2aee6a789698825f3b7217

Jusqu'ici, tout va bien. C'est là que ça se complique : Je souhaite afficher le taux correspondant en fonction de la date entrée (colonne B) et le code de la devise (colonne I)

N'ayant pas réussi à mettre en place une recherche à 2 critères, j'ai résolu le problème à l'aide d'une concaténation (colonne A de la feuille "Taux de change") et ça marche bien !

Par contre, et c'est là que ça se complique, lorsque la date correspond à un samedi ou un dimanche, évidemment la recherche ne donne rien puisque les taux ne sont pas actualisés, je voudrais donc dans ce cas récupérer le taux de la dernière date disponible (ex : pour le 16/04 récupérer le taux du 15, et en cas de saisie de date postérieure récupérer le taux du jour ou de la veille si celui du jour n'est pas dispo.

En bref récupérer le taux de la date inférieure la plus proche disponible.

Pensez-vous que celà puisse se faire avec ma méthode de concaténation qui prend les données comme du texte ? :confused:

Je joins un fichier exemple, avec une précision importante : La date affichée en colonne B de la feuille "note de frais" est inscrite à l'aide d'un userform (non présent ici) et donc n'a plus le format de date ! Les dates ne peuvent donc pas être changées à la main.


Si quelqu'un a une idée de comment je pourrais faire, ça serait d'une grande aide ! Merci :D
 

Pièces jointes

  • Taux de change automatique.xlsm
    86.1 KB · Affichages: 38
  • Taux de change automatique.xlsm
    86.1 KB · Affichages: 42
Dernière modification par un modérateur:

JHA

XLDnaute Barbatruc
Re : RECHERCHEV Date la plus proche

Bonjour à tous,

Modification formule en colonne "J" pour trouver le vendredi si date origine est un week end.

JHA
 

Pièces jointes

  • Taux de change automatique.xlsm
    83.7 KB · Affichages: 49
  • Taux de change automatique.xlsm
    83.7 KB · Affichages: 44

JHA

XLDnaute Barbatruc
Re : RECHERCHEV Date la plus proche

Bonjour à tous,

Si tu n'as pas de donnée le vendredi, ci joint une formule matricielle pour avoir le dernier jour avant la date indiquée.
Code:
=SI(JOURSEM(B13;2)>5;TEXTE(MAX(SI('Taux de change'!$B$2:$B$850<B13*1;'Taux de change'!$B$2:$B$850));"JJ/mm/aaaa");B13)
Combinée avec la recherchev en colonne "J", cela fait:
Code:
=SI(ESTVIDE(I13);"";SI((I13="EUR");"";RECHERCHEV(SI(JOURSEM(B13;2)>5;TEXTE(MAX(SI('Taux de change'!$B$2:$B$850<B13*1;'Taux de change'!$B$2:$B$850));"JJ/mm/aaaa");B13)&I13;'Taux de change'!A:D;4;FAUX)))

JHA
 

Pièces jointes

  • Taux de change automatique.xlsm
    83.8 KB · Affichages: 49
  • Taux de change automatique.xlsm
    83.8 KB · Affichages: 46

alexos

XLDnaute Nouveau
Re : RECHERCHEV Date la plus proche

Salut, merci pour la précision, je pense cependant qu'il n'y aura pas de soucis de ce côté là étant donné qu'il y a des données pour tous les jours de la semaine.

Dernière modif et ça serait parfait, si ce n'est pas trop demander (je galère un peu avec les dates sur excel...) :

J'ai bloqué la saisie dans mon calendrier à aujourd'hui via VBA par le code suivant :

Code:
Private Sub Calendrier_Click()

If Calendrier.Value > Now Then
MsgBox "Impossible de saisir une date postérieure à aujourd'hui", , "ERREUR"
Else
UserForm2.TextBox1.Text = Format(Calendrier, "dd/mm/yyyy")
    Hide
End If

End Sub

Je fais face à un dernier souci : les taux de devise du jour n'étant actualisés qu'à 15 ou 16h, si la personne sélectionne la date d'aujourd'hui avant 16h, la formule renvoie #N/A puisqu'elle ne trouve pas de données, comment pourrais-je faire pour rajouter dans la formule de prendre le cours de la veille si le cours du jour n'est pas disponible ?

Merci !
 

JCGL

XLDnaute Barbatruc
Re : RECHERCHEV Date la plus proche

Bonjour à tous,
Salut Jacky,

Peux-tu essayer :
VB:
Option Explicit

Private Sub Calendrier_Click()
    If Calendrier.Value > Date And Time < "15:00" Then
        MsgBox "Impossible de saisir une date postérieure à aujourd'hui", , "ERREUR"
    Else
        UserForm2.TextBox1.Text = Format(Calendrier, "dd/mm/yyyy")
        Hide
    End If
End Sub

A+ à tous
 

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 190
Membres
112 679
dernier inscrit
Yupanki