[VBA] Recherche et remplace d'un format par un autre
Le
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
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
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
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 :
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
"
MichD
fonctionne pas
essaie celui-ci en prenant le temps de lire la petite note IMPORTANTE.
http://www.cjoint.com/c/GAmulKO4qIi
MichD
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
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
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
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" :->
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é
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 :
Bonjour,
Juste pour info, moi aussi