Deprotéger plusieurs feuilles
Résolu/Fermé
Emilie
-
Modifié par Emilie le 14/02/2017 à 10:09
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 14 févr. 2017 à 17:17
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 14 févr. 2017 à 17:17
A voir également:
- Deprotéger plusieurs feuilles
- Fusionner plusieurs feuilles excel en une seule - Guide
- Comment faire un livret avec des feuilles a4 - Guide
- Excel ne parvient pas à insérer les feuilles dans le classeur de destination ✓ - Forum Excel
- Afficher 2 feuilles excel sur 2 écrans ✓ - Forum Excel
- Tableau croisé dynamique plusieurs feuilles sheets - Forum Bureautique
5 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
14 févr. 2017 à 10:11
14 févr. 2017 à 10:11
Bonjour Émilie,
Essaie comme ça :
Petite remarque sur la déclaration des variables. Tu peux déclarer plusieurs variables dans la même ligne mais il faut spécifier le type de chacune d'entre elles sinon elle prendra le type Variant par défaut (le plus gourmand en mémoire...)
Essaie comme ça :
Sub Copie_TBX() Dim Feuille As Worksheet Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer, f As Integer Dim g As Integer, h As Integer, i As Integer, j As Integer, k As Integer, l As Integer Workbooks.Open Filename:="MON FICHIER.xlsx", UpdateLinks:=0 ActiveWorkbook.SaveAs Filename:="MON FICHIER MENSUEL.xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False For Each Feuille In ActiveWorkbook.Worksheets On Error Resume Next For a = 65 To 66 For b = 65 To 66 For c = 65 To 66 For d = 65 To 66 For e = 65 To 66 For f = 65 To 66 For g = 65 To 66 For h = 65 To 66 For i = 65 To 66 For j = 65 To 66 For k = 65 To 66 For l = 32 To 126 ActiveSheet.Unprotect Chr(a) & Chr(b) & Chr(c) & Chr(d) & Chr(e) & Chr(f) & Chr(g) & Chr(h) & Chr(i) & Chr(j) & Chr(k) & Chr(l) If ActiveSheet.ProtectContents = False Then GoTo suite End If Next l Next k Next j Next i Next h Next g Next f Next e Next d Next c Next b Next a suite: Feuille.Select Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Range("A1").Select Next Feuille feuilleRef.Activate ActiveWorkbook.Save ActiveWindow.Close End Sub
Petite remarque sur la déclaration des variables. Tu peux déclarer plusieurs variables dans la même ligne mais il faut spécifier le type de chacune d'entre elles sinon elle prendra le type Variant par défaut (le plus gourmand en mémoire...)
Bonjour,
Merci pour le code. Toutefois ça ne fonctionne pas. Le fichier se créé mais il ne répond plus.
J'ai supprimer le copier coller dans la macro, ça créé la copie mais ne deprotège que la feuille active.
Merci pour le code. Toutefois ça ne fonctionne pas. Le fichier se créé mais il ne répond plus.
J'ai supprimer le copier coller dans la macro, ça créé la copie mais ne deprotège que la feuille active.
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
14 févr. 2017 à 11:40
14 févr. 2017 à 11:40
Re,
Pourtant le code de déprotection est à l'intérieur de la boucle des onglets (feuilles) !... Mais, reste à savoir si il est efficace à 100%... J'en doute.
Pourtant le code de déprotection est à l'intérieur de la boucle des onglets (feuilles) !... Mais, reste à savoir si il est efficace à 100%... J'en doute.
J'ai réussi :
Après avoir créé la macro qui enlève la protection (enleve_protection) à part voici le code :
Sub Copier_calculatrice()
Workbooks.Open Filename:= _
"MONFICHIER DE BASE.xlsx"
ActiveWorkbook.SaveAs Filename:= _
"MONFICHIERMENSUEL.xlsx" _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Dim Feuille As Worksheet, mémo As Boolean, feuilleRef As Worksheet
Application.ScreenUpdating = False
Set feuilleRef = ActiveSheet
For Each Feuille In Worksheets
Feuille.Select
Application.Run "'MON FICHIER DE TRAVAIL.xlsm'!enleve_protection"
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Range("A1").Select
Next Feuille
feuilleRef.Activate
Application.CutCopyMode = False
Application.ScreenUpdating = True
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
Merci de ton aide,
Après avoir créé la macro qui enlève la protection (enleve_protection) à part voici le code :
Sub Copier_calculatrice()
Workbooks.Open Filename:= _
"MONFICHIER DE BASE.xlsx"
ActiveWorkbook.SaveAs Filename:= _
"MONFICHIERMENSUEL.xlsx" _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Dim Feuille As Worksheet, mémo As Boolean, feuilleRef As Worksheet
Application.ScreenUpdating = False
Set feuilleRef = ActiveSheet
For Each Feuille In Worksheets
Feuille.Select
Application.Run "'MON FICHIER DE TRAVAIL.xlsm'!enleve_protection"
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Range("A1").Select
Next Feuille
feuilleRef.Activate
Application.CutCopyMode = False
Application.ScreenUpdating = True
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
Merci de ton aide,
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
14 févr. 2017 à 13:38
14 févr. 2017 à 13:38
Finalement, pratiquement le même code du début ! Non ?...
Évite les accents dans l'utilisation d'un nom de variable (mémo). Variable qui par ailleurs ne sert à rien puisqu'elle n'est ni initialisée ni utilisée dans le reste du code...
Évite les accents dans l'utilisation d'un nom de variable (mémo). Variable qui par ailleurs ne sert à rien puisqu'elle n'est ni initialisée ni utilisée dans le reste du code...
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
>
Emilie
14 févr. 2017 à 17:17
14 févr. 2017 à 17:17
Oui c'est ça ! Ce n'est pas bien grave mais c'est plus clair pour celui ou celle qui aurait à retravailler ton code...