IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Convertir les . en ,


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    technicien
    Inscrit en
    Avril 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : technicien
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 1
    Par défaut Convertir les . en ,
    Bonjour à tous,
    j'ai un petit probleme avec des fichiers que j'exporte entre l'anglais et le Fr.
    Du coup j'ai des donnees avec des . au lieu des , et du coup pour traiter mes donnees c'est pas facile.
    Quand j'ai quelques colonnes je les converti mais la j'ai presque 100 colonnes a faire, j'ai donc voulu creer une macro. Le probleme ce que je n'arrive pas a creer une boucle.

    Voila ce que j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Columns("N:N").Select
        Selection.TextToColumns Destination:=Range("N1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
            :=Array(1, 1), DecimalSeparator:=".", TrailingMinusNumbers:=True
        Columns("O:O").Select
        Selection.TextToColumns Destination:=Range("O1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
            :=Array(1, 1), DecimalSeparator:=".", TrailingMinusNumbers:=True
        Columns("P:P").Select
        Selection.TextToColumns Destination:=Range("P1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
            :=Array(1, 1), DecimalSeparator:=".", TrailingMinusNumbers:=True
    ...
    Et comme j'ai 100 colonnes j'aimerais automatiser un peu la chose.
    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour,

    ‼ (cf règles du forum)


    Sinon la transformation n'est pas forcément nécessaire car il suffit de préciser le séparateur décimal
    lors de l'importation (B-A-BA de l'utilisation d'Excel lors de l'ouverture manuelle d'un fichier texte,
    sinon en VBA consulter l'aide de la méthode OpenText) …

    Sinon pour la boucle voir par exemple du côté de For Each COL In ActiveSheet.UsedRange.Columns

  3. #3
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    s'il s'agit de valeurs numérique et de colonnes adjacentes, peut-être que ce code suffit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub essai()
    Dim x As Long, y As Long, Tbl
    With Sheets("feuil1") 'à remplacer par le nom de feuille
      Tbl = .Range("N1").CurrentRegion
      For x = 1 To UBound(Tbl, 1)
        For y = 1 To UBound(Tbl, 2)
          Tbl(x, y) = Val(Tbl(x, y))
        Next y
      Next x
      .Range("N1").CurrentRegion = Tbl
    End With
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour

    La meilleure façon est d'exporter des fichiers au format Excel plutôt que des fichiers au format texte.

    Sinon je te propose cette macro de conversion des points et virgules.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Sub ConvertitPointEtVirguleEnSeparateurDecimalRegional()
     
    Dim SeparateurDecimalRegional As String
    Dim Debut As Long, Fin As Long, Col As Long
    Dim i As Long
    Dim a As Variant, memA As Variant
     
     
    SeparateurDecimalRegional = Format(0, ".")
     
    Debut = Range("N1").Column
    Fin = Debut + 99
     
    For Col = Debut To Fin
     
    For i = 1 To Cells(Cells.Rows.Count, Col).End(xlUp).Row
     
     a = Cells(i, Col).Value
     memA = a
     
      a = Replace(a, ".", SeparateurDecimalRegional) 'Remplace le point
      a = Replace(a, ",", SeparateurDecimalRegional) 'Remplace la virgule
     
      If IsNumeric(a) Then
     
        a = CDbl(a)
     
       If a <> memA Then
         'Debug.Print memA, a, TypeName(memA), TypeName(a)
     
        Cells(i, Col).NumberFormat = "General"
        Cells(i, Col).Value = a
     
      End If
     End If
     
     Next
    Next
     
    End Sub

Discussions similaires

  1. Convertir les accents en &aacute; & Co.
    Par titoumimi dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/03/2006, 12h51
  2. Pour convertir les dates aux types "datetime" sous
    Par nnn2050 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/01/2006, 15h30
  3. [langage] convertir les "." en ","
    Par caro_du_94 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2004, 15h58
  4. [QuickReport] convertir les états en RAVE
    Par El blérot dans le forum Rave
    Réponses: 5
    Dernier message: 18/03/2004, 17h05
  5. Réponses: 3
    Dernier message: 02/07/2003, 16h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo