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

Convertir Nombres sous forme de texte en valeurs

9 réponses
Avatar
Max
Bonjour,

Dans un tableau importé du Web, tous les nombres sont séparés des milliers
par une espace et ils ont une espace après les unités. Pour les tranformer
en valeurs, je dois supprimer ces deux espaces manuellement.
Comment peut-on faire ce travail par une formule ou par VBA ?
Merci de votre aide
Max

9 réponses

Avatar
Garette
Bonjour,

Ca peut etre fait avec une formule dans la feuille de calcul :
=CNUM(SUBSTITUE(A1;" ";""))
A1 contient la valeur avec les espaces et la formule est à recopier.

Ensuite, on peut faire un Copier/Collage Special Valeurs pour garder
définitivement les valeurs sous la nouvelle forme
Avatar
Max
Bonjour,

Merci du conseil, mais ce n'est pas encore parfait.
Cette formule supprime bien l'espace entre les milliers et les centaines,
mais pas l'espace à droite des unités. Le résultat de la formule est donc
#VALEUR, mais quand je supprime l'espace à droite, c'est bien la valeur
apparaît.
Salutations,
Max

"Garette" a écrit dans le message de news:

Bonjour,

Ca peut etre fait avec une formule dans la feuille de calcul :
=CNUM(SUBSTITUE(A1;" ";""))
A1 contient la valeur avec les espaces et la formule est à recopier.

Ensuite, on peut faire un Copier/Collage Special Valeurs pour garder
définitivement les valeurs sous la nouvelle forme



Avatar
Garette
Re,

Alors ça veut dire qu'il y a des caracteres de controle qui ne sont pas des
espaces ....
En effet j'ai testé cette formule sur par exemple la valeur : " 12354
.00 1111" (sans les guillemets)
Et ça me renvoi bien 12354.00111

Si tu veux je peux regarder une les valeurs si tu mets un morceau de fichier
sur www.cjoint.com.
Sinon essaye avec la fonction =CODE
=CODE(" ") doit renvoyer 32 qui est le code de l'espace.
Si du fait CODE du caractere que tu crois etre un espace tu pourras regler
le pb avec la fonction SUBSTITUE


"Max" a écrit dans le message de news:

Bonjour,

Merci du conseil, mais ce n'est pas encore parfait.
Cette formule supprime bien l'espace entre les milliers et les centaines,
mais pas l'espace à droite des unités. Le résultat de la formule est donc
#VALEUR, mais quand je supprime l'espace à droite, c'est bien la valeur
apparaît.
Salutations,
Max

"Garette" a écrit dans le message de news:

Bonjour,

Ca peut etre fait avec une formule dans la feuille de calcul :
=CNUM(SUBSTITUE(A1;" ";""))
A1 contient la valeur avec les espaces et la formule est à recopier.

Ensuite, on peut faire un Copier/Collage Special Valeurs pour garder
définitivement les valeurs sous la nouvelle forme







Avatar
Max
Rebonjour,
Merci encore, je dois m'absenter, mais je vais faire ces essais demain.
Max

"Garette" a écrit dans le message de news:

Re,

Alors ça veut dire qu'il y a des caracteres de controle qui ne sont pas
des espaces ....
En effet j'ai testé cette formule sur par exemple la valeur : " 12354
.00 1111" (sans les guillemets)
Et ça me renvoi bien 12354.00111

Si tu veux je peux regarder une les valeurs si tu mets un morceau de
fichier sur www.cjoint.com.
Sinon essaye avec la fonction =CODE
=CODE(" ") doit renvoyer 32 qui est le code de l'espace.
Si du fait CODE du caractere que tu crois etre un espace tu pourras regler
le pb avec la fonction SUBSTITUE


"Max" a écrit dans le message de news:

Bonjour,

Merci du conseil, mais ce n'est pas encore parfait.
Cette formule supprime bien l'espace entre les milliers et les centaines,
mais pas l'espace à droite des unités. Le résultat de la formule est donc
#VALEUR, mais quand je supprime l'espace à droite, c'est bien la valeur
apparaît.
Salutations,
Max

"Garette" a écrit dans le message de news:

Bonjour,

Ca peut etre fait avec une formule dans la feuille de calcul :
=CNUM(SUBSTITUE(A1;" ";""))
A1 contient la valeur avec les espaces et la formule est à recopier.

Ensuite, on peut faire un Copier/Collage Special Valeurs pour garder
définitivement les valeurs sous la nouvelle forme











Avatar
dOUdOU
Bonsoir Max,

Tu peux également sélectionner dans la barre de formule avec la souris
uniquement l'espace ou le caractère de contrôle puis copier (Ctrl+C), tu sors
de la barre de formule par Echap, puis tu appelles le menu :
EditionRemplacer dans la boite de dialogue tu colles (Ctrl+V) dans la zone
"Rechercher" mais tu ne mets rien dans "remplacer" puis tu click sur le
bouton "Remplacer tout".

Cdt

dOUdOU


Rebonjour,
Merci encore, je dois m'absenter, mais je vais faire ces essais demain.
Max

"Garette" a écrit dans le message de news:

Re,

Alors ça veut dire qu'il y a des caracteres de controle qui ne sont pas
des espaces ....
En effet j'ai testé cette formule sur par exemple la valeur : " 12354
.00 1111" (sans les guillemets)
Et ça me renvoi bien 12354.00111

Si tu veux je peux regarder une les valeurs si tu mets un morceau de
fichier sur www.cjoint.com.
Sinon essaye avec la fonction =CODE
=CODE(" ") doit renvoyer 32 qui est le code de l'espace.
Si du fait CODE du caractere que tu crois etre un espace tu pourras regler
le pb avec la fonction SUBSTITUE


"Max" a écrit dans le message de news:

Bonjour,

Merci du conseil, mais ce n'est pas encore parfait.
Cette formule supprime bien l'espace entre les milliers et les centaines,
mais pas l'espace à droite des unités. Le résultat de la formule est donc
#VALEUR, mais quand je supprime l'espace à droite, c'est bien la valeur
apparaît.
Salutations,
Max

"Garette" a écrit dans le message de news:

Bonjour,

Ca peut etre fait avec une formule dans la feuille de calcul :
=CNUM(SUBSTITUE(A1;" ";""))
A1 contient la valeur avec les espaces et la formule est à recopier.

Ensuite, on peut faire un Copier/Collage Special Valeurs pour garder
définitivement les valeurs sous la nouvelle forme
















Avatar
Max
Bonjour dOUdOU,
Merci de ton conseil. Au début, ton traitement marchait seulememt pour
l'espace à droite des chiffres qui étaient déjà "nettoyés" avec la formule
=CNUM(SUBSTITUE(A1;" ";"") ,qui enlevait l'espace entre les milliers et les
centaines. Après, j'ai fait ce que tu a proposé avec l'espace après les
milliers, et ça fonctionnait aussi. Ensuite, avec l'enregistreur de macros
et quelques essais, j'ai trouvé cette solution:
Sub EffacerEspaces()
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart
End Sub
Les deux lignes semblent ête identiques, mais elles sont nécessaires. Entre
le " " de la première ligne, j'ai collé l'espace à droite du chiffre, et
entre le deuxième " ", celle entre les milliers et les centaines. Je pense
que Garette a raison, pour Excel, ces deux espaces ne sont pas identiques.
Merci encore, et bonne journée.
Cordialement,
Max


"dOUdOU" a écrit dans le message de news:

Bonsoir Max,

Tu peux également sélectionner dans la barre de formule avec la souris
uniquement l'espace ou le caractère de contrôle puis copier (Ctrl+C), tu
sors
de la barre de formule par Echap, puis tu appelles le menu :
EditionRemplacer dans la boite de dialogue tu colles (Ctrl+V) dans la
zone
"Rechercher" mais tu ne mets rien dans "remplacer" puis tu click sur le
bouton "Remplacer tout".

Cdt

dOUdOU


Rebonjour,
Merci encore, je dois m'absenter, mais je vais faire ces essais demain.
Max

"Garette" a écrit dans le message de news:

Re,

Alors ça veut dire qu'il y a des caracteres de controle qui ne sont pas
des espaces ....
En effet j'ai testé cette formule sur par exemple la valeur : "
12354
.00 1111" (sans les guillemets)
Et ça me renvoi bien 12354.00111

Si tu veux je peux regarder une les valeurs si tu mets un morceau de
fichier sur www.cjoint.com.
Sinon essaye avec la fonction =CODE
=CODE(" ") doit renvoyer 32 qui est le code de l'espace.
Si du fait CODE du caractere que tu crois etre un espace tu pourras
regler
le pb avec la fonction SUBSTITUE


"Max" a écrit dans le message de news:

Bonjour,

Merci du conseil, mais ce n'est pas encore parfait.
Cette formule supprime bien l'espace entre les milliers et les
centaines,
mais pas l'espace à droite des unités. Le résultat de la formule est
donc
#VALEUR, mais quand je supprime l'espace à droite, c'est bien la
valeur
apparaît.
Salutations,
Max

"Garette" a écrit dans le message de
news:

Bonjour,

Ca peut etre fait avec une formule dans la feuille de calcul :
=CNUM(SUBSTITUE(A1;" ";""))
A1 contient la valeur avec les espaces et la formule est à recopier.

Ensuite, on peut faire un Copier/Collage Special Valeurs pour garder
définitivement les valeurs sous la nouvelle forme


















Avatar
Max
Bonjour Garette,

Voilà ce que j'ai répondu à dOUdOU:
Bonjour dOUdOU,
Merci de ton conseil. Au début, ton traitement marchait seulememt pour
l'espace à droite des chiffres qui étaient déjà "nettoyés" avec la formule
=CNUM(SUBSTITUE(A1;" ";"") ,qui enlevait l'espace entre les milliers et les
centaines. Après, j'ai fait ce que tu a proposé avec l'espace après les
milliers, et ça fonctionnait aussi. Ensuite, avec l'enregistreur de macros
et quelques essais, j'ai trouvé cette solution:
Sub EffacerEspaces()
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart
End Sub
Les deux lignes semblent ête identiques, mais elles sont nécessaires. Entre
le " " de la première ligne, j'ai collé l'espace à droite du chiffre, et
entre le deuxième " ", celle entre les milliers et les centaines. Je pense
que Garette a raison, pour Excel, ces deux espaces ne sont pas identiques.



J'aimerais savoir la différence entre ces deux espcaces et je t'envoie un
morceau de mon fichier par ce lien (Je n'ai jamais utilisé le site cijoint,
j'espère que ça marche):

http://cjoint.com/?cgkGRN5OzT
Merci pour tout
Cordialement
Max


"Garette" a écrit dans le message de news:

Re,

Alors ça veut dire qu'il y a des caracteres de controle qui ne sont pas
des espaces ....
En effet j'ai testé cette formule sur par exemple la valeur : " 12354
.00 1111" (sans les guillemets)
Et ça me renvoi bien 12354.00111

Si tu veux je peux regarder une les valeurs si tu mets un morceau de
fichier sur www.cjoint.com.
Sinon essaye avec la fonction =CODE
=CODE(" ") doit renvoyer 32 qui est le code de l'espace.
Si du fait CODE du caractere que tu crois etre un espace tu pourras regler
le pb avec la fonction SUBSTITUE


"Max" a écrit dans le message de news:

Bonjour,

Merci du conseil, mais ce n'est pas encore parfait.
Cette formule supprime bien l'espace entre les milliers et les centaines,
mais pas l'espace à droite des unités. Le résultat de la formule est donc
#VALEUR, mais quand je supprime l'espace à droite, c'est bien la valeur
apparaît.
Salutations,
Max

"Garette" a écrit dans le message de news:

Bonjour,

Ca peut etre fait avec une formule dans la feuille de calcul :
=CNUM(SUBSTITUE(A1;" ";""))
A1 contient la valeur avec les espaces et la formule est à recopier.

Ensuite, on peut faire un Copier/Collage Special Valeurs pour garder
définitivement les valeurs sous la nouvelle forme











Avatar
Garette
Re,

Le code 32 est l'espace "normal"
Le code 160 est l'espace insécable. 2 mots séparés par un espace insécable
sont considérés comme un seul mot.

Pour taper un espace insécable dans Excel taper Alt+0160
Dans Word CTRL+MAJ+ESPACE ou(Alt+0160)

Pour une meilleure lisibilité, tu peux utiliser le code :
Sub EffacerEspaces()
Selection.Replace What:=Chr(32), Replacement:="", LookAt:=xlPart
Selection.Replace What:=Chr(160), Replacement:="", LookAt:=xlPart
End Sub
Avatar
Max
Rebonjour,
Merci, j'ai enfin compris cette différénce et j'ai modifié les 2 lignes de
codes, sinon je n'aurai plus rien compris dans quelques mois.
Salutations
Max

"Garette" a écrit dans le message de news:
%23%23%231l$
Re,

Le code 32 est l'espace "normal"
Le code 160 est l'espace insécable. 2 mots séparés par un espace insécable
sont considérés comme un seul mot.

Pour taper un espace insécable dans Excel taper Alt+0160
Dans Word CTRL+MAJ+ESPACE ou(Alt+0160)

Pour une meilleure lisibilité, tu peux utiliser le code :
Sub EffacerEspaces()
Selection.Replace What:=Chr(32), Replacement:="", LookAt:=xlPart
Selection.Replace What:=Chr(160), Replacement:="", LookAt:=xlPart
End Sub