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
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
A voir également:
- Remplacer caractère excel
- Caractère ascii - Guide
- Liste déroulante excel - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Remplacer disque dur par ssd - Guide
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 751
27 janv. 2016 à 09:05
27 janv. 2016 à 09:05
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
27 janv. 2016 à 09:57
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 ^^
27 janv. 2016 à 11:04
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...
27 janv. 2016 à 12:37
27 janv. 2016 à 12:32