Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Récupérer plusieurs valeurs avec une référence

  • Initiateur de la discussion Initiateur de la discussion rere67
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

rere67

XLDnaute Junior
Bonjour à tous,

Je suis entrain de faire un fichier avec une base de données et dans une seconde feuille une récupération de l'ensemble des données pour visualiser d'une autre manière.

J'ai test" avec des recherchev mais je ne pense pas que se soit la bonne solution.

J'ai mis un fichier en exemple. L'idée est d'avoir un recueil de données dans la Feuil2 et récupérer les Commentaires dans des colonnes en fonction des différentes références.

Je vous remercie par avance pour toute l'aide que vous pourrez m'apporter.

Merci
 

Pièces jointes

Bonjour le fil, bonjour le forum,

Une solution VBA si ça t'intéresse. À placer dans le composant Feuil2(Feuil2). Ça agira chaque fois que tu sélectionneras (entreras dans) dans cet onglet...

VB:
Private Sub Worksheet_Activate()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)

Set O = Worksheets("Feuil1") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
Range("A1").CurrentRegion.Offset(1, 0).ClearContents 'supprime d'éventuelles enciennes données
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeur TV (en partant de la seconde)
    D(TV(I, 1)) = "" 'alimente le dictionnaire D avec les données de la colonne 1 du tableau de valeurs TV
Next I 'prochaine ligne de la boucle
TMP = D.Keys 'récupère dans le tableau temporaire TMP la liste des éléments du dictionnaire D sans doublon
For J = 0 To UBound(TMP) 'boucle 1 : sur tous les éléments du tableau temporaire TMP
    K = 1: Erase TL 'initialise K, vide le tableau des lignes TL
    For I = 2 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeur TV (en partant de la seconde)
        If TV(I, 1) = TMP(J) Then 'condition : si la donnée ligne I colonne 1 de TV correspond à lélément J du tableau temporaire TMP
            ReDim Preserve TL(1 To K) 'redimensionne le tableau des ligne TL (K lignes)
            TL(K) = TV(I, 4) 'récupere dans la ligne K de TL le commentaire en colonne 4 de la ligne I de TV
            K = K + 1 'incrémente K (ajoute une ligne à TL)
        End If 'fin de la condition
    Next I 'prochaine ligne de la boucle 2
    Cells(2, J + 2).Resize(UBound(TL), 1).Value = Application.Transpose(TL) 'renvoie le tableau TL transposé dans la cellule redimensionnée ligne 2 colonne j+2
Next J 'prochain élément de la boucle 1
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Insertion de photo
Réponses
14
Affichages
636
Réponses
4
Affichages
345
Réponses
10
Affichages
437
Réponses
3
Affichages
264
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…