Vérification de nom d'onglet
Résolu
Maksime568
Messages postés
142
Date d'inscription
Statut
Membre
Dernière intervention
-
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une petite macro me permettant de copier un onglet de référence et en nommant ce nouvel onglet selon la date du jour.
Cependant,
si 2 appuis sont fait le même jour sur le bouton d'ajout (ce qui ne doit pas arriver),
la macro bug et ne reprotège pas mon classeur.
comment faire pour éviter de créer un second onglet si un premier en date du jour est déjà créé?
J'ai une petite macro me permettant de copier un onglet de référence et en nommant ce nouvel onglet selon la date du jour.
Cependant,
si 2 appuis sont fait le même jour sur le bouton d'ajout (ce qui ne doit pas arriver),
la macro bug et ne reprotège pas mon classeur.
comment faire pour éviter de créer un second onglet si un premier en date du jour est déjà créé?
Sub ajoutProduction() ' ' ajoutProduction Macro ' ActiveWorkbook.Unprotect Sheets("Suivi Production").Select Sheets("Suivi Production").Copy After:=Sheets(1) ActiveSheet.Name = Format(Date, "dd-mm-yy") ActiveWorkbook.protect Structure:=True, Windows:=False End Sub
Configuration: Windows / Firefox 81.0
A voir également:
- Vérification de nom d'onglet
- Raccourci rouvrir onglet fermé - Guide
- Nom de l'adresse - Forum Jeux vidéo
- Nom de compte steam exemple - Forum Jeux vidéo
- Sms tiktok verification code ✓ - Forum Mail
- Verification lien internet - Guide
4 réponses
Bonjour
un truc du genre
un truc 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 Sub ajoutProduction() ' ' ajoutProduction Macro ' Dim nomF as String nomF = Format(Date, "dd-mm-yy") if FExist(nomF) Then exit sub End If ActiveWorkbook.Unprotect Sheets("Suivi Production").Select Sheets("Suivi Production").Copy After:=Sheets(1) ActiveSheet.Name = nomF ActiveWorkbook.protect Structure:=True, Windows:=False End Sub
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, suggestion:
Option Explicit Sub ajoutProduction() ' ' ajoutProduction Macro ' Dim nom As String nom = Format(Date, "dd-mm-yy") If Not existedeja(nom) Then ActiveWorkbook.Unprotect Sheets("Suivi Production").Select Sheets("Suivi Production").Copy After:=Sheets(1) ActiveSheet.Name = Format(Date, "dd-mm-yy") ActiveWorkbook.Protect Structure:=True, Windows:=False End If End Sub Private Function existedeja(quoi As String) As Boolean Dim ong As Worksheet For Each ong In ThisWorkbook.Worksheets If ong.Name = quoi Then existedeja = True Exit Function End If Next ong existedeja = False End Function
Bonjour le Fil,
Pour éviter les horreurs (Boucle et On Error) :
Pour éviter les horreurs (Boucle et On Error) :
Function FeuilleExiste(ByVal strNomFeuille As String) As Boolean FeuilleExiste = Not IsError(Evaluate("='" & strNomFeuille & "'!A1")) End Function
Et quelle est la probabilité que ça arrive avec cette cellule ?
Et celle-ci fonctionne avec une erreur en A1 d'une feuille existante :
Function FeuilleExiste(ByVal strNomFeuille As String) As Boolean FeuilleExiste = Not IsError(Evaluate("='" & strNomFeuille & "'!XFD1048576")) End Function
Et celle-ci fonctionne avec une erreur en A1 d'une feuille existante :
Function FeuilleExiste(ByVal strNomFeuille As String) As Boolean FeuilleExiste = Not IsError(Evaluate("=CELL(""col"",'" & strNomFeuille & "'!A1)")) End Function
Bonjour yg_be
Avec une connexion ADODB :
Avec une connexion ADODB :
'Nécéssite d'activer la référence Microsoft ADO ext x.x for DLL and Security 'Nécéssite d'activer la référence Microsoft ActiveX Data Objects x.x Library Option Explicit Sub testFeuilleFermee() Dim sFichier As String Dim sFeuille As String sFichier = ThisWorkbook.Path & "\Classeur_à_lire.xls" 'à adapter sFeuille = "Feuille 4" MsgBox FeuilleFermeeExiste(sFichier, sFeuille) End Sub Function FeuilleFermeeExiste(sNomCompletClasseur$, sNomFeuille$) As Boolean Dim oCnx As ADODB.Connection Dim oCat As ADOX.Catalog Dim oTbl As ADOX.Table Set oCnx = New ADODB.Connection Set oCat = New ADOX.Catalog oCnx.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sNomCompletClasseur & ";Extended Properties=Excel 8.0;" Set oCat.ActiveConnection = oCnx For Each oTbl In oCat.Tables If Replace(oTbl.Name, "'", "") = sNomFeuille & "$" Then FeuilleFermeeExiste = True Next Set oCat = Nothing Set oTbl = Nothing oCnx.Close Set oCnx = Nothing End Function
Autre point,
ma macro me permet de générer une nouvelle feuille qui sera complétée.
comment pourrais-je faire pour éviter que l'on vienne modifier les données des autres feuilles précédemment complétées?
Mais tout en me laissant consulter les autres onglets afin de pouvoir en visualiser le contenu.
ma macro me permet de générer une nouvelle feuille qui sera complétée.
comment pourrais-je faire pour éviter que l'on vienne modifier les données des autres feuilles précédemment complétées?
Mais tout en me laissant consulter les autres onglets afin de pouvoir en visualiser le contenu.
possible de rajouter une MsgBox si la feuille existe déjà pour prévenir?
Dans le if avant le exit sub