Vérifier si feuille existe [Résolu]

Signaler
-
 Thibault -
Bonjour,

Ma demande est simple, mais je bloque sur la syntaxe.
J'ai une feuille qui est stockée dans une variable : "FICHER1", et j'aimerais vérifier si elle existe, j'ai donc tenté :
If Sheets(FICHIER1) = True Then

Je n'ai rien trouvé qui fonctionne, à part
ActiveSheet.Name = FICHIER1
mais ce n'est pas ce que je souhaite.

Merci d'avance.
Configuration: Windows / Edge 18.17763

2 réponses

Messages postés
31088
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 janvier 2021
3 193
Bonjour,

Tu pourrais, par exemple, utiliser une fonction du genre
Function FExist(NomF As String) As Boolean ' test si la feuille existe
   Application.ScreenUpdating = False
   On Error Resume Next
   FExist = Not Sheets(NomF) Is Nothing
   Application.ScreenUpdating = True
End Function 

et donc, dans ton code, ensuite, faire
 if FExist(FICHIER1) Then 
      

Parfait ! Merci beaucoup cependant j'ai un souci qui persiste si vous pouvez m'aider je vous en serai vraiment reconnaissant mais sinon tant pis. Je vous explique :

J'ai deux onglets avec du contenu. La macro au lancement crée deux nouveaux onglets qui sont un peu un miroir avec un mélange des deux valeurs. Le souci c'est que la copie fonctionne pour un des onglets mais pas pour les deux. Mon souci doit venir de mon If mais je ne trouve pas de bonne solution.

Voici mon code :

Sub test()
    Dim i As Integer, j As Integer, k As Integer, m As Integer, Feuille_X As String, Feuille_Y As String, Ligne_vide As Integer
    Dim Ligne_du_haut As Integer, Ligne_du_bas As Integer, Nombre_de_lignes As Integer, Nombre_de_colonnes As Byte
    
    Dim Fichier1 As String
    Dim Fichier2 As String
    Dim Fichier3 As String
    Dim Fichier4 As String
    
    Application.ScreenUpdating = False
    Fichier1 = InputBox("Indiquez votre 1er Fichier ? Homog?n?iser", "Fichier1")
    Fichier2 = InputBox("Indiquez votre 2nd Fichier ? Homog?n?iser", "Fichier2")
    Fichier3 = Fichier1 & "post"
    Sheets.Add After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Select
    Sheets(Sheets.Count).Name = Fichier3
    
    Worksheets(Fichier1).Range("A1:AZ128").Copy
    ActiveSheet.Paste Destination:=Worksheets(Fichier3).Range("A1:AZ128")
    
    Fichier4 = Fichier2 & "post"
    Sheets.Add After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Select
    Sheets(Sheets.Count).Name = Fichier4
    
    Worksheets(Fichier2).Range("A1:AZ128").Copy
    ActiveSheet.Paste Destination:=Worksheets(Fichier4).Range("A1:AZ128")
    

    With ActiveSheet
        Range("A2:Z" & Rows.Count).ClearContents
        Range("A2:Z" & Rows.Count).Interior.Pattern = xlNone
        
        If FExist(Fichier3) Then
            Feuille_X = Fichier1
            Feuille_Y = Fichier2
        End If
        If FExist(Fichier4) Then
            Feuille_X = Fichier2
            Feuille_Y = Fichier1
        End If

'la suite n'est pas vraiment nécessaire au souci. Puisqu'avec cette position de If c'est toujours le second If qui prime :
If FExist(Fichier4) Then
            Feuille_X = Fichier2
            Feuille_Y = Fichier1
        End If
Messages postés
31088
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 janvier 2021
3 193 > Thibault
Je regarde ça demain matin.
Bonne nuit
Messages postés
31088
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 janvier 2021
3 193 > Thibault
Je viens de tester... et donc.. aucun souci

J'ai ajouté du "debug"
        Debug.Print Fichier3
        If FExist(Fichier3) Then
            Debug.Print "Je suis passé dans le IF Fichier3"
            Feuille_X = Fichier1
            Feuille_Y = Fichier2
        End If
        
        Debug.Print Fichier4
        If FExist(Fichier4) Then
         Debug.Print "Je suis passé dans le IF Fichier4"
            Feuille_X = Fichier2
            Feuille_Y = Fichier1
        End If


Ce qui donne le résultat
>
Messages postés
31088
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 janvier 2021

Le souci est que dans Feuil1post il devrait y avoir le même style de tableau que dans Feuil2post. C'est là ou je bloque, j'ai mal du écrire mon code, mais dans l'idée le traitement se fait bien pour la Feuil2, mais pas pour la Feuil1.
Messages postés
31088
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 janvier 2021
3 193 > Thibault
C'est donc bien ce que je disais .. il n'y a aucun souci avec tes IF.

Là, c'est donc un souci d'organisation de ton code.
Je t'invite donc à créer une discussion propre à ce souci ( et pense à y remettre le lien vers ton classeur.)
>
Messages postés
31088
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 janvier 2021

Merci beaucoup pour ton aide en tout cas ! Je mets le sujet en résolu.

Bonne journée