Convertir cellule+lettre en cellule+signe
Résolu
MEL
-
MEL -
MEL -
bonjour,
concrètement j'ai des cellules de ce type:
1200023.24 D
4501.02 C
D débit et C pour credit (dans une seule cellule)
et je veux ce résultat là
-1200023.24
+4501.02
afin de pouvoir faire des graphiques.
J'ai essayé bcp de choses:
1-trouver un format personnalisé - pas trouvé
2-convertir, cad, mettre le nbre d'un côté et la lettre de l'autre - pas possible car pas tjrs le même nbre de caractères. deplus, la cellule où il me reste les chiffres sont considérés comme du texte, dc impossible à exploiter après
Je ne sais pas quoi faire:
-trouver la solution pour convertir mes cellules ou
-arriver à faire un graphique avec les données existantes.
merci de votre aide
concrètement j'ai des cellules de ce type:
1200023.24 D
4501.02 C
D débit et C pour credit (dans une seule cellule)
et je veux ce résultat là
-1200023.24
+4501.02
afin de pouvoir faire des graphiques.
J'ai essayé bcp de choses:
1-trouver un format personnalisé - pas trouvé
2-convertir, cad, mettre le nbre d'un côté et la lettre de l'autre - pas possible car pas tjrs le même nbre de caractères. deplus, la cellule où il me reste les chiffres sont considérés comme du texte, dc impossible à exploiter après
Je ne sais pas quoi faire:
-trouver la solution pour convertir mes cellules ou
-arriver à faire un graphique avec les données existantes.
merci de votre aide
A voir également:
- Convertir cellule+lettre en cellule+signe
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Excel cellule couleur si condition texte - Guide
- Proteger cellule excel - Guide
- Clavier iphone chiffre et lettre - Guide
- Aller à la ligne dans une cellule excel - Guide
10 réponses
Salut le Forum
Autre Formule
Mytå
Autre Formule
SI(ESTERR(CHERCHE("D";B2));1;-1)*SUBSTITUE(SUBSTITUE(SUBSTITUE(B2;"C";"");"D";"");CAR(160);"")
Mytå
Bonjour,
Le souci vient du fait que tes valeurs (par exemple : 73 128,53 C) contiennent un espace au lieu du séparateur de millier. En fait, tu as 73espace128,53...
Qui plus est un espace "insécable".
Alors pour faire ce que tu souhaites, tu dois :
1- sélectionner, dans la barre de formule, un de ces espaces insécables :

Et le copier (Ctrl + C)
2- Sélectionner toute la colonne B puis taper Ctrl+H
dans la case recherche"r : coller (Ctrl + V) (pour y placer ton espace insécable)
dans la case remplacer par : ne rien mettre
3- cliquer sur remplacer tout.
4- Ta formule devient, par exemple et pour faire simple :
=SI(DROITE(B2;1)="C";GAUCHE(B2;NBCAR(B2)-1)*1;SI(DROITE(B2;1)="D";GAUCHE(B2;NBCAR(B2)-1)*-1;"erreur"))
🎼 Cordialement,
Franck 🎶
Le souci vient du fait que tes valeurs (par exemple : 73 128,53 C) contiennent un espace au lieu du séparateur de millier. En fait, tu as 73espace128,53...
Qui plus est un espace "insécable".
Alors pour faire ce que tu souhaites, tu dois :
1- sélectionner, dans la barre de formule, un de ces espaces insécables :

Et le copier (Ctrl + C)
2- Sélectionner toute la colonne B puis taper Ctrl+H
dans la case recherche"r : coller (Ctrl + V) (pour y placer ton espace insécable)
dans la case remplacer par : ne rien mettre
3- cliquer sur remplacer tout.
4- Ta formule devient, par exemple et pour faire simple :
=SI(DROITE(B2;1)="C";GAUCHE(B2;NBCAR(B2)-1)*1;SI(DROITE(B2;1)="D";GAUCHE(B2;NBCAR(B2)-1)*-1;"erreur"))
🎼 Cordialement,
Franck 🎶
Bonjour,
Il y a un autre piège dans votre fichier: le séparateur de milliers n'est pas une espace simple (CAR(32)) mais une espace insécable (CAR(160)).
2 solutions:
1- Sélectionner tout le champ de Solde
Édition Remplacer (ou Ctrl+h) et dans la zone Rechercher taper 0160 en maintenant la touche Alt enfoncée, dans la zone Remplacer par ne rien mettre. Clic sur remplacer tout.
en colonne C recopier la formule donnée au #2.
=GAUCHE(A2;NBCAR(A2)-2)*(1-(2*(DROITE(A2;1)="D")))
2- En colonne C recopier directement la fomule
=GAUCHE(SUBSTITUE(B2;CAR(160);"");NBCAR(B2)-2)*(1-(2*(DROITE(B2;1)="D")))
Tracer le graphique avec les champs des colonnes A et C.
Nota: comme quoi un fichier c'est utile ;-)
Il y a un autre piège dans votre fichier: le séparateur de milliers n'est pas une espace simple (CAR(32)) mais une espace insécable (CAR(160)).
2 solutions:
1- Sélectionner tout le champ de Solde
Édition Remplacer (ou Ctrl+h) et dans la zone Rechercher taper 0160 en maintenant la touche Alt enfoncée, dans la zone Remplacer par ne rien mettre. Clic sur remplacer tout.
en colonne C recopier la formule donnée au #2.
=GAUCHE(A2;NBCAR(A2)-2)*(1-(2*(DROITE(A2;1)="D")))
2- En colonne C recopier directement la fomule
=GAUCHE(SUBSTITUE(B2;CAR(160);"");NBCAR(B2)-2)*(1-(2*(DROITE(B2;1)="D")))
Tracer le graphique avec les champs des colonnes A et C.
Nota: comme quoi un fichier c'est utile ;-)
bonjour
voila la solution
a toi de voir si ca te convient
A+
Maurice
voila la solution
a toi de voir si ca te convient
Sub Convert()
Application.ScreenUpdating = False
NombLig = Cells(Rows.Count, 2).End(xlUp).Row
For L = 2 To NombLig
Test = Replace(Replace(Range("B" & L).Value, Chr(160), ""), ",", ".")
If Right(Test, 1) = "D" Then
Range("C" & L).Value = -Val(Test)
Else
Range("C" & L).Value = Val(Test)
End If
Range("C" & L).NumberFormat = "0.00_ ;[Red]-0.00 "
Next
Application.ScreenUpdating = True
End Sub
A+
Maurice
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
Une possibilité :
Avec la valeur en A2 , en B2 la formule pour convertir en nombre :
=SI(DROITE(A2;1)="D";0-(CNUM(GAUCHE(A2;NBCAR(A2)-5))+CNUM(GAUCHE(DROITE(A2;4);2)/100));CNUM(GAUCHE(A2;NBCAR(A2)-5))+CNUM(GAUCHE(DROITE(A2;4);2)/100))
le premier GAUCHE prend les caractères à gauche d'une longueur égale à la longueur de la chaine -5 (le . ,les 2 chiffres décimaux, l'espace et la lettre) et CNUM convertit le résultat en nombre
le second GAUCHE prend les 2 caractères à gauche des 4 caractères de DROITE (donc prend les 2 décimaux) puis conversion avec CNUM et division par 100
L'addition des 2 redonne le nombre d'origine qu'on soustrait à 0 si lettre D pour obtenir un négatif
Cdlmnt
Une possibilité :
Avec la valeur en A2 , en B2 la formule pour convertir en nombre :
=SI(DROITE(A2;1)="D";0-(CNUM(GAUCHE(A2;NBCAR(A2)-5))+CNUM(GAUCHE(DROITE(A2;4);2)/100));CNUM(GAUCHE(A2;NBCAR(A2)-5))+CNUM(GAUCHE(DROITE(A2;4);2)/100))
le premier GAUCHE prend les caractères à gauche d'une longueur égale à la longueur de la chaine -5 (le . ,les 2 chiffres décimaux, l'espace et la lettre) et CNUM convertit le résultat en nombre
le second GAUCHE prend les 2 caractères à gauche des 4 caractères de DROITE (donc prend les 2 décimaux) puis conversion avec CNUM et division par 100
L'addition des 2 redonne le nombre d'origine qu'on soustrait à 0 si lettre D pour obtenir un négatif
Cdlmnt
Bonjour,
Une autre possibilité:
Si votre séparateur de décimales est la virgule il faut commencer par remplacer le point par une virgule.
Édition Remplacer ou en raccourci Ctrl+h.
Données Convertir fonctionne pour un fichier délimité avec l'espace comme séparateur.
En format standard Excel ne peut renvoyer que du texte s'il ne reconnait pas un nombre.
À partir de la valeur avec le bon séparateur de décimales on peut obtenir un nombre négatif pour D avec la formule:
=GAUCHE(A2;NBCAR(A2)-2)*(1-(2*(DROITE(A2;1)="D")))
Une autre possibilité:
Si votre séparateur de décimales est la virgule il faut commencer par remplacer le point par une virgule.
Édition Remplacer ou en raccourci Ctrl+h.
Données Convertir fonctionne pour un fichier délimité avec l'espace comme séparateur.
En format standard Excel ne peut renvoyer que du texte s'il ne reconnait pas un nombre.
À partir de la valeur avec le bon séparateur de décimales on peut obtenir un nombre négatif pour D avec la formule:
=GAUCHE(A2;NBCAR(A2)-2)*(1-(2*(DROITE(A2;1)="D")))
Quant à moi, je n'ai pas compris comment est fait le tableau "D débit et C pour credit (dans une seule cellule)".
Le mieux serait de nous envoyer ton fichier avec https://www.cjoint.com/
Le mieux serait de nous envoyer ton fichier avec https://www.cjoint.com/
Bonjour
tu peux aussi le faire par macro
A+
Maurice
tu peux aussi le faire par macro
Sub CONVERT()
NombLig = Cells(Rows.Count, 1).End(xlUp).Row
For L = 2 To NombLig
Nomb = Val(Split(Range("A" & L), " ")(0))
If Trim(Split(Range("A" & L), " ")(1)) = "D" Then
Range("B" & L).Value = -Nomb
Else
Range("B" & L).Value = Nomb
End If
Range("B" & L).NumberFormat = "0.00_ ;[Red]-0.00 "
Next
End Sub
A+
Maurice
Tu vois, MEL, toutes les complications qui découlent de tes saisies fantaisistes ?
Alors fais comme tout le monde : en colonne B tu saisis tes montants (sans espaces), en colonne C tu saisis "C" ou "D".
Ensuite tout est merveilleusement facile et immédiat ...
Alors fais comme tout le monde : en colonne B tu saisis tes montants (sans espaces), en colonne C tu saisis "C" ou "D".
Ensuite tout est merveilleusement facile et immédiat ...
Salut Raymond,
Je n'ai pas mis le -1, mais l'explication est la suivante :
Il ne s'agit certainement pas de saisie, j'en veux pour preuve l'espace insécable contenu par chaque nombre, mais d'une importation d'un logiciel quelconque.
S'agissant de tout ressaisir manuellement, si Excel peut y apporter des solutions plus ou moins automatiques, je ne vois pas l'intérêt. D'autant plus que MEL risque fort d'avoir régulièrement ce genre d'import à traiter.
Les solutions sont toutes sur le sujet qui, ma foi, est fort bien résolu.
Bonne journée à toi.
A+
Je n'ai pas mis le -1, mais l'explication est la suivante :
Il ne s'agit certainement pas de saisie, j'en veux pour preuve l'espace insécable contenu par chaque nombre, mais d'une importation d'un logiciel quelconque.
S'agissant de tout ressaisir manuellement, si Excel peut y apporter des solutions plus ou moins automatiques, je ne vois pas l'intérêt. D'autant plus que MEL risque fort d'avoir régulièrement ce genre d'import à traiter.
Les solutions sont toutes sur le sujet qui, ma foi, est fort bien résolu.
Bonne journée à toi.
A+
Salut Raymond,
C'est cependant regrettable que MEL donne comme exemples 1200023.24 D
Oui, il vaut toujours mieux être précis dans les explications de base...
Regrettable aussi qu'après plus de 24 h il n'a pas encore donné de suite à mon message #10 ...
Mettons cela sur le fait que MEL s'est occupé(e?) des enfants hier. Elle (ou il?) reviendra aujourd'hui...
C'est cependant regrettable que MEL donne comme exemples 1200023.24 D
Oui, il vaut toujours mieux être précis dans les explications de base...
Regrettable aussi qu'après plus de 24 h il n'a pas encore donné de suite à mon message #10 ...
Mettons cela sur le fait que MEL s'est occupé(e?) des enfants hier. Elle (ou il?) reviendra aujourd'hui...