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 :

recherche intelligente avec VBA excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut recherche intelligente avec VBA excel
    bonjour,
    je voudrais savoir si quelqu'un savait comment effectuer une rechercheb approché de caractère (string) c'est a dire deux string identique a 70%
    (en conservant l'ordre ds mots)
    j'ai deux feuilles excel la première composée de 3 colonnes (ID1 PRICE NAME1 ) et la deuxième en possède 2 (ID2,NAME2 )
    le but étant de génerer une nouvelle feuille (NAME1 ID1 PRICE [ID2 possible])
    le coeur du problème est la différence d'ecriture entre NAME1 et NAME2
    les noms de NAME1 sont parfois en partie composé d'abbrévaition exemple
    Final fantasy TA dans NAME1 Final fantasy tactics advance dans NAME2
    DBZ tenkaichi dans NAME 1 drangonball Z tenkaichi dans NAME2

    j'ai effectuer une macro qui compare une string a une valeur d'un tableau placant les reponse possible a cote du nom slectionné grace a instr
    mon idée etait de retirer un caractère(ou mots) d'un coté ou l'autre de ma chaine de base afin de retrouver celui qui en est le plus proche

    pour une chaine (comparaison et recuperation des donnes id2 placer apres NAME2

    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
    Sub doc()
    'mot en D1
    Call Lilsearch(Range("D1"), Range("D1").Value)
    End Sub
     
    Sub Lilsearch(A As Range, S As String)
     
    Dim R As Range
    Set R = Range("A3:A11")
    A.Select
     
    Dim L As Integer
    Dim i As Integer
    Dim J As String
     
    L = 0
    i = 0
    For Each C In R
    J = C.Offset(0, 1).Value
    If Not InStr(1, C.Value, S) = 0 Then
    A.End(xlToRight).Offset(0, 1).Select
    Selection.Value = J
     
    End If
    Next
     
    End Sub

  2. #2
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Sinon une proposition je ne sais pas si cela te conviendra
    J'utilise la fonction split
    Cela me permet de comparer chaque mot
    Après tu peux essayer de travailler par cacractère mais là c'est plus difficile
    pour la manipulation des chaine de carctère si cela te donne des idées la faq
    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
          Dim Tableau1() As String
        Dim Tableau2() As String
        Dim i As Integer, j As Integer
       Dim nbconcordance As String
        dim nom1 as string
        dim nom2 as string
     
        nom1="Bob le chien chinois"
       nom2="Bob le calamar chinois géant"
    'on converti en majuscule
        nom1=StrConv(nom1, vbUpperCase)
        nom2=StrConv(nom2, vbUpperCase)
    ' on découpe les nom
        Tableau1 = Split(nom1, " ")
        Tableau2 = Split(nom2, " ")
        nbconcordance = 0
    'on compare les mot
        For i = 0 To UBound(Tableau1)
            For j = 0 To UBound(Tableau1)
                  If Tableau1(i) = Tableau2(j) Then
                        nbconcordance = nbconcordance + 1
                        Exit For
                  End If
           Next j
       Next i
    Après pour rendre ton code lisible merci d'utilise les balise CODE

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonsoir,

    Mission impossible (à moins d'arriver à du n'importe quoi dans de très nombreux cas), sans plusieurs dictionnaires et plusieurs thésaurus (et encore...)
    Tiens : voilà deux textes :
    Texte1 : "Jean DUPOND, maire à LYON, a recruté au pair une paire d'étudiantes"
    Texte2 : "Sean DUPONT va faire raire près de RYON un cerf corné de vair."

    C'est déjà bien complexe (très très très complexe) en utilisant des phonèmes .... (tu devrais commencer par là, d'ailleurs...), mais là, avec des lettres que tu essayes de "rapprocher intelligemment" !!!!... ===>> ouille !

  4. #4
    Membre actif
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Points : 246
    Points
    246
    Par défaut
    il me semble qu'il existe le moyen de calculer la distance entre deux mots. Mais comme le dit ucfoutu, c'est un peu sioux a faire.
    Pour info, la distance entre deux mots c'est la distance de Leveinshtein.

Discussions similaires

  1. envoi mail outlook avec vba excel
    Par momolamoto dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/09/2010, 10h45
  2. manipulation des fichiers et dossiers avec VBA excel
    Par GBAGO dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/07/2007, 23h30
  3. lien internet avec VBA EXCEL
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/07/2007, 10h40
  4. recherche par date vba excel
    Par fred014 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/03/2007, 13h35
  5. Images avec VBA Excel
    Par dorschner dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/09/2006, 23h28

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