Comment peut-on utiliser l'option "Grouper/Dissocier et créer un plan"
dans
une feuille protégée ?
Existe-t-il une macro "miracle" pour solutionner le problème ?
Merci pour votre expertise
Salutations
Comment peut-on utiliser l'option "Grouper/Dissocier et créer un plan"
dans
une feuille protégée ?
Existe-t-il une macro "miracle" pour solutionner le problème ?
Merci pour votre expertise
Salutations
Comment peut-on utiliser l'option "Grouper/Dissocier et créer un plan"
dans
une feuille protégée ?
Existe-t-il une macro "miracle" pour solutionner le problème ?
Merci pour votre expertise
Salutations
Comment peut-on utiliser l'option "Grouper/Dissocier et créer un plan"
dans
une feuille protégée ?
Existe-t-il une macro "miracle" pour solutionner le problème ?
Merci pour votre expertise
Salutations
Comment peut-on utiliser l'option "Grouper/Dissocier et créer un plan"
dans
une feuille protégée ?
Existe-t-il une macro "miracle" pour solutionner le problème ?
Merci pour votre expertise
Salutations
Comment peut-on utiliser l'option "Grouper/Dissocier et créer un plan"
dans
une feuille protégée ?
Existe-t-il une macro "miracle" pour solutionner le problème ?
Merci pour votre expertise
Salutations
Bonjour,
Dans le ThisWorkbook de ton classeur, tu ajoutes ceci en adaptant le nom de la feuille :
Pour que cela fonctionne bien, ton "plan" doit être déjà présent sur la feuille "Feul1" avant que cette procédure s'exécute à
l'ouverture du fichier.
'---------------------------------
Private Sub Workbook_Open()
With Worksheets("Feuil1")
.EnableOutlining = True
.Protect , True, True, True, True
End With
End Sub
'---------------------------------
Salutations!
"Option "Grouper et créer un plan"" <Option "Grouper et créer un plan"@discussions.microsoft.com> a écrit dans le message de news:
Comment peut-on utiliser l'option "Grouper/Dissocier et créer un plan" dans
une feuille protégée ?
Existe-t-il une macro "miracle" pour solutionner le problème ?
Merci pour votre expertise
Salutations
Bonjour,
Dans le ThisWorkbook de ton classeur, tu ajoutes ceci en adaptant le nom de la feuille :
Pour que cela fonctionne bien, ton "plan" doit être déjà présent sur la feuille "Feul1" avant que cette procédure s'exécute à
l'ouverture du fichier.
'---------------------------------
Private Sub Workbook_Open()
With Worksheets("Feuil1")
.EnableOutlining = True
.Protect , True, True, True, True
End With
End Sub
'---------------------------------
Salutations!
"Option "Grouper et créer un plan"" <Option "Grouper et créer un plan"@discussions.microsoft.com> a écrit dans le message de news:
5B84E6D2-3F65-4319-90A0-55A317786589@microsoft.com...
Comment peut-on utiliser l'option "Grouper/Dissocier et créer un plan" dans
une feuille protégée ?
Existe-t-il une macro "miracle" pour solutionner le problème ?
Merci pour votre expertise
Salutations
Bonjour,
Dans le ThisWorkbook de ton classeur, tu ajoutes ceci en adaptant le nom de la feuille :
Pour que cela fonctionne bien, ton "plan" doit être déjà présent sur la feuille "Feul1" avant que cette procédure s'exécute à
l'ouverture du fichier.
'---------------------------------
Private Sub Workbook_Open()
With Worksheets("Feuil1")
.EnableOutlining = True
.Protect , True, True, True, True
End With
End Sub
'---------------------------------
Salutations!
"Option "Grouper et créer un plan"" <Option "Grouper et créer un plan"@discussions.microsoft.com> a écrit dans le message de news:
Comment peut-on utiliser l'option "Grouper/Dissocier et créer un plan" dans
une feuille protégée ?
Existe-t-il une macro "miracle" pour solutionner le problème ?
Merci pour votre expertise
Salutations
Bonjour,
Merci à ChrisV et MichDenis pour la solution.
Mais un problème n'arrive jamais seul :
Le fichier Master (dans lequel j'ai intégré la routine dans "ThisWorkbook"),
génére un fichier xls contenant une feuille du Master (par copy).
Comment peut-on copier le "ThisWorkbook" du Master dans le nouveau fichier
afin d'avoir la même faculté d'utilisation de la fonction "Grouper /
Dissocier".
Merci encore pour votre expertise, je ne suis qu'un débutant acharné, mais
des fois je craque....
Ci-après les extracts des routines :
Extract Macro dans "ThisWorkbook"
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="xxx", Contents:=True, _
UserInterfaceOnly:=True
Worksheets(i).EnableOutlining = True
Worksheets(i).EnableAutoFilter = True
Next i
Extract de la Routine de création fichier
Public Sub CreateTbaBookFile(SheetName As String, Optional ReturnErrors As
Boolean = False)
'---------------------------------------------------
' Création du carnet (fichier physique)
' par recopie de la feuille correspondante du MASTER
'---------------------------------------------------
Dim oWs2Copy As Excel.Worksheet
Dim oWsBook As Excel.Worksheet
Dim oWbTarget As Excel.Workbook
Dim oWs2Delete As Excel.Worksheet
Dim oBook As cBook
Dim lngErrNum As Long
Dim oShpBtn As Shape
Dim intBtn As Integer
On Error GoTo AbortProcess
'- 1 trouver la feuille à copier
Set oWs2Copy = ThisWorkbook.Worksheets(SheetName)
'-- Visuel
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.StatusBar = "Création du carnet " & SheetName & " -
Initialisation de la feuille"
'- 2 extraire la feuille dans un nouveau classeur
Set oWbTarget = Workbooks.Add
'- 2.2 trouver les paramètres du carnet dans colBooks
Set oBook = colBooks(SheetName)
'- 2.3 copie de la feuille
oWs2Copy.Copy Before:=oWbTarget.Sheets(1)
Set oWsBook = oWbTarget.Sheets(SheetName)
oWsBook.Visible = True
'- 2.4 suppression des feuilles inutiles
For Each oWs2Delete In oWbTarget.Worksheets
If oWs2Delete.Name <> SheetName Then oWs2Delete.Delete
Next
'- 2.5 suppression des boutons inutiles sur le carnet exporté
For intBtn = oWsBook.Shapes.Count To 1 Step -1
Set oShpBtn = oWsBook.Shapes(intBtn)
If oShpBtn.Type = msoFormControl Then
If oShpBtn.FormControlType = xlButtonControl Then
oShpBtn.Delete
End If
End If
Next
'-- Visuel
Application.StatusBar = "Création du carnet " & SheetName & " -
Enregistrement du fichier " & oBook.FileTitle
'- 2.6 Enregistrement du classeur sous le nom qui va bien
'- 2.6.1 Test du répertoire
If Not IsGoodFolder(oBook.FilePath) Then
MkDir oBook.FilePath
End If
'- 2.6.2 enregistrement du carnet
oWbTarget.SaveAs oBook.FileName
oWbTarget.Close
EndProcess:
'-- Visuel
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.StatusBar = ""
Exit Sub
AbortProcess:
lngErrNum = Err.Number
If ReturnErrors Then
'-- Renvoyer l'erreur à l'appelant
Err.Raise lngErrNum
Else
'-- Afficher directement l'erreur
MsgBox SheetName & " : " & msgGenericAbortError & Err.Description &
" (" & Err.Number & ")", vbCritical, msgCreateTbaEnv_Title
End If
Resume EndProcess
End Sub
Cordialement,Bonjour,
Dans le ThisWorkbook de ton classeur, tu ajoutes ceci en adaptant le nom de la feuille :
Pour que cela fonctionne bien, ton "plan" doit être déjà présent sur la feuille "Feul1" avant que cette procédure s'exécute à
l'ouverture du fichier.
'---------------------------------
Private Sub Workbook_Open()
With Worksheets("Feuil1")
.EnableOutlining = True
.Protect , True, True, True, True
End With
End Sub
'---------------------------------
Salutations!
"Option "Grouper et créer un plan"" <Option "Grouper et créer un plan"@discussions.microsoft.com> a écrit dans le message de news:
Comment peut-on utiliser l'option "Grouper/Dissocier et créer un plan" dans
une feuille protégée ?
Existe-t-il une macro "miracle" pour solutionner le problème ?
Merci pour votre expertise
Salutations
Bonjour,
Merci à ChrisV et MichDenis pour la solution.
Mais un problème n'arrive jamais seul :
Le fichier Master (dans lequel j'ai intégré la routine dans "ThisWorkbook"),
génére un fichier xls contenant une feuille du Master (par copy).
Comment peut-on copier le "ThisWorkbook" du Master dans le nouveau fichier
afin d'avoir la même faculté d'utilisation de la fonction "Grouper /
Dissocier".
Merci encore pour votre expertise, je ne suis qu'un débutant acharné, mais
des fois je craque....
Ci-après les extracts des routines :
Extract Macro dans "ThisWorkbook"
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="xxx", Contents:=True, _
UserInterfaceOnly:=True
Worksheets(i).EnableOutlining = True
Worksheets(i).EnableAutoFilter = True
Next i
Extract de la Routine de création fichier
Public Sub CreateTbaBookFile(SheetName As String, Optional ReturnErrors As
Boolean = False)
'---------------------------------------------------
' Création du carnet (fichier physique)
' par recopie de la feuille correspondante du MASTER
'---------------------------------------------------
Dim oWs2Copy As Excel.Worksheet
Dim oWsBook As Excel.Worksheet
Dim oWbTarget As Excel.Workbook
Dim oWs2Delete As Excel.Worksheet
Dim oBook As cBook
Dim lngErrNum As Long
Dim oShpBtn As Shape
Dim intBtn As Integer
On Error GoTo AbortProcess
'- 1 trouver la feuille à copier
Set oWs2Copy = ThisWorkbook.Worksheets(SheetName)
'-- Visuel
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.StatusBar = "Création du carnet " & SheetName & " -
Initialisation de la feuille"
'- 2 extraire la feuille dans un nouveau classeur
Set oWbTarget = Workbooks.Add
'- 2.2 trouver les paramètres du carnet dans colBooks
Set oBook = colBooks(SheetName)
'- 2.3 copie de la feuille
oWs2Copy.Copy Before:=oWbTarget.Sheets(1)
Set oWsBook = oWbTarget.Sheets(SheetName)
oWsBook.Visible = True
'- 2.4 suppression des feuilles inutiles
For Each oWs2Delete In oWbTarget.Worksheets
If oWs2Delete.Name <> SheetName Then oWs2Delete.Delete
Next
'- 2.5 suppression des boutons inutiles sur le carnet exporté
For intBtn = oWsBook.Shapes.Count To 1 Step -1
Set oShpBtn = oWsBook.Shapes(intBtn)
If oShpBtn.Type = msoFormControl Then
If oShpBtn.FormControlType = xlButtonControl Then
oShpBtn.Delete
End If
End If
Next
'-- Visuel
Application.StatusBar = "Création du carnet " & SheetName & " -
Enregistrement du fichier " & oBook.FileTitle
'- 2.6 Enregistrement du classeur sous le nom qui va bien
'- 2.6.1 Test du répertoire
If Not IsGoodFolder(oBook.FilePath) Then
MkDir oBook.FilePath
End If
'- 2.6.2 enregistrement du carnet
oWbTarget.SaveAs oBook.FileName
oWbTarget.Close
EndProcess:
'-- Visuel
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.StatusBar = ""
Exit Sub
AbortProcess:
lngErrNum = Err.Number
If ReturnErrors Then
'-- Renvoyer l'erreur à l'appelant
Err.Raise lngErrNum
Else
'-- Afficher directement l'erreur
MsgBox SheetName & " : " & msgGenericAbortError & Err.Description &
" (" & Err.Number & ")", vbCritical, msgCreateTbaEnv_Title
End If
Resume EndProcess
End Sub
Cordialement,
Bonjour,
Dans le ThisWorkbook de ton classeur, tu ajoutes ceci en adaptant le nom de la feuille :
Pour que cela fonctionne bien, ton "plan" doit être déjà présent sur la feuille "Feul1" avant que cette procédure s'exécute à
l'ouverture du fichier.
'---------------------------------
Private Sub Workbook_Open()
With Worksheets("Feuil1")
.EnableOutlining = True
.Protect , True, True, True, True
End With
End Sub
'---------------------------------
Salutations!
"Option "Grouper et créer un plan"" <Option "Grouper et créer un plan"@discussions.microsoft.com> a écrit dans le message de news:
5B84E6D2-3F65-4319-90A0-55A317786589@microsoft.com...
Comment peut-on utiliser l'option "Grouper/Dissocier et créer un plan" dans
une feuille protégée ?
Existe-t-il une macro "miracle" pour solutionner le problème ?
Merci pour votre expertise
Salutations
Bonjour,
Merci à ChrisV et MichDenis pour la solution.
Mais un problème n'arrive jamais seul :
Le fichier Master (dans lequel j'ai intégré la routine dans "ThisWorkbook"),
génére un fichier xls contenant une feuille du Master (par copy).
Comment peut-on copier le "ThisWorkbook" du Master dans le nouveau fichier
afin d'avoir la même faculté d'utilisation de la fonction "Grouper /
Dissocier".
Merci encore pour votre expertise, je ne suis qu'un débutant acharné, mais
des fois je craque....
Ci-après les extracts des routines :
Extract Macro dans "ThisWorkbook"
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="xxx", Contents:=True, _
UserInterfaceOnly:=True
Worksheets(i).EnableOutlining = True
Worksheets(i).EnableAutoFilter = True
Next i
Extract de la Routine de création fichier
Public Sub CreateTbaBookFile(SheetName As String, Optional ReturnErrors As
Boolean = False)
'---------------------------------------------------
' Création du carnet (fichier physique)
' par recopie de la feuille correspondante du MASTER
'---------------------------------------------------
Dim oWs2Copy As Excel.Worksheet
Dim oWsBook As Excel.Worksheet
Dim oWbTarget As Excel.Workbook
Dim oWs2Delete As Excel.Worksheet
Dim oBook As cBook
Dim lngErrNum As Long
Dim oShpBtn As Shape
Dim intBtn As Integer
On Error GoTo AbortProcess
'- 1 trouver la feuille à copier
Set oWs2Copy = ThisWorkbook.Worksheets(SheetName)
'-- Visuel
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.StatusBar = "Création du carnet " & SheetName & " -
Initialisation de la feuille"
'- 2 extraire la feuille dans un nouveau classeur
Set oWbTarget = Workbooks.Add
'- 2.2 trouver les paramètres du carnet dans colBooks
Set oBook = colBooks(SheetName)
'- 2.3 copie de la feuille
oWs2Copy.Copy Before:=oWbTarget.Sheets(1)
Set oWsBook = oWbTarget.Sheets(SheetName)
oWsBook.Visible = True
'- 2.4 suppression des feuilles inutiles
For Each oWs2Delete In oWbTarget.Worksheets
If oWs2Delete.Name <> SheetName Then oWs2Delete.Delete
Next
'- 2.5 suppression des boutons inutiles sur le carnet exporté
For intBtn = oWsBook.Shapes.Count To 1 Step -1
Set oShpBtn = oWsBook.Shapes(intBtn)
If oShpBtn.Type = msoFormControl Then
If oShpBtn.FormControlType = xlButtonControl Then
oShpBtn.Delete
End If
End If
Next
'-- Visuel
Application.StatusBar = "Création du carnet " & SheetName & " -
Enregistrement du fichier " & oBook.FileTitle
'- 2.6 Enregistrement du classeur sous le nom qui va bien
'- 2.6.1 Test du répertoire
If Not IsGoodFolder(oBook.FilePath) Then
MkDir oBook.FilePath
End If
'- 2.6.2 enregistrement du carnet
oWbTarget.SaveAs oBook.FileName
oWbTarget.Close
EndProcess:
'-- Visuel
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.StatusBar = ""
Exit Sub
AbortProcess:
lngErrNum = Err.Number
If ReturnErrors Then
'-- Renvoyer l'erreur à l'appelant
Err.Raise lngErrNum
Else
'-- Afficher directement l'erreur
MsgBox SheetName & " : " & msgGenericAbortError & Err.Description &
" (" & Err.Number & ")", vbCritical, msgCreateTbaEnv_Title
End If
Resume EndProcess
End Sub
Cordialement,Bonjour,
Dans le ThisWorkbook de ton classeur, tu ajoutes ceci en adaptant le nom de la feuille :
Pour que cela fonctionne bien, ton "plan" doit être déjà présent sur la feuille "Feul1" avant que cette procédure s'exécute à
l'ouverture du fichier.
'---------------------------------
Private Sub Workbook_Open()
With Worksheets("Feuil1")
.EnableOutlining = True
.Protect , True, True, True, True
End With
End Sub
'---------------------------------
Salutations!
"Option "Grouper et créer un plan"" <Option "Grouper et créer un plan"@discussions.microsoft.com> a écrit dans le message de news:
Comment peut-on utiliser l'option "Grouper/Dissocier et créer un plan" dans
une feuille protégée ?
Existe-t-il une macro "miracle" pour solutionner le problème ?
Merci pour votre expertise
Salutations
Bonjour,
Merci à ChrisV et MichDenis pour la solution.
Mais un problème n'arrive jamais seul :
Le fichier Master (dans lequel j'ai intégré la routine dans "ThisWorkbook"),
génére un fichier xls contenant une feuille du Master (par copy).
Comment peut-on copier le "ThisWorkbook" du Master dans le nouveau fichier
afin d'avoir la même faculté d'utilisation de la fonction "Grouper /
Dissocier".
Merci encore pour votre expertise, je ne suis qu'un débutant acharné, mais
des fois je craque....
Ci-après les extracts des routines :
Extract Macro dans "ThisWorkbook"
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="xxx", Contents:=True, _
UserInterfaceOnly:=True
Worksheets(i).EnableOutlining = True
Worksheets(i).EnableAutoFilter = True
Next i
Extract de la Routine de création fichier
Public Sub CreateTbaBookFile(SheetName As String, Optional ReturnErrors As
Boolean = False)
'---------------------------------------------------
' Création du carnet (fichier physique)
' par recopie de la feuille correspondante du MASTER
'---------------------------------------------------
Dim oWs2Copy As Excel.Worksheet
Dim oWsBook As Excel.Worksheet
Dim oWbTarget As Excel.Workbook
Dim oWs2Delete As Excel.Worksheet
Dim oBook As cBook
Dim lngErrNum As Long
Dim oShpBtn As Shape
Dim intBtn As Integer
On Error GoTo AbortProcess
'- 1 trouver la feuille à copier
Set oWs2Copy = ThisWorkbook.Worksheets(SheetName)
'-- Visuel
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.StatusBar = "Création du carnet " & SheetName & " -
Initialisation de la feuille"
'- 2 extraire la feuille dans un nouveau classeur
Set oWbTarget = Workbooks.Add
'- 2.2 trouver les paramètres du carnet dans colBooks
Set oBook = colBooks(SheetName)
'- 2.3 copie de la feuille
oWs2Copy.Copy Before:=oWbTarget.Sheets(1)
Set oWsBook = oWbTarget.Sheets(SheetName)
oWsBook.Visible = True
'- 2.4 suppression des feuilles inutiles
For Each oWs2Delete In oWbTarget.Worksheets
If oWs2Delete.Name <> SheetName Then oWs2Delete.Delete
Next
'- 2.5 suppression des boutons inutiles sur le carnet exporté
For intBtn = oWsBook.Shapes.Count To 1 Step -1
Set oShpBtn = oWsBook.Shapes(intBtn)
If oShpBtn.Type = msoFormControl Then
If oShpBtn.FormControlType = xlButtonControl Then
oShpBtn.Delete
End If
End If
Next
'-- Visuel
Application.StatusBar = "Création du carnet " & SheetName & " -
Enregistrement du fichier " & oBook.FileTitle
'- 2.6 Enregistrement du classeur sous le nom qui va bien
'- 2.6.1 Test du répertoire
If Not IsGoodFolder(oBook.FilePath) Then
MkDir oBook.FilePath
End If
'- 2.6.2 enregistrement du carnet
oWbTarget.SaveAs oBook.FileName
oWbTarget.Close
EndProcess:
'-- Visuel
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.StatusBar = ""
Exit Sub
AbortProcess:
lngErrNum = Err.Number
If ReturnErrors Then
'-- Renvoyer l'erreur à l'appelant
Err.Raise lngErrNum
Else
'-- Afficher directement l'erreur
MsgBox SheetName & " : " & msgGenericAbortError & Err.Description &
" (" & Err.Number & ")", vbCritical, msgCreateTbaEnv_Title
End If
Resume EndProcess
End Sub
Cordialement,Bonjour,
Dans le ThisWorkbook de ton classeur, tu ajoutes ceci en adaptant le nom de la feuille :
Pour que cela fonctionne bien, ton "plan" doit être déjà présent sur la feuille "Feul1" avant que cette procédure s'exécute à
l'ouverture du fichier.
'---------------------------------
Private Sub Workbook_Open()
With Worksheets("Feuil1")
.EnableOutlining = True
.Protect , True, True, True, True
End With
End Sub
'---------------------------------
Salutations!
"Option "Grouper et créer un plan"" <Option "Grouper et créer un plan"@discussions.microsoft.com> a écrit dans le message de
news:
Comment peut-on utiliser l'option "Grouper/Dissocier et créer un plan" dans
une feuille protégée ?
Existe-t-il une macro "miracle" pour solutionner le problème ?
Merci pour votre expertise
Salutations
Bonjour,
Merci à ChrisV et MichDenis pour la solution.
Mais un problème n'arrive jamais seul :
Le fichier Master (dans lequel j'ai intégré la routine dans "ThisWorkbook"),
génére un fichier xls contenant une feuille du Master (par copy).
Comment peut-on copier le "ThisWorkbook" du Master dans le nouveau fichier
afin d'avoir la même faculté d'utilisation de la fonction "Grouper /
Dissocier".
Merci encore pour votre expertise, je ne suis qu'un débutant acharné, mais
des fois je craque....
Ci-après les extracts des routines :
Extract Macro dans "ThisWorkbook"
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="xxx", Contents:=True, _
UserInterfaceOnly:=True
Worksheets(i).EnableOutlining = True
Worksheets(i).EnableAutoFilter = True
Next i
Extract de la Routine de création fichier
Public Sub CreateTbaBookFile(SheetName As String, Optional ReturnErrors As
Boolean = False)
'---------------------------------------------------
' Création du carnet (fichier physique)
' par recopie de la feuille correspondante du MASTER
'---------------------------------------------------
Dim oWs2Copy As Excel.Worksheet
Dim oWsBook As Excel.Worksheet
Dim oWbTarget As Excel.Workbook
Dim oWs2Delete As Excel.Worksheet
Dim oBook As cBook
Dim lngErrNum As Long
Dim oShpBtn As Shape
Dim intBtn As Integer
On Error GoTo AbortProcess
'- 1 trouver la feuille à copier
Set oWs2Copy = ThisWorkbook.Worksheets(SheetName)
'-- Visuel
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.StatusBar = "Création du carnet " & SheetName & " -
Initialisation de la feuille"
'- 2 extraire la feuille dans un nouveau classeur
Set oWbTarget = Workbooks.Add
'- 2.2 trouver les paramètres du carnet dans colBooks
Set oBook = colBooks(SheetName)
'- 2.3 copie de la feuille
oWs2Copy.Copy Before:=oWbTarget.Sheets(1)
Set oWsBook = oWbTarget.Sheets(SheetName)
oWsBook.Visible = True
'- 2.4 suppression des feuilles inutiles
For Each oWs2Delete In oWbTarget.Worksheets
If oWs2Delete.Name <> SheetName Then oWs2Delete.Delete
Next
'- 2.5 suppression des boutons inutiles sur le carnet exporté
For intBtn = oWsBook.Shapes.Count To 1 Step -1
Set oShpBtn = oWsBook.Shapes(intBtn)
If oShpBtn.Type = msoFormControl Then
If oShpBtn.FormControlType = xlButtonControl Then
oShpBtn.Delete
End If
End If
Next
'-- Visuel
Application.StatusBar = "Création du carnet " & SheetName & " -
Enregistrement du fichier " & oBook.FileTitle
'- 2.6 Enregistrement du classeur sous le nom qui va bien
'- 2.6.1 Test du répertoire
If Not IsGoodFolder(oBook.FilePath) Then
MkDir oBook.FilePath
End If
'- 2.6.2 enregistrement du carnet
oWbTarget.SaveAs oBook.FileName
oWbTarget.Close
EndProcess:
'-- Visuel
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.StatusBar = ""
Exit Sub
AbortProcess:
lngErrNum = Err.Number
If ReturnErrors Then
'-- Renvoyer l'erreur à l'appelant
Err.Raise lngErrNum
Else
'-- Afficher directement l'erreur
MsgBox SheetName & " : " & msgGenericAbortError & Err.Description &
" (" & Err.Number & ")", vbCritical, msgCreateTbaEnv_Title
End If
Resume EndProcess
End Sub
Cordialement,
Bonjour,
Dans le ThisWorkbook de ton classeur, tu ajoutes ceci en adaptant le nom de la feuille :
Pour que cela fonctionne bien, ton "plan" doit être déjà présent sur la feuille "Feul1" avant que cette procédure s'exécute à
l'ouverture du fichier.
'---------------------------------
Private Sub Workbook_Open()
With Worksheets("Feuil1")
.EnableOutlining = True
.Protect , True, True, True, True
End With
End Sub
'---------------------------------
Salutations!
"Option "Grouper et créer un plan"" <Option "Grouper et créer un plan"@discussions.microsoft.com> a écrit dans le message de
news:
5B84E6D2-3F65-4319-90A0-55A317786589@microsoft.com...
Comment peut-on utiliser l'option "Grouper/Dissocier et créer un plan" dans
une feuille protégée ?
Existe-t-il une macro "miracle" pour solutionner le problème ?
Merci pour votre expertise
Salutations
Bonjour,
Merci à ChrisV et MichDenis pour la solution.
Mais un problème n'arrive jamais seul :
Le fichier Master (dans lequel j'ai intégré la routine dans "ThisWorkbook"),
génére un fichier xls contenant une feuille du Master (par copy).
Comment peut-on copier le "ThisWorkbook" du Master dans le nouveau fichier
afin d'avoir la même faculté d'utilisation de la fonction "Grouper /
Dissocier".
Merci encore pour votre expertise, je ne suis qu'un débutant acharné, mais
des fois je craque....
Ci-après les extracts des routines :
Extract Macro dans "ThisWorkbook"
Dim nombre As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="xxx", Contents:=True, _
UserInterfaceOnly:=True
Worksheets(i).EnableOutlining = True
Worksheets(i).EnableAutoFilter = True
Next i
Extract de la Routine de création fichier
Public Sub CreateTbaBookFile(SheetName As String, Optional ReturnErrors As
Boolean = False)
'---------------------------------------------------
' Création du carnet (fichier physique)
' par recopie de la feuille correspondante du MASTER
'---------------------------------------------------
Dim oWs2Copy As Excel.Worksheet
Dim oWsBook As Excel.Worksheet
Dim oWbTarget As Excel.Workbook
Dim oWs2Delete As Excel.Worksheet
Dim oBook As cBook
Dim lngErrNum As Long
Dim oShpBtn As Shape
Dim intBtn As Integer
On Error GoTo AbortProcess
'- 1 trouver la feuille à copier
Set oWs2Copy = ThisWorkbook.Worksheets(SheetName)
'-- Visuel
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.StatusBar = "Création du carnet " & SheetName & " -
Initialisation de la feuille"
'- 2 extraire la feuille dans un nouveau classeur
Set oWbTarget = Workbooks.Add
'- 2.2 trouver les paramètres du carnet dans colBooks
Set oBook = colBooks(SheetName)
'- 2.3 copie de la feuille
oWs2Copy.Copy Before:=oWbTarget.Sheets(1)
Set oWsBook = oWbTarget.Sheets(SheetName)
oWsBook.Visible = True
'- 2.4 suppression des feuilles inutiles
For Each oWs2Delete In oWbTarget.Worksheets
If oWs2Delete.Name <> SheetName Then oWs2Delete.Delete
Next
'- 2.5 suppression des boutons inutiles sur le carnet exporté
For intBtn = oWsBook.Shapes.Count To 1 Step -1
Set oShpBtn = oWsBook.Shapes(intBtn)
If oShpBtn.Type = msoFormControl Then
If oShpBtn.FormControlType = xlButtonControl Then
oShpBtn.Delete
End If
End If
Next
'-- Visuel
Application.StatusBar = "Création du carnet " & SheetName & " -
Enregistrement du fichier " & oBook.FileTitle
'- 2.6 Enregistrement du classeur sous le nom qui va bien
'- 2.6.1 Test du répertoire
If Not IsGoodFolder(oBook.FilePath) Then
MkDir oBook.FilePath
End If
'- 2.6.2 enregistrement du carnet
oWbTarget.SaveAs oBook.FileName
oWbTarget.Close
EndProcess:
'-- Visuel
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.StatusBar = ""
Exit Sub
AbortProcess:
lngErrNum = Err.Number
If ReturnErrors Then
'-- Renvoyer l'erreur à l'appelant
Err.Raise lngErrNum
Else
'-- Afficher directement l'erreur
MsgBox SheetName & " : " & msgGenericAbortError & Err.Description &
" (" & Err.Number & ")", vbCritical, msgCreateTbaEnv_Title
End If
Resume EndProcess
End Sub
Cordialement,Bonjour,
Dans le ThisWorkbook de ton classeur, tu ajoutes ceci en adaptant le nom de la feuille :
Pour que cela fonctionne bien, ton "plan" doit être déjà présent sur la feuille "Feul1" avant que cette procédure s'exécute à
l'ouverture du fichier.
'---------------------------------
Private Sub Workbook_Open()
With Worksheets("Feuil1")
.EnableOutlining = True
.Protect , True, True, True, True
End With
End Sub
'---------------------------------
Salutations!
"Option "Grouper et créer un plan"" <Option "Grouper et créer un plan"@discussions.microsoft.com> a écrit dans le message de
news:
Comment peut-on utiliser l'option "Grouper/Dissocier et créer un plan" dans
une feuille protégée ?
Existe-t-il une macro "miracle" pour solutionner le problème ?
Merci pour votre expertise
Salutations