Problème reconnaissance paramètres régionaux en VBA

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

D

desesperee

Guest
Bonjour à tous,


Comment beaucoup d'entre vous sur ce forum, j'ai des problèmes avec le point ou virgule décimale. Je travaille en excel 2000.
Mes paramètres régionaux sont mis sur la virgule en tant que séparateur décimal.

Je travaille avec des fichiers importés (de manière automatique par le programme appelant; je ne sais donc pas modifier les paramètres d'import) d'un autre système dont les zones numériques sont correctement formatées par rapport à ces paramètres; toutefois, il ne les reconnait PAS comme numérique.

Pour résoudre le problème, voici ce que je fais :
- j'insère une nouvelle colonne
- je fais un copy de la colonne 'numérique' non reconnue
- je fais un paste special dans la colonne vide avec paramètre : add
=> cela fonctionne correctement
=> ma nouvelle colonne contient bien les mêmes valeurs en numérique cette fois.

MALHEUREUSEMENT, lorsque j'effectue la même chose en enregistrant la macro; lorsqu'il fait le paste special add; il ne tient pas compte de mes paramètres régionaux et donc de ma virgule.

Pourquoi VBA ne tient-il pas compte de cela et ne réagit-il pas de la même façon que manuellement ?
Pour diverses raisons, je ne compte pas changer mon séparateur de virgule vers le point.



... J'ai rajouté un petit fichier d'exemple :
colonne C = colonne originelle : il ne s'agit pas de numérique : on ne peut pas les additionner
colonne A = colonne copiée via la procédure manuelle : il s'agit bien de numérique => on peut les additionner
colonne B = colonne résultant de l'execution de la macro

Pour tester :
- sélectionner la colonne C; executer la macro ! ... Je suis DESESPEREE !!!!

Help !
Merci !
 

Pièces jointes

J'ai fait une petite macro pour des problèmes similaires chez nous, je la joins, toutefois, je n'arrive pas à voir dans ton exemple quelle est la colonne bonne finale, si je le savais, je pourrais améliorer l'objet ci-joint.
 

Pièces jointes

Bonsoir, ci joint ce programme qui peut t'aider
' Choix du séparateur de décimal en fonction de la configuration retenue 😛oint ou virgule '
Sub testformatage()
Dim Vcell As Object
Dim choix As Integer
Dim mylen As String
ActiveWorkbook.Activate
Range("a2 ").Select
Range("a2").Formula = 6.55957
Set Vcell = Range("a2")
mylen = Left(Mid$(Vcell, 2), 1) 'identification du séparateur de décimal '
If mylen = "." Then
Vcell.NumberFormat = "# ###.00" 'point= séparateur de décimal '
choix = 1
MsgBox (choix)
Else
choix = 2
Vcell.NumberFormat = "# ##0,00" 'virgule=séparateur de décimal '
MsgBox (choix)
End If
End Sub
autrement tu choisis la commande Ctrl +H, remplacer la virigule par le point
ou l'inverse
sinon j'utilise ce code pour convertir des données texte en numérique
Sub Convertir_en_numerique() 'Conversion en numérique d'un nombre exprimé en texte sauf les dates'
Application.ScreenUpdating = False
Dim Vtext As Variant
For Each Vtext In Selection
If IsEmpty(Vtext.Value) = True Then 'rien n'est fait'
Else 'Traitement de la zone '
Vtext.Formula = CDbl(Vtext)
End If
Next
End Sub
 
Pour info ...
Une autre personne de ce forum avait le même type de problème que moi avec des dates . j'ai fait une recherche dans la knowledge base de Microsoft :


http://support.microsoft.com/default.aspx?scid=kb;fr;469646&Product=xlw2KFra

Je pense que le problème est le même : en excel 2000, il tient compte des paramètres régionaux; mais pas en VBA !!!!

Ils semblent dire que c'est corrigé en XP !!!

Je viens de trouver entretemps une autre solution pour mon problème de numérique sans passer par le copypastespecial posant les problèmes en question :

Sub conversion2()
'
' conversion2 Macro
' Macro recorded 11/06/2004 by a0030580
'

'
Selection.TextToColumns Destination:=ActiveCell, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1)
End Sub

ceci me permet bien de convertir mon 'numérique texte' en 'numérique numérique'.

Toutefois, le jour où j'aurai besoin du copypastespecial ... le problème se reposera !
 
- 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

Réponses
14
Affichages
528
Réponses
10
Affichages
271
Retour