VBA - Feuille inexistante

Bonjour à tous,

A l'aide d'une macro VBA, je remplis des cellules dans certains onglets (que je liste dans la macro). Seulement voilà, il est possible que cet onglet n'existe pas, et dans ce cas, je voudrai qu'Excel me liste dans une nouvelle feuille, ou à l'écran, lesquels n'existent pas. Est-ce possible ?

Voici ma macro :

Sub macro1()
Dim Ws As Worksheet
Dim J As Long
    Application.ScreenUpdating = False
    For Each Ws In ActiveWorkbook.Worksheets
        If (Ws.Name = "1" Or Ws.Name = "2") Then
          For J = 11 To Ws.Range("B" & Rows.Count).End(xlUp).Row
            If UCase(Ws.Range("C" & J)) Like "3" Then
               Ws.Range("D" & J) = "4"
            End If
          Next J
        End If
    Next Ws
End Sub

Merci d'avance à ceux qui m'aideront !

Bonsoir,

une solution :

Sub Test()
    Dim Ws As Worksheet
    Dim J As Long
    Dim Message As String
    Dim Message1 As String
    Dim Message2 As String
    Message1 = "la feuille 1 n'existe pas"
    Message2 = "la feuille 2 n'existe pas"
    Application.ScreenUpdating = False
    For Each Ws In ActiveWorkbook.Worksheets
        If Ws.Name = "1" Then
            For J = 11 To Ws.Range("B" & Rows.Count).End(xlUp).Row
              If UCase(Ws.Range("C" & J)) Like "3" Then
                 Ws.Range("D" & J) = "4"
              End If
            Next J
            Message1 = ""
        ElseIf Ws.Name = "2" Then
            For J = 11 To Ws.Range("B" & Rows.Count).End(xlUp).Row
              If UCase(Ws.Range("C" & J)) Like "3" Then
                 Ws.Range("D" & J) = "4"
              End If
            Next J
            Message2 = ""
        Else
        End If
    Next Ws
    Message = Message1 & Chr(10) & Message2
    If Len(Message) > 2 Then
        MsgBox (Message)
    End If
End Sub

Mais il se peut que dans votre cas réel cela ne soit pas la meilleur...

@ bientôt

LouReeD

Merci mais effectivement ce n'est pas trop idéal, je vais avoir beaucoup d'onglets et pas seulement deux...

Bonsoir,

alors il va falloir être plus sur le nom des onglets...

ou de la structure du classeur.

Une des solutions serait le gestion des erreurs :

vous essayer "d'ouvrir" un onglet qui n'existe pas, vous récupérez l'erreur, vous mettez en mémoire le nom de cet onglet, et vous continuez le code et ainsi de suite.

Une fois le classeur "scanné" alors un message s'affiche avec le noms des onglets inexistant.

Voilà mais pour ceci il faut plus d'information afin que la "boucle de scan des feuilles" soit "volatile".

Les feuilles à testées ont - elles un nom particulier ? bref un peu plus d'informations, merci

@ bientôt

LouReeD

En fait j'ai un classeur avec environ 2000 onglets, ce sont des noms sous le format NOM, PRENOM.

Je ne connais pas du tout la gestion d'erreur, mais ce serait idéal ce dont vous parlez. Dites moi quelles informations précises avez-vous besoin, parce que mettre le fichier ici me pose un problème de confidentialité avec les noms.

Merci d'avance

Bonsoir,

ci joint un exemple :

Le truc c'est d'avoir quelque part la liste des personnels complète, même ceux qui ne sont pas en onglet et de faire une boucle sur cette liste.

@ bientôt

LouReeD

Bonsoir le fil, bonsoir le forum,

Ton problème de confidentialité est un faux problème car rien n'est plus simple avec Excel de créer un fichier en remplaçant Jean Neymard par Nom1, Steff Aignant par Nom2, etc. Une petite macro et en 2 temps trois mouvements tu obtiens un fichier anonyme...

Parce que contrairement à LouReeD, que je salue au passage, je n'ai rien compris à ton problème. Je vois mal comment lister des onglets qui n'existent pas ? Je pense que tu veux dire, lister les onglets qui ne font pas partie d'une liste de mots. Mais je n'ai pas compris où on la récupère cette liste....

Bonjour à tous,

bonjour ThauThème,

il m'est déjà arrivé d'utiliser une application excel dans laquelle il y avait une liste "exacte" des personnels de l'entreprise, elle était mise à jour à chaque arrivée et chaque départ.

Mais cette application servait à faire un suivi d'une partie du personnel, qui cette partie avait une fiche "nominative" par personne.

Lors de mise à jour de valeur de suivi, une macro scannait le classeur et modifié seulement les feuilles des personnes concernées par le suivi.

Alors il est vrai que la macro ne "regardait" pas le nom de la personne, dans mon cas, elle scrutait uniquement les feuilles "personnels" qui se trouvaient après les dix feuilles système, donc une boucle :

for i = 11 to WorkSheets.Count

next i

Comme cela pas de soucis de nom, si la feuille fait partie de la 11ième à la dernière c'est bien une feuille de suivi qu'il faut mettre à jour. Mais ce système n'est valable que si toutes les feuilles sont à modifier.

Sinon un système de liste de nom qui permet de sélectionner les feuilles que l'on veut et ce code permet de détecter un oubli de création de feuille de suivi.

Après il est vrai qu'il manque quelques informations pour une résolution "aboutie" qui correspond à la demande

Bon dimanche et @ bientôt

LouReeD

Bonjour à tous,

@ LouReeD Merci beaucoup pour cette macro, qui marche très bien. Maintenant est-ce qu'il serait possible, à la place du message d'erreur, qu'il surligne en couleur dans la liste les onglets qui n'existent pas ? je suis désolée, mais je suis vraiment nulle en VBA, je ne sais même pas comment j'ai réussi à créer cette première macro ahah.

@ ThauThème, je comprends que je ne sois pas claire. J'ai un fichier de 2000 onglets. Je veux que la macro que j'utilise, écrive quelque chose dans certains onglets uniquement. Sauf qu'il est possible que dans ces certains onglets, certains n'existent pas encore et que j'ai besoin de les créer. Je voudrais donc pouvoir identifier ceux là, pour pouvoir les créer.

Bon dimanche

Voici :

@ bientôt

LouReeD

Merci beaucoup, c'est parfait !

Et bien ravis que cela vous plaise !

@ bientôt

LouReeD

Rechercher des sujets similaires à "vba feuille inexistante"