Passer des francs à l'euro...

C

Cyrille

Guest
Bonjour à tous et merci d'avance .

J'ai une colonne de chiffres (somme en francs) et je voudrais passer tout en euros donc divisé tout par 6,55957.

Comment faire? Je m'en fou de passé on non par une colonne tierce a la limite si y apas besoin ca m'arrange autant.

Merci
 
V

Vériland

Guest
Bonjour Cyrille et le forum

ben voilà qui va résoudre ton problème...cette macro va te convertir toute une sélection en Euros (€)

Sub francs_euro()
Dim cel As Range, euro$
euro = "#,##0.00 [$€-1]_-;[Red]#,##0.00 [$€-1]_-"
For Each cel In Selection
If cel.Value <> 0 And Not cel.Text Like "*€*" Then
cel.Value = Round(cel.Value / 6.55957, 2)
End If
Next cel
Selection.NumberFormat = euro
End Sub


avec en prime un nombre négatif affiché en rouge...

A+Veriland.gif


PS : macro à copier depuis le forum auquel cas tu risques d'avoir les attributs GRAS du post dedans...
 
A

aandre01

Guest
Beaucoup plus simple qu'une macro.


S'il s'agit de fichiers excel conçus par toi-même, la solution adoptée pour migrer tes tableaux excel de Francs en Euros est la suivante :
Saisis dans une cellule du fichier la constante 6,55957. Sélectionnes cette constante et cliques sur "copier". Sélectionnes toutes les cellules à convertir. Dans le menu "Edition", "Collage Spécial", dans la sous rubrique "Opération" cliques sur "Division" puis "OK". Le nouveau résultat s'affiche en euros et comporte 5 décimales. Arrondisses ce résultat à 2 décimales selon la méthode habituelle. Excel gère la règle des arrondis appliquée pour l'euro.

Tu peux essayer, ça marche.
 
C

Cyrille

Guest
Ce que j'ai oublié de dire c'est que mon champ est au format texte avec un point pas une virgule.

Voilà ma macro :

------------------------------------------------------------------------------------------------
Columns("F:F").Select

Selection.Replace What:=".", Replacement:=",", LookAt _
:=xlPart, SearchOrder:=xlByColumns, MatchCase:=False

Selection.NumberFormat = "0.00"

For Each cel In Selection
If (cel.Value <> "0.00") Then
cel.Value = (cel.Value / 6.55957)
End If
Next cel
 
V

Vériland

Guest
Re,

...si j'ai bien compris tu voudrais remplacer les points par des virgules avant ?

Bon ok..donc tu places cette fois ci cette macro et le tour est joué...

Sub francs_euro()
Dim cel As Range, euro$
For Each cel In Selection
If InStr(1, cel.Text, ".") > 0 Then
cel.Value = CDbl(Val(cel.Text))
End If
Next
euro = "#,##0.00 [$€-1]_-;[Red]#,##0.00 [$€-1]_-"
For Each cel In Selection
If cel.Value <> 0 And Not cel.Text Like "*€*" Then
cel.Value = Round(cel.Value / 6.55957, 2)
End If
Next cel
Selection.NumberFormat = euro
End Sub


...maintenant le principe sera de changer tous les points par des virgules avant d'effectuer la convertion...mais attention...il faut que les cellules contiennent des données numériques et non du texte...

A+Veriland.gif


PS : Macro à copier depuis le forum auquel cas tu risques d'avoir les attributs GRAS du post dedans...
 
@

@+Thierry

Guest
Coucou Vériland, Bonsoir Cyrille, Aandré01, le Forum

Oui il est très utile de rappeler les fonctions intégrées et Ultra Pratiques dans Excel telle que les Opérations dans le "Collage Spécial"... Souvent ignorées de bien des utilisateurs...

Pour cette histoire d'incompatibilité...

Si je n'ai que des cellules avec valeur numérique dans ma sélection, le Code de Véri tourne Impec...

Si j'ai "toto" au milieu, j'ai "Type MissMatch" sur le Round, ce qui est normal, déjà que Toto à une tête au carré, si en plus on l'arrondit !! lol (donc t'inquiète pas Cyril, ton Excel connait très bien Round, mais c'est la tête à toto qui lui fait peur !!)

Non voilà ce que je propose :

Sub francs_euro()
Dim cel As Range, euro$
For Each cel In Selection
If IsNumeric(cel) Then
If InStr(1, cel.Text, ".") > 0 Then
cel.Value = CDbl(Val(cel.Text))
End If
If cel.Value <> 0 And Not cel.Text Like "*€*" Then
cel.Value = Round(cel.Value / 6.55957, 2)
End If
End If
Next cel
euro = "#,##0.00 [$€-1]_-;[Red]#,##0.00 [$€-1]_-"
Selection.NumberFormat = euro
End Sub

D'ailleurs on notera qu'une seule passe suffit pour tout faire, je ne sais pas où Véri voulait aller en deux passes !!

Bonne Soirée
@+Thierry
 
V

Vériland

Guest
non...ton erreur provient du fait qu'une cellule dans la colonne C contient soit une donnée autre que numérique soit une cellule vide...

...le Round indique combien de positions à droite de la virgule sont incluses dans le nombre. Si cette valeur est omise, les entiers sont arrondis par la fonction Round...

elle ne doit pas être en cause...du moins j'ne pense pas...c'est quoi ta version Excel ?

en fait ce qu'il faudrait savoir c'est ce qu'il y a exactement comme donnée dans tes cellules...il suffit d'un seul texte pour que ça beug...

à suivre...

A+Veriland.gif
 
@

@+Thierry

Guest
Tiens, je viens de faire un test "zarbi" ..


Moi je suis en US, donc c'est le point chez moi, le séparateur de décimales...

J'ai donc changé cette ligne :
If InStr(1, cel.Text, ",") > 0 Then

et je mets ceci dans deux cellules :
125.55
125,55 (considéré donc en text chez moi....)

Puis je fais tourner la macro... Résultat :
19.14 €
19.06 €

Pas Glop Pas Glop !!

Bon là je dois m'en aller, mais j'y reviendrai !!! lol

@Suivre... comme tu dis Véri...
@+Thierry
 
V

Vériland

Guest
Hello Thierry,

lool...j't'avais pas vu...je reçois le courrier en retard là...

oui c'est juste une seule passe pourrait être suffisante...en fait j'ai répondu à David par étape depuis le premier post et j'ai inclu la procédure à chaque fois...

Par contre j'ai essayé ta macro et la condition du point (.) converti en virgule (,) n'est plus prise en compte dans ta macro...enfin je regarde car il y a kekchose qui m'échappe là...
 
@

@+Thierry

Guest
Me revoili, me revoilà......... ;-)

Sub francs_euro()
Dim cel As Range, euro$
For Each cel In Selection
If InStr(1, cel.Text, ".") > 0 Then
cel.Value = CDbl(Val(cel.Text))
End If
If IsNumeric(cel) Then
If cel.Value <> 0 And Not cel.Text Like "*€*" Then
cel.Value = Round(cel.Value / 6.55957, 2)
End If
End If
Next cel
euro = "#,##0.00 [$€-1]_-;[Red]#,##0.00 [$€-1]_-"
Selection.NumberFormat = euro
End Sub

Glop Glop


@+Thierry (y avait pas grand chose à changer !! lol)
 
J

Jean-Marie

Guest
Bonsoir tout le monde

Je post une fichier contenant une macro XL4, à l'ouverture du fichier la macro une barre d'outils sera créée et affichée, et le fichier sera masqué pour le voir cliquer sur le menu Fenêtre/Afficher.

A partir de ce moment dans n'importe quel classeur, il suffit de sélectionner une multisélection de plages de cellules, pour convertir soit en euros (1er bouton) soit en francs (2ème bouton).

Ces macros modifient aussi bien des nombres sous forme de texte, des valeurs numériques, et analyse les formules pour les convertir (si si).

le 3ème bouton affiche une boîte de dialogue, (pas un USF), pour modifier le taux et différence option,

Les deux autres sont pour le format d'affichage.

Pour avoir de nouveau cette barre d'outils lors du prochain lancement d'excel, il faudra de nouveau ouvrir le fichier, dans ce cas la barre d'outils ne sera qu'affichée.

J'ai réalisé pour le fun cette macro, sur une idée de mon frère.

Bonne journée

@+Jean-Marie
 

Pièces jointes

  • BasculeEuros.zip
    11.3 KB · Affichages: 38
  • BasculeEuros.zip
    11.3 KB · Affichages: 48
  • BasculeEuros.zip
    11.3 KB · Affichages: 50

Discussions similaires

  • Question
Microsoft 365 TCD
Réponses
12
Affichages
389

Statistiques des forums

Discussions
313 091
Messages
2 095 193
Membres
106 218
dernier inscrit
TontonAnton