Comparer des noms de feuilles

Bonjour , ma demande est tout simple , mais je bloque sur une etape de mon code

  • j'ai un classeur qui s'appelle "FICHES"
  • un autre classeur qui s'appelle "SYNTHESE"

depuis une feuille de mon classeur SYNTHESE je voudrais comparer le nom de celle ci à tout les feuilles de mon classeur "FICHES"

en utilisant la methode find , dans le classeur FICHES les feuilles sont nommées sous la forme "XXX janv fév 2017" .

dans mon classeur SYNTHESE je suis positionné sur la feuille nommée "janv fév 2017" le but etant de savoir si je peux trouver

"janv fév 2017" dans "XXX janv fév 2017"du classeur FICHES.

pour cela j'ai ecris le code suivant :

Dim chemin As String
Dim f As Worksheet
chemin = ThisWorkbook.Path
'ouverture du stock feuilles d'heures:
Application.ScreenUpdating = False
Range("C11:j31").Select
Selection.ClearContents

Workbooks.Open Filename:=chemin & "\FICHES.xls"
For Each f In Sheets

Set recherche = Workbooks("SYNTHESE.xls").ActiveSheet.Name.Find(f.Name, Lookat:=xlPart)
 If Not recherche Is Nothing Then

  f.Select
  Workbooks("SYNTHESE").ActiveSheet.Cells(33, 3).End(xlUp).Offset(1, 0) = f.Range("b3").Value 
  Workbooks("SYNTHESE").ActiveSheet.Cells(33, 3).End(xlUp).Offset(0, 1) = f.Range("c40").Value 
  Workbooks("SYNTHESE").ActiveSheet.Cells(33, 3).End(xlUp).Offset(0, 2) = f.Range("c39").Value 
End If

Next
Application.ScreenUpdating = True
Workbooks("FICHES.xls").Close True

j'obtiens une erreur de compilation sur la ligne :

Set recherche = Workbooks("SYNTHESE.xls").ActiveSheet.Name.Find(f.Name, Lookat:=xlPart)

Pourriez vous m'indiquer une maniere de corriger cette ligne , ou identifier ce qui ne va pas ?

Vous remerciant par avance

Cordialement .

Bonjour,

Find ? Pour être plus précis la méthode Range.Find (elle s'applique à un objet Range !)

Set recherche = Workbooks("SYNTHESE.xls").ActiveSheet.Name.Find(f.Name, Lookat:=xlPart)

Or l'expression surlignée ne renvoie pas un objet Range, mais une valeur de type String...

Ceci étant, tes explications laissaient entendre que c'étaient dans FICHES que tu faisais une recherche... ?

On s'y perd un peu, mais il est vrai que travaillant avec des Select, sans qualificateur d'objet en pas mal d'endroits, ton code est plutôt confus à lire...

Cordialement.

merci pour ces explications Mferrand , quel methode devrais je plutot choisir ?

Merci

à trifouiller j'ai réussi à trouver une solution qui tourne :

Dim chemin As String
Dim f As Worksheet
chemin = ThisWorkbook.Path
'ouverture du stock feuilles d'heures:
Application.ScreenUpdating = False
Range("C11:j31").Select
Selection.ClearContents
Workbooks.Open Filename:=chemin & "\FICHES.xls"
For Each f In Sheets
  z = ""
  For i = 1 To Len(f.Name)
    If LCase(Mid(f.Name, i, 1)) = Mid(f.Name, i, 1) Then
          For j = i + 1 To Len(f.Name)
            z = z & Mid(f.Name, j, 1)
          Next
        Exit For
    End If
  Next
If Workbooks("SYNTHESE").ActiveSheet.Name = z Then
f.Select
Workbooks("SYNTHESE").ActiveSheet.Cells(33, 3).End(xlUp).Offset(1, 0) = f.Range("b3").Value
Workbooks("SYNTHESE").ActiveSheet.Cells(33, 3).End(xlUp).Offset(0, 1) = f.Range("c40").Value 
Workbooks("SYNTHESE").ActiveSheet.Cells(33, 3).End(xlUp).Offset(0, 2) = f.Range("c39").Value 
End If
Next
Application.ScreenUpdating = True
Workbooks("FICHES.xls").Close True

merci quand meme

Rechercher des sujets similaires à "comparer noms feuilles"