Recherchev de cellules qui contiennent

Bonjour,

Mon problème est le suivant :

J'ai une colonne A (feuille 1) et deux colonnes B et C (feuille 2) avec des cellules non vides.

Mon but : rechercher les cellules de B QUI CONTIENNENT DES MOTS des cellules de A, pour pouvoir ensuite associer les cellules de C correspondantes.

J'espère avoir bien expliqué le problème, j'attends vos réponses, merci beaucoup!

Bonjour,

Ton projet d'utiliser la fonction rechercheV() est simple avec un fichier joint. Sans fichier joint tout devient plus compliqué...

fichier joint

A te relire,

Cordialement,

Leakim

Oui désolé! Du coup, voici le problème reformulé avec les bons libellés :

J'ai une colonne "Adresse" (feuille 1) et deux colonnes "Adresse complète" et "Index" (feuille 2) avec des cellules non vides.

Mon but : rechercher les cellules de "Adresse complète" QUI CONTIENNENT DES MOTS des cellules de "Adresse", pour pouvoir ensuite associer les cellules de "Index" correspondantes.

Merci

19exemple.xlsx (14.74 Ko)

Sachant que ce n'est qu'un extrait pour simplifier

Bonjour,

indyhyper a écrit :

Sachant que ce n'est qu'un extrait pour simplifier

Je me permet de te dire que simplifier n'est pas très adapté

C'est pas simple du tout ton affaire, car le forme RECHERCHEV() redonne des informations relatives à une référence soit exact soit approximative, mais là il y a trop d'info à traiter pour que cela fonctionne en approximatif.

Soit il faut combiner des formules de gestions de texte du type trouve() recherche() ou autres, mais je cale, j'ai pas

Je pense qu'il va falloir trouver une macro qui te permettra de faire ton tri et là je passe la main.

bonne recherche ,

Leakim

Ps je joins le fichier à toute fin utile

12exemple-9.xlsx (16.46 Ko)

Bonsoir le forum,

indyhyper es-tu au moins capable de remplir manuellement la colonne B de la feuille1 avec les index correspondants, j'en doute vu la présentation de ton problème

Restitution en Feuil3

Sub Index()
Dim a, i As Long, e
    Application.ScreenUpdating = False
    a = Sheets(2).Range("a1").CurrentRegion.Value
    With CreateObject("Scripting.Dictionary")
        .CompareMode = 1
        For i = 2 To UBound(a, 1)
            .Item(UCase(a(i, 1))) = a(i, 2)
        Next
        a = Sheets(1).Range("a1").CurrentRegion.Resize(, 2).Value
        For i = 2 To UBound(a, 1)
            For Each e In .keys
                If UCase(a(i, 1)) Like "*" & UCase(e) & "*" Then
                    a(i, 2) = .Item(e)
                    Exit For
                End If
            Next
        Next
    End With
    With Sheets(3).Range("a1").Resize(UBound(a, 1), UBound(a, 2))
        .CurrentRegion.Clear
        .Value = a
        With .CurrentRegion
            .Font.Name = "calibri"
            .Font.Size = 10
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .Borders(xlInsideVertical).Weight = xlThin
            .BorderAround Weight:=xlThin
            With .Rows(1)
                .Font.Size = 11
                .Interior.ColorIndex = 36
                .BorderAround Weight:=xlThin
            End With
            .Columns(1).ColumnWidth = 80
        End With
    End With
    Application.ScreenUpdating = True
End Sub

Je n'irai pas plus loin 8) klin89

Oula je suis pas sûr de tout comprendre! Bon voici le fichier en entier, merci pour votre aide!

15classeur1.xlsx (128.38 Ko)

Re indyhyper,

Sub Correspondance()
Dim a, b(), i As Long, e
    a = Sheets("Feuil2").Range("a1").CurrentRegion.Value
    With CreateObject("Scripting.Dictionary")
        .CompareMode = 1
        For i = 2 To UBound(a, 1)
            .Item(a(i, 1)) = a(i, 2)
        Next
        With Sheets("Feuil1").Range("a1").CurrentRegion
            a = .Value
            b = .Columns(2).Value
        End With
        For i = 2 To UBound(a, 1)
            b(i, 1) = Empty
            For Each e In .keys
                If UCase(a(i, 1)) Like "*" & UCase(e) & "*" Then
                    b(i, 1) = .Item(e)
                    Exit For
                End If
            Next
        Next
    End With
    Sheets("Feuil1").Range("a1").CurrentRegion.Columns(2).Value = b
End Sub

N'oublies pas de supprimer les lignes vides.

klin89

Je suis désolé klin89... je suis nouveau en excel et je n'ai donc jamais fait de VBA.. Je n'arrive pas à exécuter ce code malgré les explications sur internet... Que dois-je faire pour l'exécuter?

Rechercher des sujets similaires à "recherchev qui contiennent"