demande d'explications

  • Initiateur de la discussion Initiateur de la discussion niki42
  • 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 !

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
 
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
 
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
 
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
 
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
 
- 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

Discussions similaires

S
Réponses
1
Affichages
711
Savanis
S
T
Réponses
2
Affichages
2 K
Tibooo
T
A
  • Question Question
Réponses
8
Affichages
944
T
Réponses
2
Affichages
1 K
Tava94
T
Retour