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

  • Initiateur de la discussion desesperee
  • Date de début
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

  • macro.zip
    7.3 KB · Affichages: 39
  • macro.zip
    7.3 KB · Affichages: 43
  • macro.zip
    7.3 KB · Affichages: 41
M

mireille

Guest
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

  • TestVirgule.zip
    10.9 KB · Affichages: 55
F

F.launay

Guest
Bonsoir, ci joint ce programme qui peut t'aider
' Choix du séparateur de décimal en fonction de la configuration retenue :point 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
 
D

desesperee

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

Discussions similaires

Statistiques des forums

Discussions
312 094
Messages
2 085 231
Membres
102 828
dernier inscrit
cdupire