Ecriture d'un boucle avec un else

bonjour

mon petit code ne marche pas tres bien le voici :

Set Wkb = Workbooks("Classeur A.xls").Sheets("edition") 
    S = Wkb.Range("L19")
For Each feuille In Sheets
    If (feuille.Name) = S Then
feuille.Activate
'*****************************

        Else
        Workbooks("Classeur B.xls").Close Savechanges:=True  ' fermeture du classeur de destination supposé déjà ouvert
        MsgBox "La feuille demandé n'existe pas dans le classeur de destination, il n'a donc pas été crée!"
        '**************************************
        Exit For

    End If
Next feuille

le souci est que j'ai systematiquement le message ""La feuille demandé n'existe pas dans le classeur de destination, il n'a donc pas été crée!" meme si la feuille souhaitée existe bein , est ce du au fait que les instructions qui suivent apres le

Else

sont mal placés ?

Merci pour vos conseils

Bonjour,

Une macro commence par Sub... et fini par Sub

Elle dépend en outre du module et du classeur ou elle est écrite.

Merci de joindre la totalité du code.

A+

Bonjour,

Comme le dit Galopin, avec la macro entière cela sera plus pratique, mais à première vue pour moi, c'est que tu boucle sur les feuilles de ton classeur A, pas de ton classeur B.

Cordialement,

voici le code complet en expliquant le role de chaque ligne

Sub OuvrirDoc2()

Dim Wkb As Worksheet
Dim S As String
Dim feuille As Worksheet

chemin = ThisWorkbook.Path
Workbooks.Open Filename:=chemin & "\Classeur B.xls"  'ouverture du classeur B

Set Wkb = Workbooks("Classeur A.xls").Sheets("edition")  ' classeur A est deja ouvert 
    S = Wkb.Range("L19")
For Each feuille In Sheets  ' je passe en revu toutes mes feuilles du classeur B
    If (feuille.Name) = S Then      ' si je trouve un nom de feuille dans B  nommée comme la  valeur de la cellule L19 de la feuille édition de A alors :
feuille.Activate  ' la feuille cherchée apparait 
'*****************************

        Else
       'Workbooks("Classeur B.xls").Close Savechanges:=True     'sinon je ferme le classeur B avec le message suivant : 

        MsgBox "Le laissez passer demandé n'existe pas dans le classeur de destination, il n'a donc pas été crée!"
        '**************************************

        Exit For

    End If
Next feuille

end sub

Merci

Bonsoir,

Effectivement la boucle n'est jamais exécutée si la première feuille n'est pas la bonne tu passes directement à Else et Exit For.

La bonne formulation :

Sub OuvrirDoc2()
Dim Wkb As Worksheet
Dim S As String
Dim feuille As Worksheet

chemin = ThisWorkbook.Path
Workbooks.Open Filename:=chemin & "\Classeur B.xls"  'ouverture du classeur B

Set Wkb = Workbooks("Classeur A.xls").Sheets("edition")  ' classeur A est deja ouvert
   S = Wkb.Range("L19")

For Each feuille In Sheets  ' je passe en revu toutes mes feuilles du classeur B
   If (feuille.Name) = S Then i = feuille.Index
Next

If i > 0 Then
   Sheets(i).Activate
Else
   Workbooks("Classeur B.xls").Close Savechanges:=True     'sinon je ferme le classeur B avec le message suivant :
   MsgBox "Le laissez passer demandé n'existe pas dans le classeur de destination, il n'a donc pas été crée!"

End If
End Sub

A+

Merci galopin01 ca fonctionne et j'ai pu comprendre ce qui n'allait pas ..encor merci !

Rechercher des sujets similaires à "ecriture boucle else"