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 :

La commande "remplacer qui ne fonctionne pas quand le chiffre est supérieur à 1


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut La commande "remplacer qui ne fonctionne pas quand le chiffre est supérieur à 1
    Bonjour,

    Je suis sous Excel 2013.

    J'ai des données qui sont exportées par une machine en format text, avec un séparateur décimal qui est un "."

    j'ouvre ce classeur par l'intermédiaire d'une boite de dialogue que l'utilisateur rempli et qui me permet de récupérer le "nomfichier" à ouvrir

    Voila la macro que je suis en train de tester.

    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
    Public Sub macro1()
    
    Workbooks.OpenText Filename:= _
            nomfich, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
            :=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:= _
            False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array _
            (1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), TrailingMinusNumbers:= _
            True
        
        p = 9
        While Cells(p, 1) <> "" 'détecte le numéro de la dernière cellule verticale qui contient une donnée
        p = p + 1
        Wend
        
        q = 1
        While Cells(9, q) <> "" 'détecte le numéro de la dernière cellule horizontale qui contient une donnée
        q = q + 1
        Wend
        
        Range(Cells(1, 1), Cells(p - 1, q - 1)).NumberFormat = "0.000000000000" 'cellule en format "Standard" que je change en format "Nombre"
        
        Range(Cells(1, 1), Cells(p - 1, q - 1)).Replace What:=".", Replacement:=",", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        
        
    End Sub
    Le soucis que j'ai, est que lorsque la donnée dans la cellule est supérieure à 1, il ne détecte pas le "." et du coup, il me change totalement la valeur

    Nom : exemple pb.png
Affichages : 141
Taille : 8,7 Ko

    Merci pour votre aide

    PS: J'ai cherché dans la base de données avant de poser la question

  2. #2
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 134
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 134
    Points : 1 808
    Points
    1 808
    Par défaut
    Bonjour mobbydik,

    Le soucis que j'ai, est que lorsque la donnée dans la cellule est supérieure à 1, il ne détecte pas le "." et du coup, il me change totalement la valeur
    Il me semble que ta macro fonctionne même si tu t'es un peu compliqué la tache et que ton code eut pu être plus simple.

    Sans doute que l'anomalie que tu constates a une autre origine sans doute liée à tes données.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    merci pour la réponse, mais les données initiales sont toutes les mêmes et quand je le fais manuellement, je n'ai pas ce soucis de remplacement

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Pour compléter ma demande, j'ai testé aussi cette macro pour changer mes "." en ",":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    With Worksheets(1).Columns(1)
            Set c = .Find(".", LookIn:=xlValues)
            If Not c Is Nothing Then
                Do
                    c.Replace ".", ","
                    Set c = .FindNext(c)
                Loop While Not c Is Nothing
            End If
        End With
    J'obtiens le même résultat, à savoir qu'il me change bien mes "." en "," jusqu'à temps qu'il trouve une valeur supérieure à 1
    Je vous met une copie écran avec les valeurs initiales et avec le résultat lorsque la macro a été exécutée

    Nom : valeurs initiales.png
Affichages : 116
Taille : 5,7 Ko

    Nom : valeurs changees.png
Affichages : 120
Taille : 6,4 Ko

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    J'ai trouvé une solution qui fonctionne.

    Je remet mon code de départ avec la solution

    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
     
        p = 9
        While Cells(p, 1) <> "" 'détecte le nb de cellule verticale occupées
        p = p + 1
        Wend
     
        q = 1
        While Cells(9, q) <> "" 'détecte le nombre de cellule horizontale occupéés
        q = q + 1
        Wend
     
        Range(Cells(9, 1), Cells(p - 1, q - 1)).Select
     
    Dim curCell As Range
     
    For Each curCell In Selection
        curCell.Value = CDbl(Replace(Replace(curCell.Text, " ", ""), ".", ","))
     
    Next curCell

  6. #6
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 239
    Points : 5 610
    Points
    5 610
    Par défaut
    Bonjour,

    Que donnerait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           Workbooks.OpenText Filename:=nomFich, DataType:=xlDelimited, Comma:=True, DecimalSeparator:="."
    Cordialement.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Bonjour,

    Que donnerait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           Workbooks.OpenText Filename:=nomFich, DataType:=xlDelimited, Comma:=True, DecimalSeparator:="."
    Cordialement.
    Et bien, un grand merci car ça fonctionne avec cet ajout du DecimalSeparator.... et ça me simplifie du coup ma macro

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/10/2020, 14h20
  2. pageref qui me fonctionne pas quand il est passé en exposant
    Par pingouin84k dans le forum Mise en forme
    Réponses: 2
    Dernier message: 04/10/2012, 06h21
  3. Réponses: 2
    Dernier message: 01/09/2011, 09h33
  4. [XL-2003] recherche et remplace qui ne fonctionne pas
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/05/2011, 16h24
  5. Fonction Quoted printable qui ne fonctionne pas.
    Par leCcsympas dans le forum C
    Réponses: 3
    Dernier message: 13/01/2007, 18h54

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