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

[VBA] Recherche et remplace d'un format par un autre

15 réponses
Avatar
JièL
Hello,

suite à mes problèmes de conversions de format euro, je change un peu
mon fusil d'épaule.

Je ne suis pas arrivé à faire une macro qui recherche un format et le
remplace par un autre. Je soupçonne que mon R&R ne fonctionne pas car il
y a des guillemets dans le format.

Je voudrais donc remplacer
_(€* # ##0,00_);_(€* (# ##0,00);_(€* "-"??_);_(@_)
par
_-* # ##0,00\ [$€-fr-FR]_-;-* # ##0,00\ [$€-fr-FR]_-;_-* "-"??\
[$€-fr-FR]_-;_-@_-

Merci pour le coup de main

--
JièL

10 réponses

1 2
Avatar
News.aioe.org
Bonjour,
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
JièL
Re bonjour MichD
c'est bien ce genre de truc que j'avais tenté de faire, mais ça ne
fonctionne pas pour une raison que je ne comprend pas.
--------------------------
Erreur d'exécution '1004'
Erreur définie pas l'application ou pas l'objet
--------------------------
et en déboguant c'est la ligne
.NumberFormat = Remplace
qui est en jaune
J'ai adapté les formats comme ceci
Cherche = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
Remplace = "_-* #,##0.00 [$€-fr-FR]_-;-* #,##0.00 [$€-fr-FR]_-;_-*
""-""?? [$€-fr-FR]_-;"
Si j'enregistre une macro qui fait le R&R ça donne ça (j'ai épuré)
Application.FindFormat.Clear
Application.FindFormat.NumberFormat = _
"_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
Application.ReplaceFormat.Clear
Application.ReplaceFormat.NumberFormat = _
"_-* #,##0.00 [$€-fr-FR]_-;-* #,##0.00 [$€-fr-FR]_-;_-* ""-""??
[$€-fr-FR]_-;"
Cells.Replace What:="", Replacement:="", LookAt:=xlPart,
SearchOrder:= _
xlByRows, MatchCase:úlse, SearchFormat:=True, ReplaceFormat:=True
et si je relance cette macro (enregistré je le rappelle) elle se plante
sur la ligne ReplaceFormat.NumberFormat
Application.ReplaceFormat.NumberFormat = _
"_-* #,##0.00 [$€-fr-FR]_-;-* #,##0.00 [$€-fr-FR]_-;_-* ""-""??
[$€-fr-FR]_-;"
Donc je soupçonne le VBA de me mettre des batons dans les (t)rou(e)s
Une idée pour m'en sortir ?
Merci
--
JièL
Le 12/01/2017 à 14:13, News.aioe.org a écrit :
Bonjour,
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
Voici un classeur exemple :
http://www.cjoint.com/c/GAmtLQZI0ki
Essentiellement, j'ai remplacé [$€-fr-FR] par sa valeur hexadécimale
[$€-0x040c]
Écris à Microsoft, tu viens de découvrir un bogue. J'espère que tu
partageras avec moi les millions qui t'enverront!
;-)
MichD
"
Avatar
News.aioe.org
Il doit manquer un "il" quelque part...
MichD
Avatar
News.aioe.org
Le même classeur avec quelques explications en plus... si l'autre ne
fonctionne pas
essaie celui-ci en prenant le temps de lire la petite note IMPORTANTE.
http://www.cjoint.com/c/GAmulKO4qIi
MichD
Avatar
News.aioe.org
Une explication :
Le format affiché = celui dont le symbole monétaire est à la gauche du
nombre...
Si tu enregistres en VBA le fichier avec ce format présentement affiché, ce
geste modifie le format "comptabilité", Si tu regardes dans la fenêtre qui
affiche les différents formats, le format comptabilité n'affiche plus aucun
symbole monétaire. La macro continue de fonctionner, car le fichier est
ouvert en mémoire vive, il n'a pas encore pris pour acquise la modification
qui est survenue, mais lorsque tu fermes et ouvres à nouveau le classeur, la
macro n'existe plus, pour corriger la situation, Il s'agit alors de mettre
le format que tu veux "€ Français (France)" et la macro pour modifier le
format est toujours disponible.
MichD
Avatar
Jacquouille
Bonsoir vous tous,
juste une question:
Pourquoi vouloir à tout prix de ce format compta qui vous emm*****, alors
que le format "monétaire" semble afficher le sigle € à la bonne place?
Pourquoi ne pas utiliser celui-là dès le début?
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 :
o58q2i$137q$
Une explication :
Le format affiché = celui dont le symbole monétaire est à la gauche du
nombre...
Si tu enregistres en VBA le fichier avec ce format présentement affiché, ce
geste modifie le format "comptabilité", Si tu regardes dans la fenêtre qui
affiche les différents formats, le format comptabilité n'affiche plus aucun
symbole monétaire. La macro continue de fonctionner, car le fichier est
ouvert en mémoire vive, il n'a pas encore pris pour acquise la modification
qui est survenue, mais lorsque tu fermes et ouvres à nouveau le classeur, la
macro n'existe plus, pour corriger la situation, Il s'agit alors de mettre
le format que tu veux "€ Français (France)" et la macro pour modifier le
format est toujours disponible.
MichD
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
JièL
Le 12/01/2017 à 20:41, News.aioe.org a écrit :
Voici un classeur exemple :
http://www.cjoint.com/c/GAmtLQZI0ki
Essentiellement, j'ai remplacé [$€-fr-FR] par sa valeur hexadécimale
[$€-0x040c]

Merci pour tes tests, mais je dois avoir un pb que tu n'as pas.
J'ai toujours l'erreur 1004 sur la ligne
.NumberFormat = Remplace
Écris à Microsoft, tu viens de découvrir un bogue.

Y'a longtemps que je ne "m'amuse" plus à remonter la moindre info à MS
car il te réponde systématiquement "by design" qui peut être traduit
librement par "on en a rien à faire" :->
J'espère que tu
partageras avec moi les millions qui t'enverront!
;-)

Voui, pas de pb... j'ai validé le bulletin de participation à la loterie
organisé par Windows et pour être sur de gagner j'ai même payé les frais
;-)))))))
http://arnaqueinternet.com/les-arnaques-par-e-mail/arnaque-a-la-loterie/
--
JièL art naké
Avatar
JièL
Hello Jacquouille,
la raison est simple : le bouton est plus facilement accessible qu'un
clic pour ouvrir une liste puis un clic pour choisir, et, *visuellement*
c'est la même chose.
Avec Excel 5 (pas sur de la version) y'avait un pb identique avec le
bouton d'encadrement qui part défaut générait des traits dans les
cellules adjacentes et quand on voulait enlever ce cadre il fallait le
faire aussi dans celles ci.
Ou encore quand le trait du haut d'une cellule n'était pas le trait du
bas de celle du dessus.
Idem pour Word avec le bouton de numérotation, ça met un souq pas
possible dans la numérotation des styles et c'est d'ailleurs
incompatible, mais le bouton est directement accessible.
Bref, MS s'évertue à nous em*** en faisant comme si il nous la
simplifiait et malheureusement on ne s'en rend pas tout de suite compte
(comme dans mes exemples)
--
JièL Em***
Le 12/01/2017 à 23:47, Jacquouille a écrit :
Bonsoir vous tous,
juste une question:
Pourquoi vouloir à tout prix de ce format compta qui vous emm*****,
alors que le format "monétaire" semble afficher le sigle € à la bonne
place?
Pourquoi ne pas utiliser celui-là dès le début?
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 :
o58q2i$137q$
Une explication :
Le format affiché = celui dont le symbole monétaire est à la gauche du
nombre...
Si tu enregistres en VBA le fichier avec ce format présentement affiché, ce
geste modifie le format "comptabilité", Si tu regardes dans la fenêtre qui
affiche les différents formats, le format comptabilité n'affiche plus aucun
symbole monétaire. La macro continue de fonctionner, car le fichier est
ouvert en mémoire vive, il n'a pas encore pris pour acquise la modification
qui est survenue, mais lorsque tu fermes et ouvres à nouveau le
classeur, la
macro n'existe plus, pour corriger la situation, Il s'agit alors de mettre
le format que tu veux "€ Français (France)" et la macro pour modifier le
format est toujours disponible.
MichD
---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
Brat'ac
Le vendredi 13/01/2017 JièL a écrit :
Bonjour,
Juste pour info, moi aussi
Merci pour tes tests, mais je dois avoir un pb que tu n'as pas.
J'ai toujours l'erreur 1004 sur la ligne
.NumberFormat = Remplace
1 2