Recherche find sur format monétaire

Compress

XLDnaute Occasionnel
Rebonjour à tous.
Petit problème mais non des moindres.
Voilà dans un tableaux, j'ai des valeurs monétaires du style 1500 €, 500 $ ou encore 300 INR
ce sont des valeurs monétaires formatés selon la monnaie locale du pays.
Je dispose de table de taux de change estimons pour les années futures.
J'aimerai donc selon le type de monnaie appliquée le taux de change correspondant.
Existe-t-il une fonction du style :
.Find(what:="#,##0 $", lookin := xlformats...
Qui me permette de savoir quelle est le format de monnaie du pays ?

Ou alors peut-on rechercher le format monétaire du style :
avec c la cellule que je cherche à tester :

if c.NumberFormat = "#,##0 [$ INR]" then

Merci de votre aide par avance.
 
Dernière édition:

Compress

XLDnaute Occasionnel
Re : Recherche find sur format monétaire

Ok. Bonjour à tous.
Dans le fichier dans l'onglet 1 vous avez 2 taux monétaires.
Dans l'onglet 2 des coûts mis au format de la monnaie locale du pays.

J'aimerai une fonction qui teste le format du coût. En gros pour New York, si je teste les 500 $, il doit savoir en analysant le format que le coût est donné en $ et qu'il faut donc lui appliquer une conversion avec le taux $ => €
Après l'utilisateur doit pouvoir choisir l'année horizon de son projet mais si j'arrive à savoir que les 500 $ sont exprimés en format $ pour l'année ça ne me posera plus trop de problème. J'ai quelques pistes mais rien de concret. Pour l'instant j'essaye d'utiliser numberformat pour récupérer le format du coût puis d'avoir une base des numberformat présent dans mes taux monétaires, de comparer les deux et d'appliquer le taux correspondant. Mais rien de concret comme je vous le dis.
En tout cas merci d'avance.
 

Pièces jointes

  • parité.xls
    13.5 KB · Affichages: 51

Compress

XLDnaute Occasionnel
Re : Recherche find sur format monétaire

Le problème est que l'on travaille sur une trentaines de partiés et que l'on risque d'en avoir des nouvelles et que l'on ne sait pas toujours si la devise se retrouve à droite ou à gauche.

Ta méthode est intéressante et je pense que l'on pourrait la mettre en oeuvre mais j'aimerai voir s'il est possible de trouver une solution qui se fasse de manière automatique quelle que soit la devise utilisée.

Enfin merci beaucoup pour cette fonction que l'on utilisera si on ne trouve pas mieux.
 
Dernière édition:

Compress

XLDnaute Occasionnel
Re : Recherche find sur format monétaire

Le second problème est que nous utilisons des flux d'Australie et par exemple des Etats-Unis donc exprimés en $ tous les deux. Avec ta méthode nous allons avoir $ de renvoyer mais ce n'est pas le même taux de change à appliquer.

Je sais que je titille mais en même temps je vous remercie d'y passer du temps...
 

Compress

XLDnaute Occasionnel
Re : Recherche find sur format monétaire

Bon nous développons actuellement une solution mais il reste un bug que nous n'arrivons pas à résoudre.
En fait, nous codons l'ensemble des coûts avec la devise internationale du type USD au lieu du dollar.
Donc quand on renvoie le format d'un coût via numberformat, nous avons donc #,##0,00 [$USD]

Dans une colonne, j'ai donc listé l'ensemble des formats possibles que nous utilisons en gros seul le USD va varier...

Puis nous aimerions tester si lorsque nous avons un nouveau coût, le format de ce dernier est égal à un format présent dans notre base.

Pour se faire, imaginons que f.offset(0,2) représente le range contenant le coût et que recherchedevise contient l'ensemble des formats contenus dans notre base. Ainsi le code là ne fonctionne pour le moment pas :

Code:
For Each devise In RechercheDevise
            [COLOR="Red"][B]If f.Offset(0, 2).NumberFormat = devise.Text Then[/B][/COLOR]
                Sheets("Synthèse").Cells(28, der_colonne).Value = Round(f.Offset(0, 2).Value / Sheets("Parités").Cells(devise.Row, horizon.Column) / 65, 1)
                Sheets("Synthèse").Cells(28, der_colonne + 1).Value = Round(f.Offset(0, 2).Value / Sheets("Parités").Cells(devise.Row, horizon.Column) / 65, 1)
            End If
        Next

horizon est l'année dans laquelle on recherche à trouver le taux de change
 

Compress

XLDnaute Occasionnel
Re : Recherche find sur format monétaire

Bonjour à tous,

Ok donc on avance un peu, je sens que la solution n'est pas loin.
Je vous transmets un classeur vous expliquant grossiérement la méthode retenue et le code qui va avec ci-dessous. bon les références ne marcheront plus car pas les memes classeurs mais c'est plutot le fond qui doit contenir une erreur.

Voici le code...:
Code:
With Sheets("FOB")
        Set RechercheILN2 = .Range(.Cells(3, 2), .Cells(.Cells(65536, 2).End(xlUp).Row, 2))
        Set f = RechercheILN2.Find(What:=ILN, LookIn:=xlValues, lookat:=xlPart) 'recherche de la FOB relative à l'ILN
        End With
        With Sheets("Parités")
        Set RechercheHorizon = .Range(.Cells(1, 5), .Cells(1, .Cells(1, 256).End(xlToLeft).Column)) 'recherche dans l'ensemble des années table parité
        Set horizon = RechercheHorizon.Find(What:=ComboBox_horizon.Text, LookIn:=xlValues, lookat:=xlPart) 'recherche de l'horizon sélectionné par l'utilisateur
        Set RechercheDevise = .Range(.Cells(2, 4), .Cells(.Cells(65536, 4).End(xlUp).Row, 4)) 'recherche dans la liste des formats de devises
        End With
        format = CStr(f.Offset(0, 2).NumberFormat)
        [COLOR="Red"][SIZE="2"][B]Set devise = RechercheDevise.Find(What:=format, LookIn:=xlValues, lookat:=xlPart)[/B][/SIZE][/COLOR]
        If Not devise Is Nothing Then
        Sheets("Synthèse").Cells(28, der_colonne).Value = Round(f.Offset(0, 2).Value / Sheets("Parités").Cells(devise.Row, horizon.Column) / 65, 1)
        Sheets("Synthèse").Cells(28, der_colonne + 1).Value = Round(f.Offset(0, 2).Value / Sheets("Parités").Cells(devise.Row, horizon.Column) / 65, 1)
        End If
        Sheets("Synthèse").Cells(29, der_colonne).Value = f.Offset(0, 2).Value
        Sheets("Synthèse").Cells(29, der_colonne + 1).Value = f.Offset(0, 2).Value
        port_ILN = f.Offset(0, 1).Value

En fait, format me renvoie bien la même chaîne de caractère que j'ai dans la colonne devise "" dans l'onglet parités, mais ma recherche (en rouge ci-dessus) ne trouve rien, devise vaut toujours nothing...

Merci encore à ceux qui planchent sur le problème...
 

Pièces jointes

  • parité_v2.xls
    18 KB · Affichages: 54
Dernière édition:

Compress

XLDnaute Occasionnel
Re : Recherche find sur format monétaire

Ok solution trouvée, en fait tout marcher correctement sauf que dans la colonne devise au lieu d'un point entre les 0, nous avions mis une virgule...:

Donc le format devait être corrigé en "#,##0.00 [$USD]"

Merci à tous ceux qui ont aidé.
 

Statistiques des forums

Discussions
312 448
Messages
2 088 507
Membres
103 873
dernier inscrit
Sabin