A voir également:
- Vba si feuille existe alors
- Vba vérifier si une feuille existe - Meilleures réponses
- Vba créer une feuille si elle n'existe pas - Meilleures réponses
- Vba si feuille existe alors supprimer ✓ - Forum - Excel
- VBA Condition "Si la feuille existe" Alors... - Forum - VB / VBA
- Avec Excel, vérifier l'existance d'une feuill ✓ - Forum - Excel
- Supprimer une feuille excel par vba ✓ - Forum - Excel
- Vérifier si feuille existe ✓ - Forum - VB / VBA
3 réponses
pijaku
28 juil. 2016 à 09:28
- Messages postés
- 12257
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 3 septembre 2021
28 juil. 2016 à 09:28
Bonjour,
Avec une fonction booléenne et le gestionnaire d'erreur :
cf : https://www.developpez.net/forums/d269391/logiciels/microsoft-office/excel/macros-vba-excel/vba-e-feuille-existe/
Avec une fonction booléenne et le gestionnaire d'erreur :
Function FeuilleExiste(wk As Workbook, stFeuille As String) As Boolean On Error Resume Next FeuilleExiste = Not (wk.Sheets(stFeuille) Is Nothing) End Function
cf : https://www.developpez.net/forums/d269391/logiciels/microsoft-office/excel/macros-vba-excel/vba-e-feuille-existe/
ThauTheme
28 juil. 2016 à 10:04
- Messages postés
- 1436
- Date d'inscription
- mardi 21 octobre 2014
- Statut
- Membre
- Dernière intervention
- 27 avril 2022
28 juil. 2016 à 10:04
Bonjour Exis, bonjour le forum.
Je ne sais pas d'où tu sors Content mais pour moi ce mot clé n'existe pas... Je te propose la macro événementielle Change ci-dessous, à placer dans le code de l'onglet Saisie :
Je ne sais pas d'où tu sors Content mais pour moi ce mot clé n'existe pas... Je te propose la macro événementielle Change ci-dessous, à placer dans le code de l'onglet Saisie :
Private Sub Worksheet_Change(ByVal Target As Range) Dim O As Worksheet 'déclare la variable O (Onglets) If Target.Address <> "$E$5" Then Exit Sub 'si le changement a lieu ailleurs qu'en E5, sort de la procédure For Each O In Sheets 'boucle sur tous les onglets du classeur If O.Name = Target.Value Then 'condition : si le nom de l'onglet est égal à la valeur de la cellule E5 MsgBox "Cet onglet existe déjà ! Veuillez saisir un autre nom." 'message Target.Select 'sélectionne la cellule E5 Exit Sub 'sort de la procédure End If 'fin de la condition Next O 'prochain onglet de la boucle Sheets.Add after:=Sheets(Sheets.Count) 'ajoute un onglet en dernière position (à adapter à ton cas) ActiveSheet.Name = Target.Value 'renomme l'onglet End Sub
Bonjour, merci de votre réponse.
avec VALUE a la place de CONTENT , lorsque j'appuie sur le bouton OK, rien ne se passe. Avec CONTENT il m'affichait le msgbox , mais tout le temps et ne créait pas de nouvelle feuille.
J'ai essayé votre méthode et cela ne marche pas, au lieu de de bloquer la création d'un nouvel onglet, il créée juste un nouvel onglet avec le numéro (2)
Je précise que le code de création d'un nouvel onglet a partir du Bouton OK se trouve dans un module.
Merci de ton aide en tout cas
avec VALUE a la place de CONTENT , lorsque j'appuie sur le bouton OK, rien ne se passe. Avec CONTENT il m'affichait le msgbox , mais tout le temps et ne créait pas de nouvelle feuille.
J'ai essayé votre méthode et cela ne marche pas, au lieu de de bloquer la création d'un nouvel onglet, il créée juste un nouvel onglet avec le numéro (2)
Je précise que le code de création d'un nouvel onglet a partir du Bouton OK se trouve dans un module.
Merci de ton aide en tout cas
ThauTheme
Modifié par ThauTheme le 28/07/2016 à 12:19
- Messages postés
- 1436
- Date d'inscription
- mardi 21 octobre 2014
- Statut
- Membre
- Dernière intervention
- 27 avril 2022
Modifié par ThauTheme le 28/07/2016 à 12:19
Re,
Forcément ça ne peut pas marcher ! Le code que je t'ai proposé agit automatiquement quand tu édites la cellule E5 de l'onglet Saisie. C'est pour cela que je t'ai précisé qu'il fallait le mettre dans le composant de cet onglet Saisie. Pour cela, copie le code que je t'ai proposé, clique avec le bouton droit en bas sur le nom de l'onget Saisie et choisit l'option Visualiser le code, Colle le code...
L'avantage est que tu n'a plus besoin d'un bouton, le code agit automatiquement.
Toutefois, si tu désires conserver le bouton, utilise le code ci-dessous à appliquer au bouton :
À plus,
ThauTheme
Forcément ça ne peut pas marcher ! Le code que je t'ai proposé agit automatiquement quand tu édites la cellule E5 de l'onglet Saisie. C'est pour cela que je t'ai précisé qu'il fallait le mettre dans le composant de cet onglet Saisie. Pour cela, copie le code que je t'ai proposé, clique avec le bouton droit en bas sur le nom de l'onget Saisie et choisit l'option Visualiser le code, Colle le code...
L'avantage est que tu n'a plus besoin d'un bouton, le code agit automatiquement.
Toutefois, si tu désires conserver le bouton, utilise le code ci-dessous à appliquer au bouton :
Sub Macro1() Dim O As Worksheet 'déclare la variable O (Onglets) Dim N As String 'déclare la variable N (Nom) N = Sheets("Saisie").Range("E5") If N = "" Then Exit Sub 'si N est vide, sort de la procédure For Each O In Sheets 'boucle sur tous les onglets du classeur If O.Name = N Then 'condition : si le nom de l'onglet est égal à la valeur de la cellule E5 MsgBox "Cet onglet existe déjà ! Veuillez saisir un autre nom." 'message Sheets("Saisie").Select 'sélectionne l'onglet "Saisie" With Range("E5") 'prend en compte la cellule C5 .Select 'sélectionne .Value = "" 'efface le contenu End With 'fin de la prise en compte de la cellule E5 Exit Sub 'sort de la procédure End If 'fin de la condition Next O 'prochain onglet de la boucle Sheets.Add after:=Sheets(Sheets.Count) 'ajoute un onglet en dernière position (à adapter à ton cas) ActiveSheet.Name = N 'renomme l'onglet End Sub
À plus,
ThauTheme
28 juil. 2016 à 09:33
28 juil. 2016 à 09:43