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 texte


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Janvier 2008
    Messages : 91
    Par défaut Comparer chaines de texte
    Bonjour Forum,

    J'ai un fichier contenant 800 noms de compagnies. J'aimerais savoir si ce sont des compagnies privees ou publiques. Je peux extraire d'une autre base les noms de toute les compagnies publiques, mais le problemes est que ces noms ne correspondront pas exactement (et meme parfois pas du tout) a ceux de mon fichier de 800 noms. Pas possible d'utiliser un vlookup tout bete donc.

    Y a t'il moyen d'ecrire une fonction qui compte le nom de caracteres en commun dans les 2 cellules (mais qui tient compte de l'ordre egalement). Par exemple une fonction a 3 parametres: le premier = la cellule avec le nom 1, le 2e = le nom de la cellule avec le nom 21, et le 3e = le niveau de precision souhaite: le nombre de caracteres en communs ET dans le meme ordre.

    J'ai farfouille sur internet et j'ai trouve une fonction qui compte uniquement le nombre de lettres en communs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Explicit
     
    Function ComparerLettres%(A$, B$)
    Dim i%, n%, tmp$, c As New Collection
      If Len(A) > Len(B) Then tmp = A: A = B: B = tmp
      For i = 1 To Len(A)
        tmp = Mid$(A, i, 1)
        On Error Resume Next
        c.Add tmp, tmp
        If Err.Number = 0 Then n = n - (InStr(1, B, tmp) > 0)
        On Error GoTo 0
      Next i
      ComparerLettres = n
    End Function
    Pas mal, mais ce n'est pas exactement ce que je cherche...

    Une idee pour integrer l'ordre egalement?

    Merci

    Nianko

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 24
    Par défaut Bonjour
    Je t'invite à visiter cette page du site, gracieuseté de Silkyroad, qui s'intitule "Manipuler les chaines de caractère. Aver les fonctions "Right" et "Left" ainsi que des signes égals biens placés......


    http://silkyroad.developpez.com/VBA/...nesCaracteres/

    Bonne continuité!

  3. #3
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    Bonjour,
    je propose ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Function CompareMot(a As String, b As String) As Double
     Dim min As Long, max As Long, i As Long
     If Len(a) > Len(b) Then min = Len(b): max = Len(a) Else min = Len(a): max = Len(b)
     n = 0
     For i = 1 To min
      If Mid$(a, i, 1) = Mid$(b, i, 1) Then n = n + 1
     Next i
     CompareMot = n / max * 100
    End Function
    si la fonction retourne 100, les mots sont identiques, sinon la valeur la plus élevée est la plus approchante. Cette fonction n'est pas parfaite car un décalage d'une lettre (erreur de frappe) ne retournerait pas la valeur la plus appropriée mais elle reste simple.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/03/2007, 09h45
  2. [SQL] Nombre de caractères d'une chaine de texte
    Par at_first dans le forum Access
    Réponses: 3
    Dernier message: 13/02/2007, 13h12
  3. comparer des champs texte
    Par moicats dans le forum Access
    Réponses: 2
    Dernier message: 12/02/2007, 14h37
  4. comment mettre 1 guillemet dans une chaine de texte
    Par maisonfoue dans le forum Access
    Réponses: 2
    Dernier message: 06/01/2007, 21h18
  5. Réponses: 13
    Dernier message: 18/07/2006, 23h06

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