Passer des francs à l'euro...

  • Initiateur de la discussion Initiateur de la discussion Cyrille
  • 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 !

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
 
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...
 
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.
 
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
 
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...
 
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
 
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
 
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
 
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à...
 
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)
 
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

- 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
5
Affichages
1 K
Retour