Galère avec format de nombre dans excel [Résolu]

Maxou le petit 47 Messages postés jeudi 16 juin 2005Date d'inscription 21 mai 2007 Dernière intervention - 13 mai 2006 à 06:54 - Dernière réponse : mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention
- 21 mai 2006 à 22:08
Bonjour,

Régulièrement j'exporte des données d'un logiciel de gestion (SAP) en format Txt vers Excel pour effectuer des synthéses.

J'ai un PB avec les données nombre du type 1.000,00. Il y a un séparateur de milliers avec un point.
Pour exploiter dans excel j'utilise le menu recheche et remplacer par. En fait je recherche le point et remplace par vide. Résultat : 1000,00 Pas de problème.

Lorsque j'exècute cette action en macro le résultat est différent, il menlève également la virgule de la décimale.

Que faut-il que j'ajoute à mon code pour retrouver le bon format, sans le point mais toujours avec ma décimale ?

Ps : Lors de l'export des données il n'y pas toujours 2 décimales aprés la virgule !



D'avance Merci

Maxou
Afficher la suite 

9 réponses

Meilleure réponse
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 21 mai 2006 à 22:08
1
Merci
De rien Maxou !

Pour info, "valConvertit CDbl (valCellule)", ça veut dire que valCellule (de type string) est convertit avec la fonction CDbl (de type Double> numérique) et le résultat est placé dans la variable valConvertit.

Bon courage pour ton prog !

@++
Mortalino

Merci mortalino 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention - 13 mai 2006 à 07:58
0
Merci
Bonjour,

var = "1.000,00"
MsgBox Replace(var,".","") 'réponse 1000,00

jean-marc
Maxou le petit 47 Messages postés jeudi 16 juin 2005Date d'inscription 21 mai 2007 Dernière intervention - 13 mai 2006 à 09:34
0
Merci
Pas bien compris, si mon code (enregesitrement de la macro est le suivant) :
Exemple
Columns("A:A").Select
Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Comment dois-je intégrer ton code dans l'instruction ci dessus ?

Merci à toi.

Maxou
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 14 mai 2006 à 15:58
0
Merci
Salut, je vais finir par enregistrer ma réponse dans un fichier texte, je la donne 3 fois par mois...

Il faut que tu ailles dans le panneau de configuration, "Option Régionales"
Dans l'onglet "Nombres" et "Symbole décimal : ,"
remplace la virgule par le point.

Tu ne devrais plus avoir de problème de calcul avec VBA.

++
Mortalino
Maxou le petit 47 Messages postés jeudi 16 juin 2005Date d'inscription 21 mai 2007 Dernière intervention - 16 mai 2006 à 21:08
0
Merci
Bonjour Mortalino

Tu m'a dèjà aidé pour un aure pB super. Mais là si c'était qu'une histoire d'environement je n'aurais pas posé la question.
Mon probléme est différent. J'exporte des données textes d'une appplication avec un format de nombre que je ne peux modifier.
Jusqu'au centaine pas de pB, lorsqu'un qu'il y un millier PB. J'ai fait un code pour reformater le fichier afin de pouvoir l'exploiter le fichier sous Excel en tableau croisé dynamique. Même si mon code n'est pas parfait il fonctionne. Le seul PB est ce fameux point séparateur de millier.

Losrque j'effectue une remise en forme manuelle sur la colonne du type rechercher "." et remplacer par "", cela fonctionne.
Si j'enregistre cette opératioon en macro, il me fait sauter égalament les virgules sur certains nombres en décimal.
 
Là c'est problèmatique pour mes synthéses.

Que faut-il que j'ajoute à mon code pour avoir une bonne conversion exacte lorsque le programme rencontre ce type de donnée ?

A+
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 19 mai 2006 à 23:25
0
Merci
Salut Maxou,

Si je te parle du Panneau de Configuration c'est parce que tu importes des données de SAP avec un format déjà pré-établit dans un environnement qui posséde également des formats de données.

Je t'ai mis ça car je me suis déjà fait avoir :
dans ta 1ère question, tu dis "Résultat : 1000,00".
Mais si tu rentres un nombre décimal, de toi même, dans Excel, comment le résultat apparait ?
Ex : 12.21 OU 12,21 ?

Car si c'est le 1er cas de figure, qd tu remplaces le "." par "", il faut également remplacer le "," par "."

Sinon, l'autre technique consisterait à passer ton impôrtation en format général, puis par code, le type de format souhaité :

Range("A1:C10").Select 'bien entendu, tu mets la bonne plage de cellules
With Selection
.NumberFormat = "General"
.NumberFormat = "##0,000.00"
End With

Voilà, j'espère t'avoir aider.

@ ++
mortalino
Maxou le petit 47 Messages postés jeudi 16 juin 2005Date d'inscription 21 mai 2007 Dernière intervention - 20 mai 2006 à 09:21
0
Merci
Salut Mortalino;

J'ai bien compris ce que tu voulait dire, j'ai essayé le code il ne fonctionne pas avec les nombres avec un séparateur de milliers. Dans la cellule en fait il y a un certain nombre de blanc avant le nombre. En fait ce n'est pas un nombre mais une chaîne de caractères.

Ne faudrait-il pas traiter la transformation de ces nombres comme si c'était une chaîne de caractère ?

Du style : Enlever blanc, enlever point, concerver virgule et ensuite le transformer en nombre.

Je t'aurais bien joint le fichier d'extraction avec la colonne qui me pose problème, mais je ne vois comment faire sur ce site.

D'avance merci

A+
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 21 mai 2006 à 01:11
0
Merci
Salut Maxou,

je vais faire comme si tes données sont dans la colonne A :

Sub ConversionDonnees ()
Dim DerLigne As Long, valCellule As String, valConvertit As Double

DerLigne = Range("A1").End(xlDown).Row

For i = 2 To DerLigne
valCellule = Cells(i, 1).Value
valCellule = Replace(valCellule, " ", "") 'enlève espaces
valCellule = Replace(valCellule, ".", "") 'enlève point
valConvertit = CDbl (valCellule)
Next i
End Sub

Là, dans ta 1ère colonne, DerLigne sera égal à la dernière ligne utilisée, puis chaque cellule à partir de A2 sera lu, les espaces et points seront supprimés, puis la valeur est convertit en type "Double", au lieu de "String".

Si tu as des problèmes, n'hésite pas.
Confirme nous où sont placés tes données dans la feuille.
Pour le fichier, tu ne peux rien déposer ici, il faut passer par un hébergeur

@++
Mortalino
Maxou le petit 47 Messages postés jeudi 16 juin 2005Date d'inscription 21 mai 2007 Dernière intervention - 21 mai 2006 à 09:09
0
Merci
Salut Mortalino,

Merci pour le coup de main, ton code fonctionne j'ai fait un test rapide sur certaines valeurs. J'intégre ton code dans ma macro et j'essaye à nouveau.
 
Je ne connnaissais pas encore les commandes que tu utilise. Maitenant c'est chose faite, en plus j'ai tout compris sauf la dernière "valConvertit = CDbl (valCellule)", j'irai voir dans la doc !

Je pense que cela me sera trés utile pour les autres fois ou j'aurai un PB similaire.

Merci à toi
A+

Maxou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.