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 :

Remplacement caractère [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 28
    Par défaut Remplacement caractère
    Bonjour à tous,

    Je viens au désespoir pour un problème qui peut paraître très simple.
    J'ai un bout de tableau dans lequel j'ai collé des données importées d'un autre fichier excel.
    Ces données (numériques) apparaissent avec des virgules or je voudrais qu'elles soient passées en point, pour être compilées et exportées ensuite dans un fichier texte puis traité dans un autre programme.

    C'est sur le remplacement des , par des . que je bloque. J'ai essayé diverses solutions, d'abord avec une boucle sur chaque cellule avec la fonction replace. Fonctionne mais bonjour le temps de calcul ... (j'ai 15000 lignes à traiter). Puis par un enregistrement de macro, j'ai récupéré le code qui me permet de faire un CTRL + F, remplacer , par . . Lorsque je le fais à la main, pas de soucis ça fonctionne très bien (quand j'enregistre la macro donc et que je récupère le code). Mais lorsque je lance ensuite la macro pour l'avoir en automatique, niet il ne se passe rien.

    J'ai également fait une conversion de la plage qui m'interesse au format texte avant.

    Merci pour votre aide car je suis persuadé que l'erreur est plus que bête ...

    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
    '-----------------------------------------------------------------------------------------------------
    'REMPLACEMENT , par . --------------------------------------------------------------------------------
    '-----------------------------------------------------------------------------------------------------
     
    Windows("Trame_initiale.xlsx").Activate
     
    '= CTRL+F
    '----------------------------------------------
    Range("B75:I75").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.NumberFormat = "@"
     
    Range("A1:I15928").Replace What:=",", Replacement:=".", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    '----------------------------------------------

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par pablot Voir le message
    J'ai essayé diverses solutions, d'abord avec une boucle sur chaque cellule avec la fonction replace. Fonctionne mais bonjour le temps de calcul ... (j'ai 15000 lignes à traiter).
    Dans ce code que tu donne ci-dessous, je remarque que tu utilises abondamment les Select/Selection. Ca explique sans doute la lenteur de ton code.
    Je pense que si tu les retirais (plus une ou deux autres astuce), tu pourrais certainement obtenir un code avec un délai d'exécution raisonnable.
    Montre le code que tu avais fais avec Replace et je te montrerai comment le modifier.

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Range(cells(75,2),cells(rows.count,"I").end(xlup)).NumberFormat = "@"
     
    Range("A1:I15928").Replace What:=",", Replacement:=".", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 28
    Par défaut
    Et bien tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Windows("Trame_initiale.xlsx").Activate
     
    '=REPLACE UN PAR UN
     
    For i = 75 To 15928
        For j = 2 To 9
            Cells(i, j) = Replace(Cells(i, j), ",", ".")
        Next j
    Next i
    Je n'utilise pas de select ou autre ici ... mais le calcul est interminable ...

    Citation Envoyé par patricktoulon Voir le message
    Bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Range(cells(75,2),cells(rows.count,"I").end(xlup)).NumberFormat = "@"
     
    Range("A1:I15928").Replace What:=",", Replacement:=".", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Bonjour,

    Merci pour ce code "élagué", mais il ne se passe toujours rien

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim CY as Range
    Workbooks("Trame_initiale.xlsx").Activate
     
    Application.ScreenUpdating = False
    For Each CY in Range("B75:I15928")
        CY.Value = Replace(CY.Value, ",", ".")
    Next CY
    Application.ScreenUpdating = True

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 28
    Par défaut
    Super ça marche parfaitement !
    En revanche, je ne comprends toujours pas pourquoi le code d'avant ne fonctionnait pas ... c'est pourtant ce qui était enregistré lorsque je faisais la manip à la main ...
    Merci !

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

Discussions similaires

  1. rechercher/remplacer caractères spéciaux
    Par MarLoZ dans le forum Word
    Réponses: 3
    Dernier message: 14/11/2007, 11h42
  2. Remplacement caractères spéciaux
    Par tsimon dans le forum VB.NET
    Réponses: 5
    Dernier message: 18/10/2007, 16h00
  3. [Tableaux] remplacer caractère '
    Par robert_trudel dans le forum Langage
    Réponses: 1
    Dernier message: 01/10/2006, 03h53
  4. Requête pour remplacer caractères dans une table
    Par elliott1961 dans le forum Installation
    Réponses: 5
    Dernier message: 16/01/2006, 01h47
  5. [String] Remplacement caractères dans une chaîne
    Par Crazyblinkgirl dans le forum Langage
    Réponses: 4
    Dernier message: 19/07/2004, 11h15

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