Remplacer un caractère par un autre

Résolu/Fermé
med_mugen Messages postés 80 Date d'inscription lundi 15 juin 2015 Statut Membre Dernière intervention 8 juin 2016 - 26 janv. 2016 à 17:12
med_mugen Messages postés 80 Date d'inscription lundi 15 juin 2015 Statut Membre Dernière intervention 8 juin 2016 - 27 janv. 2016 à 12:37
Bonjour à tous et toutes,

Je contacte juste pour savoir pourquoi ma macro ne fonctionne pas (ne fait pas le job) pourtant je suis certain de ne pas avoir commis d'imper.

Si quelqu'un pouvait m'aider je vous met en joint le fichier en question


https://www.cjoint.com/c/FAAqmc5MSw6

Par avance merci pour vos éclaircissements.

A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
27 janv. 2016 à 09:05
Bonjour,

Le code tel qu'écrit comporte pas mal d'erreurs...
Sub remplacer()
    Dim c As Range
    Dim d As String

    For Each c In Range([E4], [E65536].End(xlDown))
        d = Replace(c, ",", ".")
    Next c
End Sub


1- [E65536].End(xlDown)
Commence à la cellule E65536 et descend jusqu'à la première ligne vide et/ou non vide vers le bas du tableur...
Essaie ce test :
Sub test()
MsgBox [E65536].End(xlDown).Row
End Sub

Toi, vraisemblablement, tu souhaites la dernière ligne remplie colonne E.
A lire : https://forums.commentcamarche.net/forum/affich-37622001-vba-detection-de-cellule-vide-ligne-colonnne

2- d = Replace(c, ",", ".")
Cool. Ca c'est bon, pas d'erreur.
Mais, est ce bien ce que tu veux?
Que fait cette ligne?
Elle stocke, dans la variable d (en mémoire donc, pas dans ta feuille) la valeur de Replace.
Bon, ne te reste qu'à restituer cette valeur dans la feuille.
Comment?
Simplement :
c.Value = d


3- Excel ne remplace pas ma virgule par le point! Grrr!!!
Et oui! Excel reconnait les nombres pour ce qu'ils sont, des nombres!
Si, dans tes paramètres Windows, le séparateur décimal est la virgule, le fait de remplacer celle-ci par un point, n'empêchera pas Excel de systématiquement faire l'opération inverse.
Comment y remédier?
Simplement en disant à Excel que le format de la cellule souhaité est "texte".
Cela s'écrit comme ceci :
c.NumberFormat = "@"


Corrections :
Sub remplacer()
    Dim c As Range
    Dim d As String

    For Each c In Range([E4], [E65536].End(xlUp))
        d = Replace(c.Value, ",", ".")
        c.NumberFormat = "@"        
        c.Value = d
    Next c
End Sub

0
med_mugen Messages postés 80 Date d'inscription lundi 15 juin 2015 Statut Membre Dernière intervention 8 juin 2016
27 janv. 2016 à 09:57
merci pijaku pour ton aide,

en effet l'erreur était liée au format du contenu de mes cellules qui était des nombres, et donc non pris en compte par Replace ()

merci pour tes explications en effet toutes ces subtilités me rendent fou par moment ^^
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > med_mugen Messages postés 80 Date d'inscription lundi 15 juin 2015 Statut Membre Dernière intervention 8 juin 2016
27 janv. 2016 à 11:04
Il faudrait relire mes explications.
Je n'ai jamais dit que Replace ne prenait pas en compte.
Replace fait bien son travail.
C'est Excel qui interprète les données, ici des nombres pour des nombres...
0
med_mugen Messages postés 80 Date d'inscription lundi 15 juin 2015 Statut Membre Dernière intervention 8 juin 2016 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
27 janv. 2016 à 12:37
c ouf ce pas à pas, totalement limpide comme de l'eau de source, merci mille fois PIjaku pour cette approche pedagogique extrêmement instructif
0
med_mugen Messages postés 80 Date d'inscription lundi 15 juin 2015 Statut Membre Dernière intervention 8 juin 2016
27 janv. 2016 à 12:32
ok
0