Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

EXCEL 2003 Séparateur de décimales

  • Initiateur de la discussion Initiateur de la discussion fjd
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

fjd

Guest
BONJOUR à tous
Actuellement j'utilise EXCEL 2003 sur Machine avec Windows XP
Le séparateur de décimale est le point ( Windows et Office Excel )
Pourquoi dans l'utilisation de fonction personnelle
Pour un Fichier crée le 21/10/1999 régulièrement mis a jour je doit remplacer le point par la virgule
Valeur = Replace(Valeur, ".", ",")
et dans un Fichier créé actuellement l'inverse cad remplacer la virgule par le point
pour obtenir le même résultat et que la fonction ne retourne pas d'erreur (#VALEUR!)
MERCI DE VOS LUMIERES
 
Re : EXCEL 2003 Séparateur de décimales

Sur un ordinateur donné, le séparateur en cours s'applique bien sûr à tous les fichiers. Le problème (si j'ai bien compris) est qu'il faut le connaître pour interpréter le texte explicitant les opérations.
A+
 
Re : EXCEL 2003 Séparateur de décimales

Re,

Si la ponctuation est au gré des humeurs, là, ça se corse ....
Rien à voir avec l'ETA 😀

Je pense que le mieux est alors de modifier ta fonction
Code:
Function TNbre(Valeur) As Double
Valeur = Replace(Valeur, ",", ".")
TNbre = Evaluate(CStr(Valeur))
End Function
Par
Code:
Function TNbre(Valeur) As Double
  Valeur = Replace(Valeur, ",", "¤")
  Valeur = Replace(Valeur, ".", "¤")
  Valeur = Replace(Valeur, "¤", ",")
  TNbre = Evaluate(CStr(Valeur))
End Function

Tu remplace d'abord les virgules par un caratère générique, puis les points par ce même caractère générique, ensuite ce caractère générique par le séparateur de décimal.

A+
 
Re : EXCEL 2003 Séparateur de décimales

Un moyen simple de déterminer le séparateur en cours, entrer dans une cellule :
=ESTNUM(-"1,2")
qui renvoie VRAI si c'est , et FAUX si c'est .
Introduire ensuite la valeur dans la macro.
A+
 
Re : EXCEL 2003 Séparateur de décimales

Bien vue Job75,

Un autre moyen, un peu plus complexe, celui-la

En faisant appel à l'API windows
Code:
'DECLARATION API
Public Declare Function GetThreadLocale Lib "kernel32" () As Long
Public Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
Public Declare Function GetLocaleInfo Lib "kernel32" _
   Alias "GetLocaleInfoA" _
  (ByVal Locale As Long, _
   ByVal LCType As Long, _
   ByVal lpLCData As String, _
   ByVal cchData As Long) As Long
'DECLARATION CONSTANTES
Public Const LOCALE_SCURRENCY             As Long = &H14    'symbole monétaire local
Public Const LOCALE_SINTLSYMBOL           As Long = &H15    'symbole monétaire international
Public Const LOCALE_SMONDECIMALSEP        As Long = &H16    'séparateur monétaire décimal
Public Const LOCALE_SMONTHOUSANDSEP       As Long = &H17    'séparateur monétaire des milliers
Public Const LOCALE_SMONGROUPING          As Long = &H18    'groupement monétaire
Public Const LOCALE_ICURRDIGITS           As Long = &H19    '# local monetary digits
Public Const LOCALE_IINTLCURRDIGITS       As Long = &H1A    '# intl monetary digits
Public Const LOCALE_ICURRENCY             As Long = &H1B    'mode positif de la devise
Public Const LOCALE_INEGCURR              As Long = &H1C    'mode négatif de la devise
Public Const LOCALE_IPOSSIGNPOSN          As Long = &H52    'position du signe positif
Public Const LOCALE_INEGSIGNPOSN          As Long = &H53    'position du signe négatif
Public Const LOCALE_IPOSSYMPRECEDES       As Long = &H54    'mon sym precedes pos amt
Public Const LOCALE_IPOSSEPBYSPACE        As Long = &H55    'mon sym sep by space from pos amt
Public Const LOCALE_INEGSYMPRECEDES       As Long = &H56    'mon sym precedes neg amt
Public Const LOCALE_INEGSEPBYSPACE        As Long = &H57    'mon sym sep by space from neg amt
Public Const LOCALE_SENGCURRNAME          As Long = &H1007  'nom anglais de la devise
Public Const LOCALE_SNATIVECURRNAME       As Long = &H1008  'nom natif de la devise

Sub Test()
  Dim LCID As Long
  LCID = GetSystemDefaultLCID()
  MsgBox "Le séparateur décimal est: " & GetUserLocaleInfo(LCID, LOCALE_SMONDECIMALSEP)
End Sub
Public Function GetUserLocaleInfo(ByVal dwLocaleID As Long, ByVal dwLCType As Long) As String
  Dim sReturn As String
  Dim r As Long
  'Appel de la fonction en passant la variable locale
  'pour récupérer la taille du buffer du string dont nous avons besoin
  r = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
  'Si c'est OK..
  If r Then
    'On compléte le buffer avec des espaces
     sReturn = Space$(r)
    'et nouvel appel en passant la mémoire tampon
     r = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
    'Si Ok (r > 0)
     If r Then
       'r contient la taille de la chaîne de caractères
       'comprenant la terminaison nulle
        GetUserLocaleInfo = Left$(sReturn, r - 1)
     End If
  End If
End Function

Voili, voilà 😉
 
Re : EXCEL 2003 Séparateur de décimales


Le Pb reste entier apres vérification sur divers fichiers
Valeur = Replace(Valeur, "¤", ",") sur certain et
Valeur = Replace(Valeur, "¤", ".") sur d'autres
le pb est de savoir lequel Replace choisir
A+
 
Re : EXCEL 2003 Séparateur de décimales

Re,

Tu n'a pas à choisir quel replace() il faut utiliser !?
Le premier remplace les virgules si il y en a, le 2ème les points

Je ne suis plus !?

Ce fichier tu es le seul à l'utiliser ?

A+
 
Re : EXCEL 2003 Séparateur de décimales

Re BrunoM45

Réponse qui donne le type de séparateur de décimales OK
LE hic est que les 2 fichiers chargés ont le meme séparateur de décimales
et que malgré tout ce n'est pas le meme REPLACE à utiliser
OU y aurait il un autre paramètre qui m'échappe quelque part ?
 
Re : EXCEL 2003 Séparateur de décimales

Alors là, oui tu as un BIG problème !?

Si tu as le même séparateur de décimales, je ne vois pas bien !

Essaye peut-être ce code ci
Code:
Function TNbre(Valeur) As Double
  Dim Ds As String
  Ds = Application.DecimalSeparator
  Valeur = Replace(Valeur, ",", "¤")
  Valeur = Replace(Valeur, ".", "¤")
  Valeur = Replace(Valeur, "¤", Ds)
  TNbre = Evaluate(CStr(Valeur))
End Function

A+
 
Re : EXCEL 2003 Séparateur de décimales

Dans l'exemple que j'ai donné il faut adapter replace (avec If) à la valeur donnée par la cellule contenant =ESTNUM(-"1,2"). Simple non ???
 
Re : EXCEL 2003 Séparateur de décimales

Re,

Tu n'a pas à choisir quel replace() il faut utiliser !?
Le premier remplace les virgules si il y en a, le 2ème les points

Je ne suis plus !?

Ce fichier tu es le seul à l'utiliser ?

A+

Moi non plus je ne suis plus j'essaie de précéder
cad d'anticiper car les fichiers de base sont des modèles et
suivant la date de création c'est un cas ou l'autre qu'il faut appliquer
et apres en n'en parle plus
j'essaie juste de comprendre lors d'ajout de complément dans les fichiers de base alors qu'un petit travail laborieux de copie dans un nouveau fichier créé
aujourd'hui ou demain resoudrait
A+
et merci encore
Mais la lumière viendra
 
Re : EXCEL 2003 Séparateur de décimales


OK TU EST LA LUMIERE 110 - 220 ou Triphasé
Une petite bougie c'est sympa aussi
Ca Marche
Function TNbre(Valeur) As Double
Dim Ds As String
'Ds = Application.DecimalSeparator SANS CETTE LIGNE
Valeur = Replace(Valeur, ",", "¤")
Valeur = Replace(Valeur, ".", "¤")
Valeur = Replace(Valeur, "¤", Ds)
TNbre = Evaluate(CStr(Valeur))
End Function

MERCI
 
Re : EXCEL 2003 Séparateur de décimales

Sans s'énerver, moi j'écrirai dans la macro (A1 détermine le séparateur) :
si A1=VRAI, remplacer . par ,
sinon remplacer , par .
J'écris en français c'est plus facile à comprendre...
A+
 
Re : EXCEL 2003 Séparateur de décimales

Sans s'énerver, moi j'écrirai dans la macro (A1 détermine le séparateur) :
si A1=VRAI, remplacer . par ,
sinon remplacer , par .
J'écris en français c'est plus facile à comprendre...
A+
Merci Job75,

Je pense que Fjd avait bien compris, mais je pense également qu'il est comme moi, on voulait tout faire en VBA !

Alors qu'avec ta solution ça oblige à mettre une formule sur la feuille.

A+
 
Re : EXCEL 2003 Séparateur de décimales

Sans s'énerver, moi j'écrirai dans la macro (A1 détermine le séparateur) :
si A1=VRAI, remplacer . par ,
sinon remplacer , par .
J'écris en français c'est plus facile à comprendre...
A+

Merci aussi pour ta recherche
Il est vrai que des formules dans une feuille c'est bien
Mais quand on ajoute une nouvelle feuille
la fonction en VBA fonctionne toujours
Merci encore à tous
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

E
Réponses
7
Affichages
1 K
edouardgg
E
S
Réponses
3
Affichages
1 K
Compte Supprimé 979
C
G
Réponses
9
Affichages
18 K
guillaume3687irish
G
F
Réponses
6
Affichages
2 K
F
W
Réponses
8
Affichages
2 K
wouha
W
T
Réponses
4
Affichages
1 K
T
C
Réponses
4
Affichages
6 K
cagaua
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…