Maxou le petit
Messages postés47Date d'inscriptionjeudi 16 juin 2005StatutMembreDernière intervention21 mai 2007
-
13 mai 2006 à 06:54
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
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 !
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 21 mai 2006 à 22:08
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.
Maxou le petit
Messages postés47Date d'inscriptionjeudi 16 juin 2005StatutMembreDernière intervention21 mai 2007 13 mai 2006 à 09:34
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 ?
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 14 mai 2006 à 15:58
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Maxou le petit
Messages postés47Date d'inscriptionjeudi 16 juin 2005StatutMembreDernière intervention21 mai 2007 16 mai 2006 à 21:08
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 ?
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 19 mai 2006 à 23:25
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
Maxou le petit
Messages postés47Date d'inscriptionjeudi 16 juin 2005StatutMembreDernière intervention21 mai 2007 20 mai 2006 à 09:21
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.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 21 mai 2006 à 01:11
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
Maxou le petit
Messages postés47Date d'inscriptionjeudi 16 juin 2005StatutMembreDernière intervention21 mai 2007 21 mai 2006 à 09:09
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.