demande d'explications

niki42

XLDnaute Occasionnel
Salut à tous

Voilà j'ai été confronté à un problème de macro qui fonctionnait sur mon PC mais sur celui du TAF alors que les 2 PC ont office XP.

j'ai cherché pendant plusieurs jours sans trouver la solution, j'ai même posté sur le forum sans grands résultats et puis PAF aujourd'hui j'ai trouvé.
En fait j'ai simplement supprimé le point et la virgule (ceux qui sont dans les '') dans le bout de code suivant:

Avant
Private Sub TextTxRemise_Change()
TextTxRemise = Application.WorksheetFunction.Substitute(TextTxRemise, '.', ',')
End Sub

Après
Private Sub TextTxRemise_Change()
TextTxRemise = Application.WorksheetFunction.Substitute(TextTxRemise, '', '')
End Sub

Et ma macro a fonctionné!!!

Je m'étais inspiré d'une solution pour écrire ma macro, mais je n'avais pas compris l 'utilité de ce bout de code.
Est ce que l'un d'entre vous pourrait m'expliquer la signification exacte de ce bout de code et pourquoi le même fichier marche sur un PC et pas sur un autre


Voilà j'espère que vous aurez compris mon problème.

Merci pour les réponses

Niki
 

21ch181

XLDnaute Junior
Pourquoi il marche sur un pc et pas sur un autre ==> paramètres de localisation de Windows (tu sais celui qui doit dire qu'on utilise la virgule ou le point comme décimal ou séparateur de millier ?)
je pense que la piste la plus probable.

Pourquoi les doubles quotes ? là aussi je pense que c'est lié à ce paramètre : sur l'une des machines la virgule est clairement comprise comme un caratère (donc devant être entre quote lorsque tu écris la formule à la main dans une feuille). Autre possibilité : le format de la cellule dans laquelle tu appliques la fonction : l'une serait en texte et l'autre en numérique ?

VBA fonctionne en mod EN et non FR (mais je laisse les plus experts que moi le confirmer ...) et c'est le genre de plaisanterie qui dans le passé m'a fait perdre beaucoup de temps à dégogguer !

A vérifier tout ca pour dire quelle est la bonne hypothèse !

Cordialement
 

JeanMarie

XLDnaute Barbatruc
Bonjour

VBA utilise les valeurs numériques avec le séparateur de décimale avec le point, et ce quelque soit les paramêtres régionaux de ton micro.

La ligne Application.WorksheetFunction.Substitute(TextTxRemise, '.', ',') transforme les séparateurs . en ,

Chez toi, tu dois avoir comme séparateur défini la , et au Taf c'est le ., et il est inutile de transformer les séparateurs.

@+Jean-Marie
 

niki42

XLDnaute Occasionnel
Ok je vous remercie pour vos réponses. J'y vois maintenant un peu plus clair mais franchement ça m'a un peu dégouté de batailler sur des problèmes comme ça.

Comment fait-on pour savoir comment est défini le séparateur?

Merci
 

MichelXld

XLDnaute Barbatruc
bonjour Niki , 21ch181 et Jean-Marie


en complément de la réponse de Jean-Marie , pour récuperer le séparateur décimal du poste de travail tu peux tester

MsgBox Application.International(xlDecimalSeparator)


pour le séparateur de milliers il faut utiliser xlThousandsSeparator


bon apres midi
MichelXld
 

Discussions similaires

Réponses
3
Affichages
249
  • Question
Microsoft 365 TEXTBOX
Réponses
7
Affichages
399

Statistiques des forums

Discussions
312 576
Messages
2 089 863
Membres
104 293
dernier inscrit
blondo