Recherche entête colonne et récupération valeurs

Bonjour,

Je suis débutant total au niveau de la VBA et suis actuellement en train de m'y intéresser pour créer un petit outil excel dans le cadre d'un stage.

Je suis actuellement bloqué sur une partie du code de mon outil.

J'ai créé en feuille 1 deux liste déroulantes (la première influençant les possibilités de la deuxième). Jusque là tout va bien.

Mais c'est ensuite que cela se complique.

Je souhaiterais à l'aide d'un bouton "Rechercher" (que j'ai déjà placé) qui activerait la macro, récupérer le résultat du choix du deuxième menu déroulant.

Puis chercher ce choix dans les entêtes de colonnes de ma feuille 2, et ensuite copier la colonne associée à cette entête sur la feuille 1.

Je ne pense pas que cela soit difficile à réaliser mais étant donné mon niveau en VBA et en programmation en général je n'y arrive pas.

Merci de votre aide

Bonjour Mathieu, bonjour le forum,

Essaie comme ça :

Sub Rechercher()
Dim O1 As Worksheet 'déclare la variable O1 (Onglet 1)
Dim O2 As Worksheet 'déclare la variable O1 (Onglet 1)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Dim F As Range 'déclare la variable F (Famille)
Dim C As Range 'déclare la variable C (Commodité)
Dim COL As Byte 'déclare la variable COL (COLonne)

Set O1 = Worksheets("Feuil1") 'définit l'onglet O1
Set O2 = Worksheets("Feuil2") 'définit l'onglet O2
Set DEST = O1.Range("D3") 'définit la cellule de destination DEST
O1.Range(DEST, DEST.End(xlDown)).Clear 'efface d'éventuelles anciennes données
Set F = O1.Range("B3") 'définit la cellule F
Set C = O1.Range("B5") 'définit la cellule C
Select Case F.Value 'agit en fonction de la valeur de F
    Case "FamilleA" 'cas "FamilleA"
        'définit la colonne COL avec la fonction de recherche Find
        COL = O2.Range("B2:E2").Find(C.Value, , xlValues, xlWhole).Column
    Case "FamilleB" 'cas "FamilleB"
        'définit la colonne COL avec la fonction de recherche Find
        COL = O2.Range("F2:I2").Find(C.Value, , xlValues, xlWhole).Column
    Case "FamilleC" 'cas "FamilleB"
        'définit la colonne COL avec la fonction de recherche Find
        COL = O2.Range("J2:L2").Find(C.Value, , xlValues, xlWhole).Column
End Select
O2.Range(O2.Cells(3, COL), O2.Cells(10, COL)).Copy 'copie la palge correspondante
DEST.PasteSpecial (xlPasteValues) 'colle ses valeurs dans DEST
DEST.Select 'sélectionne la cellule DEST
End Sub

Bonjour ThauThème et merci beaucoup de ta réponse qui fonctionne parfaitement.

Mais mon document de travail étant un peu plus complexe que celui fourni comme exemple (je dispose de 8 familles qui se trouvent une 1ère fois sur un tableau en feuille 2 et une 2ème fois sur un tableau en feuille 3). Je souhaiterais quelques précisions.

Je pense tout d'abord rajouter un "Case" par famille pour chacune de mes 8.

Mais comment dois-je faire pour aller récupérer une plage de la feuille 3 de la même manière que pour la feuille 2 ?

Dois- je ré-exécuter ce même code en l'adaptant à une feuille supplémentaire, où y'at'il une solution plus rapide ?

Merci beaucoup de ton aide en tout cas.

Mathieu

Bonsoir MathieuP,

Salut ThauThème

Option Explicit
Sub test()
Dim x
    With Sheets("Feuil2").Range("b1").CurrentRegion
        x = Application.Match(Sheets("Feuil1").Range("b5").Value, .Rows(2), 0)
        If IsNumeric(x) Then
            .Columns(x).Offset(2).Resize(.Rows.Count - 2).Copy Sheets("Feuil1").Range("d3")
        End If
    End With
End Sub

klin89

Rechercher des sujets similaires à "recherche entete colonne recuperation valeurs"