[Visual Basic] Remplacer virgules par points

Résolu/Fermé
sebM Messages postés 8 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 31 juillet 2008 - 30 juil. 2008 à 16:17
sebM Messages postés 8 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 31 juillet 2008 - 31 juil. 2008 à 09:31
Bonjour,

j'ai déjà vu sur les forums que certains avaient déjà remarquer que:

Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False


ne fonctionne pas pour remplacer les virgules par des points sur des données Excel.

J'ai donc mis le point comme séparateur de décimal par défaut:

With Application
.DecimalSeparator = "."
.ThousandsSeparator = " "
.UseSystemSeparators = False
End With


Cela remplace bien sur ma feuille Excel les virgules par des points. Le problème est que je veux recupérer certaines données dans des fichiers .in
J'utilise:

With MonFic
i = 16

While Not Range("AF" & i).Value = ""
nom = Range("AF" & i).Value
valeur = Range("AG" & i).Value
.write (nom)
.write (" ")
.writeLine (valeur)
i = i + 1
Wend
End With


Et dans le fichier crée ("MonFic"), les virgules sont utilisées comme séparateur décimale et non les points ( alors que dans les cellules lues, c'est bien un point qui est utilisé).

Donc si vous avez des idées pour que je puisse créer un fichier.in avec des points comme séparateurs et non des virgules, n'hésitez pas à proposer.

Merci d'avance,

4 réponses

Bonjour,

Pour résoudre ton problème, utilise une autre syntaxe.

D'abord ouvrir le fichier Monfich en écriture:
Open Monfich for Output as #1

Ensuite écrire les données dans Monfich:
i = 16
While Not Range("AF" & i).Value = ""
nom = Range("AF" & i).Value
valeur = Range("AG" & i).Value
Print #1, nom ; " " ; valeur
i = i + 1
Wend
Close #1


Salut.
0
sebM Messages postés 8 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 31 juillet 2008
31 juil. 2008 à 00:16
Merci !
0
sebM Messages postés 8 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 31 juillet 2008
31 juil. 2008 à 09:11
Et bien, cela ne marche tjs pas. Maintenant, j'utilise:


Private Sub CommandButton1_Click()

With Application
.DecimalSeparator = "."
.ThousandsSeparator = " "
.UseSystemSeparators = False
End With

adresse = Range("AD11").Value
Fichier = Range("AF11").Value

Open adresse & Fichier For Output As #1
i = 16
While Not Range("AB" & i).Value = ""
nom = Range("AB" & i).Value
valeur = Range("AC" & i).Value
Print #1, nom; " "; valeur
i = i + 1
Wend
Close #1

Msg = "Écriture réussie dans " & adresse & Fichier
MsgBox (Msg)



Mais dans le fichier crée, les nombres sont encore écrits avec des virgules et non des points. Donc si vous avez d'autres idées.

Merci,
0
sebM Messages postés 8 Date d'inscription mercredi 30 juillet 2008 Statut Membre Dernière intervention 31 juillet 2008
31 juil. 2008 à 09:31
C'est bon maintenant.

Cette fois, le Replace fonctionne:

avec
valeur = Replace(Range("AC" & i).Value, ",", ".")
au lieu de
valeur = Range("AC" & i).Value
çà fonctionne
0