Empecher l'envoie d'une erreur si l'onglet existe déjà
Résolu/Fermé
Giant
-
25 août 2020 à 09:30
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 - 25 août 2020 à 12:42
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 - 25 août 2020 à 12:42
A voir également:
- Empecher l'envoie d'une erreur si l'onglet existe déjà
- Erreur 0x80070643 - Guide
- Rouvrir onglet fermé - Guide
- Onglet privé - Guide
- Excel vérifier si une valeur existe dans une colonne ✓ - Forum Excel
- Onglet disposition excel - Forum Excel
10 réponses
Whismeril
Messages postés
19026
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 avril 2024
931
Modifié le 25 août 2020 à 10:36
Modifié le 25 août 2020 à 10:36
Bonjour
il te suffit d'appeler la fonction FeuilleExiste depuis la boucle ou tu crées tes feuilles.
Si elle n'existe pas tu crées, si elle existe tu ne fais rien.
Un truc du genre
il te suffit d'appeler la fonction FeuilleExiste depuis la boucle ou tu crées tes feuilles.
Si elle n'existe pas tu crées, si elle existe tu ne fais rien.
Un truc du genre
If FeuilleExiste("Nom de la feuille") = False Then 'code de création End if
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
25 août 2020 à 11:24
25 août 2020 à 11:24
Bonjour,
Déjà, pour éviter de faire des boucles... il existe une fonction un peu plus "optimisée"
Ensuite, pour répondre à ta question de " l'appliquer sur tout le classeur" ... et bien... il suffit d'y faire appel avant de faire l'ajout de ta feuille
Déjà, pour éviter de faire des boucles... il existe une fonction un peu plus "optimisée"
Function FeuilleExiste(NomF As String) As Boolean ' test si la feuille existe On Error Resume Next FeuilleExiste = Not Sheets(NomF) Is Nothing End Function
Ensuite, pour répondre à ta question de " l'appliquer sur tout le classeur" ... et bien... il suffit d'y faire appel avant de faire l'ajout de ta feuille
if FeuilleExiste("P1") = False Then Sheets.Add After:=Sheets(Sheets.Count) With Sheets(Sheets.Count) .Name = "P1" .Activate End With End if
Whismeril
Messages postés
19026
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 avril 2024
931
25 août 2020 à 11:50
25 août 2020 à 11:50
Sub Macro() Dim nomFeuille As String Dim monFichier As String Dim wb As Workbook Dim chemin As String Dim i As Integer Set wb = Workbooks(ThisWorkbook.Name) chemin = ThisWorkbook.Path & "\Test\" monFichier = Dir(chemin & "*.xlsx", vbNormal) Do While monFichier <> "" 'Ici je crée un onglet pour chaque nom de fichier dans mon dossier onglet = Split(Split(monFichier, "-")(2), "_")(0) if FeuilleExiste(onglet) = False Then wb.Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = onglet end if monFichier = Dir Loop End Sub
Avec la fonction FeuilleExiste de Jordane, que je salue au passage.
Je suis tombé sur ce code en creusant un peu, l'idée serait de l'appliquer pas pour une seule page, mais pour tout un classeur.
Public Function FeuilleExiste(FeuilleAVerifier As String) As Boolean 'fonction qui vérifie si la "FeuilleAVerifier" existe dans le Classeur actif 'par Excel-Malin.com ( https://excel-malin.com ) On Error GoTo SiErreur Dim Feuille As Worksheet FeuilleExiste = False For Each Feuille In Worksheets If UCase(Feuille.Name) = UCase(FeuilleAVerifier) Then FeuilleExiste = True Exit Function End If Next Feuille Exit Function SiErreur: FeuilleExiste = CVErr(xlErrNA) End Function
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Merci pour ta réponse. Est ce qu'il est possible de l'activer sur le classeur entier et non une feuille précise ?
Merci d'avance
Merci pour ta réponse. Est ce qu'il est possible de l'activer sur le classeur entier et non une feuille précise ?
Merci d'avance
Whismeril
Messages postés
19026
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 avril 2024
931
25 août 2020 à 10:55
25 août 2020 à 10:55
Poste le code avec lequel tu crées tes feuilles
Voici mon code initial. Merci beaucoup.
Sub Macro() Dim nomFeuille As String Dim monFichier As String Dim wb As Workbook Dim chemin As String Dim i As Integer Set wb = Workbooks(ThisWorkbook.Name) chemin = ThisWorkbook.Path & "\Test\" monFichier = Dir(chemin & "*.xlsx", vbNormal) Do While monFichier <> "" 'Ici je crée un onglet pour chaque nom de fichier dans mon dossier onglet = Split(Split(monFichier, "-")(2), "_")(0) wb.Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = onglet monFichier = Dir Loop End Sub
Aussi simple que ça, merci beaucoup !
Whismeril
Messages postés
19026
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 avril 2024
931
25 août 2020 à 11:58
25 août 2020 à 11:58
teste d'abord et si ça te convient, marque le sujet résolu
J'ai testé comme ci-dessous mais je tombe sur l'erreur "Type d'argument ByRef incompatible sur "onglet" :
If FeuilleExiste(onglet) = False Then
Function FeuilleExiste(NomF As String) As Boolean ' test si la feuille existe On Error Resume Next FeuilleExiste = Not Sheets(NomF) Is Nothing If FeuilleExiste("P1") = False Then Sheets.Add After:=Sheets(Sheets.Count) With Sheets(Sheets.Count) .Name = "P1" .Activate End With End If End Function Sub Macro() Dim nomFeuille As String Dim monFichier As String Dim wb As Workbook Dim chemin As String Dim i As Integer Set wb = Workbooks(ThisWorkbook.Name) chemin = ThisWorkbook.Path & "\Test\" monFichier = Dir(chemin & "*.xlsx", vbNormal) Do While monFichier <> "" 'Ici je cr?e un onglet pour chaque nom de fichier dans mon dossier onglet = Split(Split(monFichier, "-")(2), "_")(0) If FeuilleExiste(onglet) = False Then wb.Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = onglet End If monFichier = Dir Loop End Sub
Whismeril
Messages postés
19026
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 avril 2024
931
25 août 2020 à 12:42
25 août 2020 à 12:42
Relis le code de Jordane.
Ca n'est pas ce que tu as utilisé.
Ca n'est pas ce que tu as utilisé.