XL 2010 Vérifier caractère à gauche du point est un chiffre

cp4

XLDnaute Barbatruc
Bonjour,:)

J’ai besoin de vous compétences. Je reçois des fichiers csv ou txt que je dois exploiter.
Après importation des données dans mon fichier de travail, vue que les fichiers ont des structures différentes, je voudrais parcourir toutes les cellules de la feuille pour remplacer le (.) point par une (,) virgule.
Parmi les données certaines sont des nombres entiers représentants soient un numéro de compte, série ou clé.
Sur la feuille les données à traiter sont alignées à gauche, ils représentent donc du texte (ex : 221.36).
Mon idée est rechercher le point (.), vérifier que le caractère à gauche du point est un chiffre et dans ce cas remplacer le point par une virgule.
En vous remerciant par avance.
 

chris

XLDnaute Barbatruc
Bonjour

Il serait plus judicieux de préciser, au moment de l'importation et non après, le séparateur décimal du ficher importé.

Cela permettrait de repérer nombres et textes instantanément par un MFC par exemple, en plus de l'alignement automatiquement différencié.
 

job75

XLDnaute Barbatruc
Bonjour cp4, chris

Sinon touches Ctrl+H => Rechercher : 0. Remplacer par : 0,

Répéter l'opération avec 1. puis 2. jusqu'à 9.

Pareil en VBA mais on remplace le point par… le point :
VB:
Sub Convertir()
Dim i%
For i = 0 To 9
    Cells.Replace i & ".", i & ".", xlPart
Next
End Sub
Bonne journée.
 

cp4

XLDnaute Barbatruc
Bonjour

Il serait plus judicieux de préciser, au moment de l'importation et non après, le séparateur décimal du ficher importé.

Cela permettrait de repérer nombres et textes instantanément par un MFC par exemple, en plus de l'alignement automatiquement différencié.
Merci beaucoup Chris pour ton retour mais je n'ai pas bien compris ta proposition de " préciser au moment de l'importation et non après".
Voici ci-dessous le bout de code qui me permet d'importer les données (code proposé par stapple1600, si je me souviens bien).
VB:
Option Explicit
Dim Fichier As Variant
Sub Importer()

   Fichier = Application.GetOpenFilename("Fichiers CSV (*.csv),*.csv")
   If Fichier = False Then Exit Sub

   Application.ScreenUpdating = False
   Application.DisplayAlerts = False
   On Error Resume Next   'sécurité
   With Workbooks.Open(Fichier).Sheets(1)
      .Columns(1).TextToColumns .[A1], xlDelimited, Semicolon:=True
      Feuil1.Cells.Clear
      .UsedRange.Copy Feuil1.[A1]
      .Parent.Close False
   End With
End Sub
Bonne journée.
 

cp4

XLDnaute Barbatruc
Bonjour cp4, chris

Sinon touches Ctrl+H => Rechercher : 0. Remplacer par : 0,

Répéter l'opération avec 1. puis 2. jusqu'à 9.

Pareil en VBA mais on remplace le point par… le point :
VB:
Sub Convertir()
Dim i%
For i = 0 To 9
    Cells.Replace i & ".", i & ".", xlPart
Next
End Sub
Bonne journée.
Bonjour Job75,

Toujours aussi efficace. Je te remercie beaucoup pour ton code qui fonctionne très bien.
Stp, pourrais-tu m'expliquer ton code car sincèrement, j'attendais une macro avec find et findnext du point (.) et ensuite vérifier le caractère à gauche du point. Je m'aperçois que j'étais à côté de la plaque. Ton code est très court et très efficace.

Merci d'éclairer ma lanterne pour dormir moins idiot ce soir;).
 

chris

XLDnaute Barbatruc
RE

Ajoute , DecimalSeparator:="."

VB:
      .Columns(1).TextToColumns .[A1], xlDelimited, Semicolon:=True, DecimalSeparator:="."

Comme déjà dit n fois, il est toujours préférable d'éviter en amont les problèmes que de corriger après...
 

cp4

XLDnaute Barbatruc
RE

Ajoute , DecimalSeparator:="."

VB:
      .Columns(1).TextToColumns .[A1], xlDelimited, Semicolon:=True, DecimalSeparator:="."

Comme déjà dit n fois, il est toujours préférable d'éviter en amont les problèmes que de corriger après...
Un très grand bravo. Je me rends chaque jour qu'il me reste beaucoup à apprendre.
En effet, en rajoutant ton bout de code ça résout le problème.
Merci, tu es très gentille pour le partage de tes connaissances:cool::cool:;).

Bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
311 711
Messages
2 081 799
Membres
101 818
dernier inscrit
tiftouf5757