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 :

Macro de substitution


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti Avatar de vidalv
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 15
    Par défaut Macro de substitution
    Bonjour,

    J'ai un fichier .csv de plus de 98000 lignes, parmi ces lignes il y en a qui contiennent l'expression "A A A A A A .... A A A" d'autres "B B B B B B .... B B B".

    J'aimerai trouver une macro qui puisse substituer les lignes avec les " A A " en " C C " et les " B B " en " D D ".

    Une idée simple pour faire ça ?

    Merci.

    Vincent.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    Une procedure avec une boucle et une fonction Replace ferait l'affaire ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    Bonjour

    Pour eviter une boucle sur les 98000 lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Range("A1:A" & rows.count).Replace What:="AA AA A AAA", Replacement:="CC CC C CCC", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    merci à l'enregistreur de macro

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Comme le préconise Jean-Philippe, avec Replace() :
    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
    41
    42
     
    Sub Remplacer()
     
        Dim Tbl() As String
        Dim I As Long
        Dim Fichier As String
        Dim Ligne As String
     
        'Adapter le chemin et nom du fichier
        Fichier = "D:\Mon Fichier Texte.txt"
     
        Open Fichier For Input As #1
     
        Do While Not EOF(1)
     
            'récup la ligne entière
            Line Input #1, Ligne
     
            I = I + 1
            ReDim Preserve Tbl(1 To I)
            'remplace en stockant provisoirement dans un tableau
            'si trouve "A....." remplace par "C....."
            Tbl(I) = Replace(Ligne, "AAAAAAA", "CCCCCCC")
            'idem pour "B....."
            Tbl(I) = Replace(Tbl(I), "BBBBBBB", "DDDDDDD")
     
        Loop
     
        Close #1
     
        Open Fichier For Output As #1
     
        For I = 1 To UBound(Tbl)
     
            'réinscrit par dessus avec les modifs effectuées
            Print #1, Tbl(I)
     
        Next I
     
        Close #1
     
    End Sub
    Hervé.

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Oups,

    Désolé, j'ai répondu trop vite, je n'ai pas fait attention au type de fichier .csv :0(( Donc, ne pas tenir compte de ma réponse.

    Hervé.

  6. #6
    Membre averti Avatar de vidalv
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 15
    Par défaut Macro de substitution.
    Thez, c'est pas un soucis, je peut transformer mon fichier .csv en Ascii.

    Je fait un essai.

    Merci pour le bout de code, il change les 49 premières occurrences puis laisse les autres telle-quelle, est-ce normale ? ou faut-il un paramètre a la fonction Replace ?


    Vincent.

Discussions similaires

  1. [WD12&14] utilisation d'une macro de substitution
    Par BENKOUIDER dans le forum WinDev
    Réponses: 2
    Dernier message: 18/06/2009, 12h07
  2. [VB6] Exécuter une macro Access
    Par Nektanebos dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 22/02/2006, 16h32
  3. [VBA-E] [Excel] Lancer une macro à une heure donnée
    Par Lysis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2002, 12h15
  4. Qu'est-ce qu'une macro ?
    Par karli dans le forum Assembleur
    Réponses: 2
    Dernier message: 01/09/2002, 03h38
  5. Réponses: 2
    Dernier message: 22/07/2002, 12h13

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