Fonction find

Bonjour tout le monde

J'ai un petit soucis avec la fonction find, j'ai beaucoup de mal à trouver un tuto clair sur cette fonction... donc je me tourne vers la communauté.

Mon but est de trouver une valeur dans un tableau d'une feuille excel. Je cherche donc dans la première colonne une variable (du texte) pour avoir le numéro de ligne. Ensuite je fais la même chose dans ma première ligne pour avoir le numéro de colonne.

Enfin je cherche la cellule avec le numéro de ligne et de colonne pour la copier sur une autre feuille.

j'y arrive très bien avec le code suivant

Dim Wall As String, Floor As String
Dim col As Long, lig As Long

    Roof = Range("M4")
    Wall = Range("M16")

If Range("M30") = "Reference Building Floor" And Range("U4") = "Climate 4" Then
    col = Sheets("Reference Building Floor").Rows(1).Find(Floor).Column
    lig = Sheets("Reference Building Floor").Columns(1).Find(Wall).Row
    Sheets("Reference Building Floor").Cells(lig, col).Copy Destination:=Sheets("Public").Range("U23")
End If

Mais ma difficulté est qu'il y a plusieurs tableau sur ma même feuille qui sont identique (les deux critères sont les même sauf que le climat change donc les valeurs à l'intérieur changent)

Donc ma question est la suivante comment faire une recherche que sur une partie de la feuille ??

J'ai bien essayé de sélectionner le tableau avant la recherche mais cela ne marche pas

je vous mets quand même le code que j'ai essayé de rédiger même s'il ne marche pas ...

If Range("M30") = "Reference Building Floor" And Range("U4") = "Climate 4" Then
    With Sheets("Reference Building Floor").Range("B2:D2")
    Set col = .Find(Roof, LookIn:=xlValues).Column
    End With
    With Sheets("Reference Building Floor").Range("a3:a14")
    Set lig = .Find(Wall, LookIn:=xlValues).Row
    End With
    Sheets("Reference Building Floor").Cells(lig, col).Copy Destination:=Sheets("Public").Range("U23")
End If

Merci d'avance pour votre aide

Bonjour,

Avec un fichier de travail ça serait mieux.

Sans doute que .offset(ligne,colonne) selon la position du tableau voulu pourra te servir.

eric

Voilà mon fichier

j'ai juste effacer les données data pour mon travail ...

Donc la partie du code est sur la Feuille "public" et pour le bouton "Calculate"

merci de votre aide

A tester :

Private Sub CALCULER_Click()

    Worksheets("Public").Activate

    Range("U23:AA23").ClearContents
    Range("U23:AA23").ClearFormats

    Dim Wall As String, Floor As String
    Dim col As Long, lig As Long, climate As Range

    Roof = Range("M4")
    Wall = Range("M16")

    With Sheets("Reference Building Floor").Range("B2:D2")
        col = .Find(Roof, LookIn:=xlValues).Column - 1
    End With
    With Sheets("Reference Building Floor").Range("a:a")     '"a3:a14"
        lig = .Find(Wall, LookIn:=xlValues).Row - 1
        ' recherche position du tableau
        Set climate = .Find(Split(Range("U4"), " (")(0), LookIn:=xlValues)
    End With
    climate.Offset(lig, col).Copy Destination:=Sheets("Public").Range("U23")

    Worksheets("Public").Activate

    Range("U23:AA23").Merge
    Range("U23:AA23").Borders.Value = 1
    Range("U23:AA23").HorizontalAlignment = xlCenter
End Sub

Accessoirement tes Worksheets("Public").Activate sont inutiles. Il faut que cette feuille soit active pour avoir pu cliquer sur le bouton.

Et pourquoi enlever le format pour le remettre à la fin ? Le faire une fois sur la feuille semble suffisant. Mais bon, je n'ai peut-être pas tout vu...

eric

merci pour ta réponse je vais regarder tout ça

Rechercher des sujets similaires à "fonction find"