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 IfMais 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 IfMerci 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 SubAccessoirement 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