Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Excel 2016/365 Bug ou pas avec les € (Euros)

15 réponses
Avatar
JièL
Hello,

j'ai un pb avec une macro sous Excel 2016/365.
J'ai quelques milliards de classeurs à passer à la moulinette (simplifié
ici) ci dessous. (hein ? oui je suis de Marseille, à quoi ça se voit ?)

Voici comment reproduire mon pb

mettez quelques chiffres dans quelques cellules que vous mettrez en
forme avec le bouton "Format nombre comptabilité" (pas la flèche à coté)
chez moi il ressemble à un billet et des pièces

ensuite vous collez cette macro dans le classeur des macros personnelles

Sub Enreg_Ferme_Ouvre()
ActiveWorkbook.SaveAs Filename:="test1.xlsx"
ActiveWorkbook.Close
Workbooks.Open Filename:="test1.xlsx" ', local:=True
End Sub

et vous la lancez à partir du classeur où vous avez mis les nombre en roro.

Les roros sont placés où après l'exécution de la macro ? chez moi ils
sont à gauche et ça ça va pas.
Et le bouton "format nombre comptabilité" il ressemble à quoi maintenant
? chez moi à un $

Vous pouvez décommentez le local:=true ça ne change qu'un seul truc, le
bouton.

Si au lieu d'utiliser le bouton vous utilisez la flèche et choisissez "€
Français (France)" le pb disparait

Une idée de ce qu'il faut que je modifie pour avoir mes roros toujours à
droites (à part me taper tous les classeurs à remettre en forme).

NB j'accepte des instructions macro supplémentaires, mais perso je ne
suis pas arrivé à faire un recherche et remplace.

Merci pour tout d'avance.

PS : je n'avais pas ce pb avec 2007, 2010 ni 2013
PS bis : Jacquouille, tu peux pas comprendre ni tester, c'est pas de ta
génération ;-D

--
JièL emmouscaillé

5 réponses

1 2
Avatar
News.aioe.org
Pour remplacer par macro un format de cellules dans tout le classeur :
Assure-toi que les 2 formats de cellules de départ sont bons!
'------------------------------------------------------------------------
Sub ReplaceFormats()
Dim Format_Cherché As CellFormat
Dim Format_Remplacement As CellFormat
Dim rngReplace As Boolean, sMessage As String
Dim Sh As Worksheet, Rg As Range
Dim Cherche As String
Dim Remplace As String
'Tes formats de cellules
Cherche = "_(€* # ##0,00_);_(€* (# ##0,00);_(€* "" - ""??_);_(@_)"
Remplace = "_-* # ##0,00 [$€-fr-FR]_-;-* # ##0,00 [$€-fr-FR]_-;_-* "" -
""?? [$€-fr-FR]_-;"
'Definit les variables
Set Format_Cherché = Application.FindFormat
Set Format_Remplacement = Application.ReplaceFormat
'Pour chacune des feuille du classeur :
For Each Sh In ThisWorkbook.Worksheets
Set Rg = Sh.UsedRange
'Définis le critère recherchant le format désiré.
With Format_Cherché
.Clear
.NumberFormat = Cherche
End With
'Définis le format de remplacement
With Format_Remplacement
.Clear
.NumberFormat = Remplace
End With
'Fais le remplacement du format
Rg.Replace What:="", Replacement:="", _
SearchFormat:=True, ReplaceFormat:=True
Next
Format_Cherché.Clear
Format_Remplacement.Clear
End Sub
'------------------------------------------------------------------------
MichD
Avatar
News.aioe.org
Si tu appliques le format de cellule manuellement comme dans cette image
sur cette image : http://www.cjoint.com/c/GAmdwBeNaCi
Le format de cellule ne change pas, quelles que soient les manipulations.
Dans l'autre message, tu as une procédure pour remplacer le format des
cellules par VBA.
MichD
Avatar
News.aioe.org
J'ai fait un petit oubli. Dans les formats que tu as choisis, tu dois
remplacer
la virgule par le point dans # ##0.00 car tu es en VBA (américain)
Comme ceci :
Cherche = "_(€* # ##0.00_);_(€* (# ##0.00);_(€* "" - ""??_);_(@_)"
Remplace = "_-* # ##0.00 [$€-fr-FR]_-;-* # ##0.00 [$€-fr-FR]_-;_-* "" -
""?? [$€-fr-FR]_-;"
MichD
Pour remplacer par macro un format de cellules dans tout le classeur :
Assure-toi que les 2 formats de cellules de départ sont bons!
'------------------------------------------------------------------------
Sub ReplaceFormats()
Dim Format_Cherché As CellFormat
Dim Format_Remplacement As CellFormat
Dim rngReplace As Boolean, sMessage As String
Dim Sh As Worksheet, Rg As Range
Dim Cherche As String
Dim Remplace As String
'Tes formats de cellules
Cherche = "_(€* # ##0,00_);_(€* (# ##0,00);_(€* "" - ""??_);_(@_)"
Remplace = "_-* # ##0,00 [$€-fr-FR]_-;-* # ##0,00 [$€-fr-FR]_-;_-* "" -
""?? [$€-fr-FR]_-;"
'Definit les variables
Set Format_Cherché = Application.FindFormat
Set Format_Remplacement = Application.ReplaceFormat
'Pour chacune des feuille du classeur :
For Each Sh In ThisWorkbook.Worksheets
Set Rg = Sh.UsedRange
'Définis le critère recherchant le format désiré.
With Format_Cherché
.Clear
.NumberFormat = Cherche
End With
'Définis le format de remplacement
With Format_Remplacement
.Clear
.NumberFormat = Remplace
End With
'Fais le remplacement du format
Rg.Replace What:="", Replacement:="", _
SearchFormat:=True, ReplaceFormat:=True
Next
Format_Cherché.Clear
Format_Remplacement.Clear
End Sub
'------------------------------------------------------------------------
MichD
Avatar
News.aioe.org
Bonjour Jacquouille,
'---------------------------
As-tu fait le test avec le sigle € de Belgique.
Sur mon 2003, j'ai 10-15 € (France, Belgique... et tous les pays d'Europe)
'---------------------------
Sors ta canne à pêche, je fais t'apprendre à pécher! ;-)
A ) En A1, affiche la fenêtre des formats , choisis comptabilité
au lieu de choisir le symbole "Euro" dans la liste déroulante,
utilise la liste déroulante € (Français, Belgique)
regarde cette image en substituant le format pour celui de la Belgique.
http://www.cjoint.com/c/GAmdwBeNaCi
B ) Pour obtenir l'équivalent en VBA
dans une procédure, utilise ceci pour afficher dans la cellule B1
le format de la cellule A1
Range("B1") = "'" & range("A1")
C ) Maintenant que tu as le format de cellule en B1
En vba, tu peux faire un copier-coller du contenu de la cellule B1
(sans l'apostrophe et en changeant la virgule pour le point dans les
formats)
que tu peux appliquer pour la plage de ton choix
Range("A5:C50").NumberFormat = "La chaine de caractère obtenue"
Tu peux faire cela pour le pays de ton choix. Cela fixe le format de cellule
définitivement!
MichD
Avatar
Jacquouille
Re
En fait, sur mon vieux 2003, je sélectionne une cel, puis, d'un clic droit,
format cellule.
Si je choisis "comptabilité", le sigle € se met devant le nombre.
Si je choisis "monétaire", il se met derrière.
Je n'ai pas encore testé via macro, car je crains la Loi de Murphy.
Puisque ça va, je le laisse tel quel.
Je te remercie beaucoup pour cette explication... que je garde précieusement
dans mes archives
Bonne soirée
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"News.aioe.org" a écrit dans le message de groupe de discussion :
o5837l$1ov0$
Bonjour Jacquouille,
'---------------------------
As-tu fait le test avec le sigle € de Belgique.
Sur mon 2003, j'ai 10-15 € (France, Belgique... et tous les pays d'Europe)
'---------------------------
Sors ta canne à pêche, je fais t'apprendre à pécher! ;-)
A ) En A1, affiche la fenêtre des formats , choisis comptabilité
au lieu de choisir le symbole "Euro" dans la liste déroulante,
utilise la liste déroulante € (Français, Belgique)
regarde cette image en substituant le format pour celui de la Belgique.
http://www.cjoint.com/c/GAmdwBeNaCi
B ) Pour obtenir l'équivalent en VBA
dans une procédure, utilise ceci pour afficher dans la cellule B1
le format de la cellule A1
Range("B1") = "'" & range("A1")
C ) Maintenant que tu as le format de cellule en B1
En vba, tu peux faire un copier-coller du contenu de la cellule B1
(sans l'apostrophe et en changeant la virgule pour le point dans les
formats)
que tu peux appliquer pour la plage de ton choix
Range("A5:C50").NumberFormat = "La chaine de caractère obtenue"
Tu peux faire cela pour le pays de ton choix. Cela fixe le format de cellule
définitivement!
MichD
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
1 2