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 :

Comparer chaines de caractère , garder les parties communes et remplacer les parties différentes par XX


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2011
    Messages : 163
    Par défaut Comparer chaines de caractère , garder les parties communes et remplacer les parties différentes par XX
    Bonjour,

    Voila mon problème,

    Dans un programme, j'ouvre plusieurs fichiers qui ont des noms similaires :

    ex : 5960x_45_8_44_2666_32Go
    5960x_47_8_44_2666_32Go
    5960x_48_8_44_2666_32Go
    5960x_49_8_44_2666_32Go

    J'ai cette liste de fichier dans un tableau à une dimension.

    Auriez vous une idée de comment comparer ses 4 chaines de caractères ensemble et trouver les partie identique de la chaine et remplacer les valeurs différentes par XX.

    Pour ces fichiers , j'aimerais récupérer comme fichier de sortie : 5960x_XX_8_44_2666_32Go

    Cordialement

    Shakapouet

  2. #2
    Membre émérite
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Par défaut
    Dans ton exemple c'est toujours la 2ème partie de la chaîne qui varie : est-ce toujours le cas ?
    Si cela arrive quel doit être le résultat ramené ?
    A+

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2011
    Messages : 163
    Par défaut
    Bonjour,

    Non pas obligatoirement par exemple cela pourrait être

    5960x_45_4_44_2666_32Go
    5960x_45_6_44_2666_32Go
    5960x_45_8_44_2666_32Go
    5960x_45_10_44_2666_32Go

    Et la je devrais obtenir : 5960x_45_X_44_2666_32Go.

    Juste pouvoir remplacer les partie qui varie par un X.

    Merci de ton aide

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 683
    Par défaut
    Bonjour,

    Je te conseille de regarder l'aide sur l'instrucion split.
    Grace au split, tu peut séparer tes chaines de caractères suivant les "_" et ensuite tu pourras comparer facilement partie par partie, et remplacer si besoin par des XX

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2011
    Messages : 163
    Par défaut
    Ok merci je vais regarder avec la fonction split si j'arrive à me débrouiller.

    Merci

  6. #6
    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 683
    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 683
    Par défaut
    A noter que mon code n'est pas bon, vu que tu peux avoir un decalage de lettres, donc oui l'approche avec le split sur l'underscore peut completer mon approche =]
    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 (3e édition)
    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

  7. #7
    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 683
    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 683
    Par défaut
    Salut,

    tu peux passer par une boucle et un Mid()

    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
    Dim vStr As Variant
    Dim Result As String
    Dim tmp As String
    Dim bIdent As Boolean
    vStr = Array("5960x_45_4_44_2666_32Go","5960x_45_6_44_2666_32Go","5960x_45_8_44_2666_32Go","5960x_45_10_44_2666_32Go")
    tmp = "5960x_45_4_44_2666_32Go"
     
    For i = 1 To len(tmp)
    bIdent = True
    For j = LBound(vStr) to UBound(vStr)
    If Mid(tmp,i,1) <> Mid(vStr(j),i,1) Then
    bIdent = False
    Exit For
    End If
    Next j
    Result = Result & Iif(bIdent,Mid(tmp,i,1),"X")
    next i
    Msgbox "le template est " & Result
    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 (3e édition)
    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

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

Discussions similaires

  1. [AC-2010] Comparer les mots de 2 chaines de caractères
    Par docjo dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/05/2012, 20h15
  2. [Trigger] comparer chaine de caractères
    Par tck-lt dans le forum PL/SQL
    Réponses: 2
    Dernier message: 06/12/2011, 13h03
  3. [PHP 5.0] remplacer les retour chariots d'un fichier excel csv par des ";"
    Par fullhdpixels.com dans le forum Langage
    Réponses: 4
    Dernier message: 15/11/2009, 23h56
  4. Réponses: 7
    Dernier message: 23/09/2009, 11h02
  5. Réponses: 0
    Dernier message: 22/09/2009, 00h41

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