Convertir cellule+lettre en cellule+signe

Résolu/Fermé
MEL - 27 oct. 2014 à 16:18
 MEL - 7 nov. 2014 à 14:34
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

10 réponses

Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
28 oct. 2014 à 19:53
Salut le Forum

Autre Formule
SI(ESTERR(CHERCHE("D";B2));1;-1)*SUBSTITUE(SUBSTITUE(SUBSTITUE(B2;"C";"");"D";"");CAR(160);"")

Mytå
2
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 28/10/2014 à 16:32
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 🎶
1
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
28 oct. 2014 à 16:34
Ton classeur avec la formule...
0
tontong Messages postés 2548 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 15 mars 2024 1 054
28 oct. 2014 à 16:59
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 ;-)
1
bonjour

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
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
27 oct. 2014 à 17:11
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
0
tontong Messages postés 2548 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 15 mars 2024 1 054
27 oct. 2014 à 17:19
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")))
0
Raymond PENTIER Messages postés 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090
27 oct. 2014 à 17:54
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/
0
http://cjoint.com/?3JCp7hMWIfZ

bonjour,

voici mon fichier. J'ai essayé la 1ère solution mais cela ne marche pas.

l'objectif est d'avoir une colonne avec des chiffres positifs et négatis pour pouvoir faire un graphique.

merci de votre aide.
0
Bonjour

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
0
merci , mais je ne maîtrise pas encore les macros. il faut vraiment que j'apprenne.
0
Raymond PENTIER Messages postés 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090
28 oct. 2014 à 19:22
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 ...
0
Raymond PENTIER Messages postés 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090
28 oct. 2014 à 22:38
Je constate que ma suggestion n'a pas plu à quelqu'un !
Une petite explication de vote serait plus constructive ...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
29 oct. 2014 à 07:39
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+
0
Raymond PENTIER Messages postés 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090
30 oct. 2014 à 00:18
Oui pijaku, je pense que tu as raison.
C'est cependant regrettable que MEL donne comme exemples 1200023.24 D et 4501.02 C alors qu'en réalité il s'agit de 1 200 023.24 D et 4 501.02 C !
Regrettable aussi qu'après plus de 24 h il n'a pas encore donné de suite à mon message #10 ...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
30 oct. 2014 à 07:49
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...
0
Raymond PENTIER Messages postés 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090
30 oct. 2014 à 19:04
Oui ! Bel optimisme ...
0
Bonjour

voila en retour ton fichier avec la macro

http://cjoint.com/?3JDlitPqx7j

A+

Maurice
-1