enlever protection pour macro et remettre la protection après

saverloo

XLDnaute Occasionnel
re bonjour,

voila j'ai protéger plus ou moins 60 feuilles. j'ai des macros dans +- 35 pages qui ont toutes le meme code de protection exemple 1234.
afin de pouvoir executer toutes les macros de toutes les feuilles, est il possible d'avoir une macro unique pour que lorsqu'une macro est lancee dans le fichier il enleve la protection ensuite realise la macro et après remet la protection des feuilles ?



merci
 

jeanpierre

Nous a quitté
Repose en paix
Re : enlever protection pour macro et remettre la protection après

Bonsoir saverloo,

Une sub déprotection

Sub deprotection()
ActiveSheet.Unprotect ("1234")
End Sub

Une protection,

Sub protection()
ActiveSheet.Protect ("1234")
End Sub


Et en début de tes macros tu mets deprotection ou Call deprotection et tu termines pareil avec protection.

Bonne soirée.

Jean-Pierre
 

saverloo

XLDnaute Occasionnel
Re : enlever protection pour macro et remettre la protection après

Jean-pierre bonsoir

merci pour ton information,
si je comprend bien en debut de chaque page je dois mettre deprotection et en fin protection ?

au niveau de la macro :

Une sub déprotection

Sub deprotection()
ActiveSheet.Unprotect ("1234")
End Sub

Une protection,

Sub protection()
ActiveSheet.Protect ("1234")
End Sub

Je dois la mettre ou en fait et je suppose que le sub protection() ne doit pas etre mis comme j'integre ceci dans une autre macro je suppose ?

merci pour ton aide
 

jeanpierre

Nous a quitté
Repose en paix
Re : enlever protection pour macro et remettre la protection après

Re,

Les deux codes sont indépendants.

Ils sont simplement appelés à tour de rôle en début et en fin de macro principale.

Chacune de celles que tu as dans tes feuilles, si j'ai bien compris.

Jean-Pierre
 

saverloo

XLDnaute Occasionnel
Re : enlever protection pour macro et remettre la protection après

Jean-Pierre,

je n'ai pas vraiment un macro principale enfin pour etre plus clair,

j'ai une feuille ou j'importe des données et j'ai creer une macro sur celle la pour faire importantion. ensuite certaines autres feuilles qui sont aussi protégée prennent des infos sur la feuille un et ainsi de suite si tu veux. malheureusement je ne sais envoyer un exemple car le fichier est deja a 8 Mo. et donc cela ne passe pas
donc ne faut t il pas alors mettre le ActiveSheet.Unprotect ("1234") en debut de chaque macro importation et en fin mettre ActiveSheet.Protect ("1234")

j'avoue que je nage un peux dans ceci

alain
 

jeanpierre

Nous a quitté
Repose en paix
Re : enlever protection pour macro et remettre la protection après

Re,

En fait, il serait plus judicieux et plus rapide de mettre, directement, en début de chaque macro :

ActiveSheet.Unprotect ("1234")

et à la fin :

ActiveSheet.Protect ("1234")

sans passer par un sous programme.

Jean-Pierre
 

saverloo

XLDnaute Occasionnel
Re : enlever protection pour macro et remettre la protection après

pour exemple c'est comme ceci alors ?

attention ici il y a plusieurs importation exportation il faut peux etre le faire par macro et donc le faire a chaque opération dans celle ci ?

Sub Macro1()
'
' Macro1 Macro
' lier importation donnees et suppressions ligne xml prestatation et absence en un bouton
'
'
ActiveSheet.Unprotect ("1234")
'
deprotection
Sheets("donnee recu tri et detail").Select
Sheets("donnee recu tri et detail").Name = "donnee recu tri et detail"
Columns("C:C").Select
Selection.Copy
Sheets("donnee presta de base a export").Select
Columns("A:A").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Sheets("donnee recu tri et detail").Select
Columns("I:J").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("donnee presta de base a export").Select
Columns("B:B").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Columns("A:A").Select
Application.CutCopyMode = False
Selection.AutoFilter
ActiveSheet.Range("$A:$A").AutoFilter Field:=1, Criteria1:="<>"
Protection

'

'
Sheets("exporthdp").Select
Range("A2:M2000").Select
Selection.FillDown
Sheets("exporthdpabs").Select
ActiveWindow.LargeScroll Down:=-1
Range("A2:M2000").Select
Selection.FillDown
ActiveWindow.LargeScroll Down:=-63
ActiveWindow.ScrollRow = 38
ActiveWindow.ScrollRow = 34
ActiveWindow.ScrollRow = 31
ActiveWindow.ScrollRow = 28
ActiveWindow.ScrollRow = 24
ActiveWindow.ScrollRow = 21
ActiveWindow.ScrollRow = 11
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 1
Sheets("exporthdp").Select
ActiveWindow.LargeScroll Down:=-64
Sheets("donnee presta de base a export").Select

Sheets("exporthdpabs").Select
idxLigne = Application.Match(9 ^ 9, Range("A:A"), 1)
'Chercher la dernière ligne avec une valeur numérique de la colonne A
idxLigne = Application.Match(9 ^ 9, Range("A:A"), 1)
'Si trouvée
If Not IsError(idxLigne) Then
'Supprimer les lignes de idxLigne+1 à la fin de la feuille
Range(Cells(idxLigne + 1, 1), Cells(Rows.Count, 1)).EntireRow.Delete
End If
Sheets("exporthdp").Select
idxLigne = Application.Match(9 ^ 9, Range("A:A"), 1)
'Chercher la dernière ligne avec une valeur numérique de la colonne A
idxLigne = Application.Match(9 ^ 9, Range("A:A"), 1)
'Si trouvée
If Not IsError(idxLigne) Then
'Supprimer les lignes de idxLigne+1 à la fin de la feuille
Range(Cells(idxLigne + 1, 1), Cells(Rows.Count, 1)).EntireRow.Delete
Sheets("donnee presta de base a export").Select
End If

Sheets("Totalexport").Select
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Sheets("exporthdp").Select
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("totalexport").Select
Rows("2:2").Select
ActiveSheet.Paste
Sheets("exporthdpabs").Select
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Totalexport").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown
Range("A2").Select

Sheets("totalexport").Select
'Dim idxLigne As Variant = en format info car si en fonction cela laisse une porte en cours?
'Chercher la dernière ligne avec une valeur numérique de la colonne A
idxLigne = Application.Match(9 ^ 9, Range("A:A"), 1)
'Si trouvée
If Not IsError(idxLigne) Then
'Supprimer les lignes de idxLigne+1 à la fin de la feuille a recomtroler si ok hdpexport et hdpabs
Range(Cells(idxLigne + 1, 1), Cells(Rows.Count, 1)).EntireRow.Delete
Sheets("donnee presta de base a export").Select
End If

ActiveSheet.Protect ("1234")
' enregistrementavantxml Macro
'

'
ActiveWorkbook.Save

End Sub
 

jeanpierre

Nous a quitté
Repose en paix
Re : enlever protection pour macro et remettre la protection après

Re,

Je lis :

ActiveSheet.Unprotect ("1234")
'
deprotection

En rouge, à supprimer ainsi que le sous programme correspondant, la première instruction suffit.

Ensuite : Protection, à supprimer également si tu mets : ActiveSheet.Protect ("1234") à la place et tu supprimes aussi le sous programme donné beaucoup plus haut dans le fil.

Tu fais ainsi, chaque fois que nécessaire c'est-à-dire chaque fois que tu appeles une macro différente.

Une fois que chacune des macros aura ces lignes en début et en fin, il n'y a plus rien à faire.

Jean-Pierre


 

saverloo

XLDnaute Occasionnel
Re : enlever protection pour macro et remettre la protection après

jean pierre,

je me doutais bien que cela n'allait pas aller facilement avec le nombre de macro bonjour lolllllll

pour protection et deprotection oui j'avais vu j'ai envoyé trop vite.

bon je vais m armer de patience et faire comme tu le suggeres un grand grand merci as toi

Alain
 

Mytå

XLDnaute Occasionnel
Re : enlever protection pour macro et remettre la protection après

Salut le forum

A tester sur ton fichier
Code:
Private Sub Workbook_Open() 
Dim Feuille As Worksheet 
For Each Feuille In Sheets 
Feuille.Protect Password:="1234", UserInterFaceOnly:=True 
Next Feuille 
End Sub
Cela permet aux macros de travailler sans enlever la protection.

Mytå
 

jeanpierre

Nous a quitté
Repose en paix
Re : enlever protection pour macro et remettre la protection après

Re,

De toutes façons il faut une instruction, qu'elle soit directe comme précédemment ou par sous programme interposé....

Il existe bien une autre alternative mais comme je ne l'ai jamais utilisé, je serai bien infichu de t'aider.
 

saverloo

XLDnaute Occasionnel
Re : enlever protection pour macro et remettre la protection après

re bonsoir Myta

et je dois mettre ceci au dessus de ma macro comme il y a plus haut si je comprend bien ?

sans devoir le refaire par opération je vais dire

en faite je dois mettre ceci sur le dessus de chaque macro
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 188
dernier inscrit
evebar