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

Résolu/Fermé
kouiks - 6 mars 2012 à 20:11
 Utilisateur anonyme - 13 mars 2012 à 23:53
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

cousinhub29 Messages postés 583 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 26 septembre 2022 314
6 mars 2012 à 22:49
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
Utilisateur anonyme
7 mars 2012 à 00:07
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
cousinhub29 Messages postés 583 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 26 septembre 2022 314
6 mars 2012 à 20:41
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
Utilisateur anonyme
6 mars 2012 à 21:03
J'ai rajouté le lien juste au dessus.

Merci pour l'info!!
0
Utilisateur anonyme
6 mars 2012 à 21:00
Voici le joint vers un fichier exemple avec en rouge la valeur à rechercher et à côté la valeur attendue

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

:) Merci d'avance
0
cousinhub29 Messages postés 583 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 26 septembre 2022 314
7 mars 2012 à 08:00
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
Utilisateur anonyme
13 mars 2012 à 23:53
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
7 mars 2012 à 22:01
Merci beaucoup j'ai pu l'adapter vraiment facilement!

A+
0