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 :

Remplacer caractère dans chaine de caractères via lexique


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Remplacer caractère dans chaine de caractères via lexique
    Salut a vous amis développeur.

    Je suis en train d'essayer de développer un macro pour corriger l'orthographe d'un fichier d'extraction qui a des récurrences de fautes.
    Dans le fichier d'extraction, j'ai la source de cette extraction en colonne A et une chaine de caractères en colonne B qui contient des fautes.

    Sheets(2):
    Colonne A / Colonne B
    Source Z / Chaüne de caractéres

    Ce fichier d'extraction remonte dans mon fichier via une macro.

    Il faut savoir que les fautes sont en relation avec la source, c'est a dire, pour une source Z, j'ai toujours la même faute, l'extraction remplace un î par un truc du style ü, et voudrais une macro qui me corrige ça.

    J'ai donc créer un onglet lexique qui recense le type d'erreur possible: dans ma colonne A, j'ai la source, en colonne B j'ai la faute, et en colonne C j'ai le caractere qui doit remplacer la faute.

    Sheets(4):
    Colonne A / Colonne B / Colonne C
    Source Z / ü / î

    Donc, pour résumer, la macro doit verifier la source, si la source correspond, voir dans la chaine de caractere Sheets(2).ColonneB si le caractére de la Sheets(4).ColonneB est present, et si oui, il le remplace par le caracteres Sheets(4).ColonneC

    J'ai commencé a créer la boucle, mais je Bug un peu la pour la suite et la fonction a utiliser.
    Merci pour votre aide


    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
     
    Dim z As Long
    Dim y As Long
     
    For z = 2 To 2
    For y = 2 To 2
     
    If ThisWorkbook.Sheets(2).Range("A" & z).Value = ThisWorkbook.Sheets(4).Range("A" & y).Value Then
    Car = ThisWorkbook.Sheets(2).Range("B" & z)
    Car = Replace(Car, ThisWorkbook.Sheets(4).Range("B" & y), ThisWorkbook.Sheets(4).Range("C" & y))
     
    End If
     
    Next y
    Next z

    Comme vous le voyez, j'ai tenter avec Replace(), mais VBA a pas l'air d'aimer le ThisWoorkbook pour cette fonction


    Merci pour votre aide en avance.

    Nico2rib

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 763
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    C'est bien sûr faisable de faire cela en VBA mais ce que tu décris est typique d'importation de fichier n'ayant pas la même codification de caractères. Windows ANSI, MsDOS PC-8 etc...
    L'outil d'importation de texte permet de choisir le type de code. Si tu as la main sur l'importation des fichiers, tu auras un résultat immédiat.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Effectivement c'est bien l'outil d'importation qui pose les problemes de caractéres, mais je 'ai pas la main dessus.
    En effet, nous sous-traitons les BDD et les recevons en CSV..., je ne peut pas modifier l'outil d'importation.
    Auriez vous eventuellement un lien qui decris la procedure sous VBA? j'ai chérché, et continue a chercher, mais pour l'instant, rien de vraiment operatonnel...

    Merci

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 763
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je faisais justement allusions à l'importation de fichier csv, et txt.
    En excel 2010, l'onglet [Données], groupe Données externes clic sur le bouton A partir du texte

    Bonjour,
    Pour la documentation de code permettant de convertir des caractères peut-être ici.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci pour votre aide.
    Je n'ai pas reussi a passer par l'importation comme vous me l'aviez proposer, les caractéres reste bizarres.... et ce apres avoir essayer tout les encodage dispo...
    Donc,
    A partir de mon fichier source et de mon lexique, j'ai fait cette macro qui marche pas mal, je poste a titre d'info pour ceux qui en aurait besoin.

    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
    Private Sub CommandButton3_Click()
     
    Dim i As Integer
    For i = 2 To 6
        Rows("1:1").Select
        Selection.AutoFilter
        ActiveSheet.Range("$A$1:$AO$200000").AutoFilter Field:=2, Criteria1:=ThisWorkbook.Sheets(4).Range("A" & i).Value
        Columns("D:D").Select
        Selection.Replace What:=ThisWorkbook.Sheets(4).Range("B" & i).Value, Replacement:=ThisWorkbook.Sheets(4).Range("C" & i).Value, LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
     
    Next i
     
     
     
    End Sub

    On peut toujour ajouter un offset pour optimiser.... a bonne entendeur, salut!

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

Discussions similaires

  1. [Débutant] Alterner remplacement d'une chaine de caractère dans un fichier texte
    Par zazoudandan dans le forum MATLAB
    Réponses: 1
    Dernier message: 08/05/2015, 09h38
  2. Réponses: 4
    Dernier message: 31/08/2010, 17h45
  3. Réponses: 2
    Dernier message: 07/03/2007, 10h46
  4. Réponses: 4
    Dernier message: 18/07/2006, 16h31
  5. Remplacer une PARTIE de chaine de caractères dans un champ
    Par Turlututuchapopointu dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/08/2005, 11h57

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