Problème pour permettre la copie de cellule protégée

Viper7

XLDnaute Nouveau
Bonjour,

J'ai réalisé une feuille Excel avec cases à cocher et listes déroulantes, ces cases et listes s'affichent toutes seules selon la valeur d'une cellule à proximité. Si un utilisateur change manuellement la valeur d'une liste ou d'une case à cocher, cela remplace mes formules par 0 ou 1 (format de contrôle), j'ai donc dû protéger la feuille pour empêcher toute manipulation malencontreuse.
Aussi, j'ai fait une macro qui copie colle la feuille dans un nouveau classeur pour enregistrement séparé, mais ma macro plante à cause de ma feuille verrouillée.

18853720150216090250.jpg

Voici le code de ma macro :

Code:
Sub EnregistrerSous()
'
' 
'
    Dim repertoire As String, nomFichier As String, extension As String, numero As String
    ActiveSheet.Select
    ActiveSheet.Copy
    Range("B2:H68").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Range("G3").Select
    repertoire = "N:\Demand Management\Réception\Anomalies\"
    numero = Range("G3")
    nomFichier = "Anomalie "
    extension = ".xlsx"
    Application.Dialogs(xlDialogSaveAs).Show repertoire & nomFichier & numero & extension
  
End Sub

Je ne pense pas que le problème vienne de la macro ? Comment permettre la copie d'une feuille verrouillée ? Ou bien, comment empêcher la modification de listes autrement qu'avec mes formules ?

Merci
 

Tibo62

XLDnaute Occasionnel
Re : Problème pour permettre la copie de cellule protégée

Bonjour,
En ce qui concerne ta macro je ne comprend pas bien pourquoi tu selectionne B2:H68 si ton seul but est de copier la feuille entière.
Si c'est bien la cas utilise plutôt cette macro plus courte et plus simple d'utilisation :

Sub Macro1()

Sheets("Feuil1").Unprotect 'mettre le mot de passe ici
Sheets("Feuil1").Copy After:=Sheets(ThisWorkbook.Sheets.Count)
ActiveSheet.Name = "Nouveau"
Sheets("Feuil1").Protect 'mettre le mot de passe ici
End Sub

Bonne journée
 

Tibo62

XLDnaute Occasionnel
Re : Problème pour permettre la copie de cellule protégée

oups je viens de relire ton énoncé la macro que je t'ai écrite ne fait qu'ajouter un onglet toi tu voulais coller cette feuille dans nouveau classeur voici la correction, j'ai également supposer que tu voulais garder une trace des noms donc le nouveau classeur reprend le nom de ton fichier origine :

Sub Macro1()

Dim objWorkbookCible As Workbook
Dim objworkbooksource As Workbook
Set objworkbooksource = ActiveWorkbook
Worksheets(1).Copy
Set objWorkbookCible = ActiveWorkbook
ActiveWorkbook.SaveAs objworkbooksource.Name & "_" & objworkbooksource.Worksheets(1).Name
End Sub
 

Viper7

XLDnaute Nouveau
Re : Problème pour permettre la copie de cellule protégée

Bonjour,

En effet, pas besoin de sélectionner une range, la feuille peut se copier.
La solution la plus appropriée semble être via macro, ça me va. Donc les étapes :

- Sélectionner la feuille du classeur source
- Ôter la protection (pas besoin de mdp dans mon cas)
- Copier vers nouveau classeur
- Coller valeur dans nouveau classeur
- Revenir dans fichier d'origine pour remettre "Protéger la feuille"
- Retourner dans le classeur nouvellement créé et ouvrir la fenêtre de dialogue proposant d'enregistrer sous

Comment faire dans la macro pour basculer d'un classeur à l'autre ?

Merci
 

Tibo62

XLDnaute Occasionnel
Re : Problème pour permettre la copie de cellule protégée

Je ne comprend pas bien ta demande mais je vais essayer d'y répondre en espérant répondre à ton besoin :

si tu veux sélectionner un autre classeur mais qui est déja ouvert : Workbooks("XXXXXXX.xls").Activate

maintenant si tu veux ouvrir un fichier et que tu connais son nom :

Sub Macro3()

Dim fic As String, monclasseur As String
fic = "C:\XXXXXX.xlsx"
Workbooks.Open (fic)

End Sub
 

Viper7

XLDnaute Nouveau
Re : Problème pour permettre la copie de cellule protégée

Je vais essayer d'être plus précis.

Le Classeur initial s'appelle "Anomalies.xlsm".
Le Classeur nouvellement généré avec le copier vers nouveau classeur s'appelle "Classeur1" ou "Classeur2" ou "Classeur3" selon les fichiers récemment créés, mais pas toujours Classeur 1

La feuille copiée du classeur initial a besoin d’être déverrouillée pour être copiée puis reverrouillée, ceci avant de revenir sur le classeur nouvellement créé et d'ouvrir la fenetre de dialogue proposant d'enregistrer sous. Si je met à jour ma macro (avec le peu d'expérience que j'ai en VBA) :


- Sélectionner la feuille du classeur source
Code:
    ActiveSheet.Select
    ActiveSheet.Copy
    Range("B2:G44").Select

- Ôter la protection (pas besoin de mdp dans mon cas)
Code:
    ActiveSheet.Unprotect

- Copier vers nouveau classeur, Coller valeur dans nouveau classeur
Code:
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Range("G3").Select

- Revenir dans fichier d'origine pour remettre "Protéger la feuille"
Code:
Workbooks("Anomalies.xlsm").Activate
ActiveSheet.Protect

- Retourner dans le classeur nouvellement créé
Code:
???

- Ouvrir la fenêtre de dialogue proposant d'enregistrer sous
Code:
    repertoire = "N:\Demand Management\Réception\Anomalies\"
    numero = Range("G3")
    nomFichier = "Anomalie "
    extension = ".xlsx"
    Application.Dialogs(xlDialogSaveAs).Show repertoire & nomFichier & numero & extension


Il me manque juste la séquence me permettant de revenir sur le "ClasseurX" nouvellement créé

Merci d'avance
 

Tibo62

XLDnaute Occasionnel
Re : Problème pour permettre la copie de cellule protégée

Ok c'est beaucoup plus claire comme sa :).

Donc c'est facile tu créé une variable :
Dim Nom As String

Ensuite lorsque tu fait : Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("G3").Select

tu es dans le nouveau classeur
donc tu ajoute : Nom = ActiveWorkbook.Name

et ensuite tu place ou tu veux cette phrase pour ouvrir le classeur concerné :
Workbooks(Nom).Activate
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16