Remplacer un caractère par un autre
Résolu
med_mugen
Messages postés
80
Date d'inscription
Statut
Membre
Dernière intervention
-
med_mugen Messages postés 80 Date d'inscription Statut Membre Dernière intervention -
med_mugen Messages postés 80 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Remplacer caractère excel
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Liste déroulante excel - Guide
- Caractere speciaux - Guide
- Word et excel gratuit - Guide
1 réponse
Bonjour,
Le code tel qu'écrit comporte pas mal d'erreurs...
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 :
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 :
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 :
Corrections :
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
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 ^^
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...