Vérification de nom d'onglet
Résolu
Maksime568
Messages postés
145
Statut
Membre
-
Patrice33740 Messages postés 8930 Statut Membre -
Patrice33740 Messages postés 8930 Statut Membre -
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
- Rouvrir onglet fermé chrome - Guide
- Onglet disposition excel - Forum Excel
- Sms tiktok verification code ✓ - Forum Mail
- Nom de compte steam exemple - Forum Jeux vidéo
- 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
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
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