[Excel][VBA] Recherche de valeurs dans un tab

Résolu/Fermé
kouiks -  
kouiks87 Messages postés 1 Statut Membre -
Bonjour, bonjour! :D

Je fais appel à vous tous expert d'excel pour un petit soucis. Je m'explique un peu car le titre n'est pas vraiment équivoque.

Je ne suis pas du tout coutumier de VBA mais je souhaite créer une une macro afin de réaliser une recherche de valeur dans une colonne. En sachant que dans chaque case de cette colonne peu se trouver plusieurs valeurs (séparées par des points virgules). Tout ceci pour afficher dans une autre case touts les références (aussi séparées par des points virgules) contenant cette valeur...

Voilà pour les explications :D.

Merci beaucoup d'avance à ceux qui voudront bien m'aider!

5 réponses

  1. cousinhub29 Messages postés 1113 Date d'inscription   Statut Membre Dernière intervention   383
     
    Re-,

    Regarde le fichier joint.......

    Le code :

    Sub cousin()
    Dim FSource As Worksheet, FDest As Worksheet
    Dim Cel As Range
    Dim Composant As Object
    Dim Tmp
    Dim I As Long
    Application.ScreenUpdating = False
    Set FSource = Sheets("Base")
    Set FDest = Sheets("Resultat")
    Set Composant = CreateObject("Scripting.Dictionary")
    With FSource
        For Each Cel In .Range("C2:C" & .Cells(Rows.Count, 3).End(xlUp).Row)
        Tmp = Split(Cel, ";")
            For I = LBound(Tmp) To UBound(Tmp)
                If Not Composant.Exists(Tmp(I)) Then
                    Composant(Tmp(I)) = Cel.Offset(, -2)
                Else
                    Composant(Tmp(I)) = Composant(Tmp(I)) & "; " & Cel.Offset(, -2)
                End If
            Next I
        Next Cel
    End With
    With FDest
        .Range("A2:B5000").Clear
        .Range("A2").Resize(Composant.Count) = Application.Transpose(Composant.Keys)
        .Range("B2").Resize(Composant.Count) = Application.Transpose(Composant.items)
    End With
    End Sub
    


    Le fichier :

    https://www.cjoint.com/?BCgwWu7cRhe

    Bon courage

    Nota, j'ai rajouté un onglet, nommé "Resultat"....

    Si tu n'arrives pas, n'hésite pas....
    2
    1. kouiks87 Messages postés 1 Statut Membre
       
      Génial vraiment c'est complet propre et rapide... Que demande le peuple. Merci Là tu m'as dépanné.

      Maintenant je n'aime pas être face à quelque chose que je ne comprends pas et je souhaite en profiter pour apprendre un peu. Du coup est ce que je peux te demander de commenter les lignes de code si tu as un peu de temps.

      Autre question: les données ressortent en tant que donnée chiffre (le 1.1 se transforme en 1,1) est-il possible d'éviter cela?

      Encore une fois merci de t'être penché sur le sujet!
      0
  2. cousinhub29 Messages postés 1113 Date d'inscription   Statut Membre Dernière intervention   383
     
    Bonsoir,

    A priori, pas trop de problèmes, mais cependant, il faudrait voir la structure de ton fichier, afin de répondre au mieux...

    Si tu pouvais joindre un fichier exemple, exempt de données confidentielles, mais au plus près de ton fichier initial, cela accélérerait les réponses.

    Pour ce, utilises le site www.cjoint.com , et colle le lien ici

    Bonne soirée, et @ te relire
    0
    1. kouiks87 Messages postés 1 Statut Membre
       
      J'ai rajouté le lien juste au dessus.

      Merci pour l'info!!
      0
  3. cousinhub29 Messages postés 1113 Date d'inscription   Statut Membre Dernière intervention   383
     
    Bonjour,

    https://www.cjoint.com/?BChh63CF4Iw

    Version 2, avec code commenté.
    Pour préserver le 1.1, etc, j'ai rajouté une ligne de code qui formate au format "Texte" (@) la colonne A de destination.

    Bonne journée
    0
    1. kouiks87 Messages postés 1 Statut Membre
       
      Bonsoir Cousinhub!

      Dis-moi je reviens encore une fois vers toi pour te demander d'ajouter une fonction à mon fichier.
      Grace à la macro précédente, j'ai pu créer ma base de donnée de "lien". J'aimerai maintenant garder cette base de donnée et cette macro tout en l'intégrant dans une seconde qui permettra aussi de réaliser un affichage des résultats. Je te mets en pièce jointe le lien où sur la feuille "affichage" tu trouveras le type d'affichage que je souhaite réaliser (en faite il s'agit d'une recherche de chaque ref "num" où l'on vient coller les données de la ligne en gardant le lien avec la référence "composant" qui devient la donnée de 1ère ligne). Je te laisse jeter un coup d'oeil au fichier qui est plus parlant.

      https://www.cjoint.com/?BCnxQA2QIQy

      Peux-tu me dépanner sur le sujet?

      Bonne soirée
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. kouiks87 Messages postés 1 Statut Membre
     
    Merci beaucoup j'ai pu l'adapter vraiment facilement!

    A+
    0