Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Afficher et débloquer un onglet masqué et protégé pour faire la macro

MOA_Excel

XLDnaute Nouveau
Bonjour !

Malgré mes recherches et tentatives de codage, je n'arrive pas à faire fonctionner les codes liés à l'affichage/masque et "déprotection"/protection des onglets

Ainsi, auriez-vous svp l'amabilité de m'aider à compléter le code ci-dessous afin de me permettre de :

1 - Afficher l'onglet "CONFIDENTIEL1" qui est masqué et protégé
2 - Masquer et protéger à nouveau l'onglet "CONFIDENTIEL1" à l'issue de la macro

Comme vous le verrez dans le code ci-dessous, la macro permet de copier un onglet d'un fichier dans un autre fichier créé pour l'occasion et enregistré
Je vous remercie par avance de votre aide !

Bien cordialement
JA

Sub GENERER_NOUVEAU_FICHIER_IMPORT_CLIENT()
Dim ChDir As String
Dim nmFich As String

ChDir = "Chemin d'accès confidentiel"
nmFich = Sheets("Confidentiel0").Range("X29").Value & ".xlsx"

Sheets("CONFIDENTIEL1").Copy
Range("A1").CurrentRegion.Copy

Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ActiveWorkbook.SaveAs Filename:=ChDir & nmFich _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWorkbook.Close

End Sub
 
Solution
Re
Plutôt que prévu !!
J'ai plus simple pour le résultat que tu m'as présenté au #6
En fait tu veux prendre les données de Feuil2 pour les enregistrer dans un nouveau fichier nommé par la cellule C8 oui ?
en Vba pas besoin de masquer / cacher seul Protect et unpro.
Conseil : évite de nommer des variables avec des mots clé de VBA > ChDir en est un !!

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour
T'as pas dû bien cherché ? .. rien de compliqué
Sheets("Confidentiel0").visible= true
Sheets("Confidentiel0").unprotect
et l'inverse
Sheets("Confidentiel0"). Protect Password:="***" si t'as un Mdp
Sheets("Confidentiel0").visible= false

Un bout de fichier aurait été plus judiciable car on peut tester la solution !!!
 

MOA_Excel

XLDnaute Nouveau
Bonjour,

Merci de votre message et le temps consacré à mon post.
Je veux bien vous croire sur la facilité du codage, mais je n'ai pas le niveau requis, raison pour laquelle je demande modestement de l'aide

J'ai en effet tenté de coder de cette manière, mais il y a quelque chose que je fais mal puisque la macro ne s'exécute pas correctement

Ci-joint un fichier de test pour me montrer cette fois-ci davantage judicieux*

Merci par avance de votre aide
Bien cordialement
JA
 

Pièces jointes

  • test (1).xlsm
    16.3 KB · Affichages: 12

herve62

XLDnaute Barbatruc
Supporter XLD
oui yups !! j'ai vu après
Bon vite fait , je reviens vers 17h !!
donc ce qui ne va pas c'est ton copy special paste
Je ne vois pas ce que tu veux faire , COPY de A1 ... mais ensuite paste en A1 ?? de quelle feuille ?
Tu es dans un module donc il faut préciser l'onglet à chaque fois !!
Déjà une erreur en moins en faisant :
Sheets("Feuil2").Range("A1").CurrentRegion.Copy
supprimer le : Sheets("Feuil2").copy
 

MOA_Excel

XLDnaute Nouveau
Merci à nouveau pour la réponse

Ci-joint le fichier avec le code exact qui me permet d'exécuter la macro et également ci-joint le fichier qui est créé et sauvegardé automatiquement (le seul truc modifié dans le code est mon nom que j'ai remplacé par "Nom_utilisateur")

Merci par avance. Aucun pb pour 17h, si je trouve une solution grâce à vous d'ici cette fin d'aprem ça sera déjà top !!
Bien cordialement
JA
 

Pièces jointes

  • test (1).xlsm
    18 KB · Affichages: 3
  • Resa du vendredi-06-08-2021 pour le lundi-09-08-2021.xlsx
    9 KB · Affichages: 4

MOA_Excel

XLDnaute Nouveau
Re bonjour,

Après mes différente recherches et différentes aides, j'ai obtenu ce code :

VB:
Sub GENERER_NOUVEAU_FICHIER_IMPORT_CLIENT()
Dim ChDir As String, nmFich As String
ChDir = "CHEMIN CONFIDENTIEL"
nmFich = Sheets("Confidentiel0").Range("X29").Value & ".xlsx"
With ThisWorkbook
    AfficheDebloque .Sheets("Confidentiel1"), "MDP"
    .Sheets("Confidentiel1").Copy
    With ActiveWorkbook
        .Sheets(1).Range("A1:DC10000").Value = .Sheets(1).Range("A1:DC10000").Value
        'application.displayalerts = false 'si besoin
        .SaveAs Filename:=ChDir & nmFich, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        'application.displayalerts = true
        .Close
    End With
    CacheBloque .Sheets("Confidentiel1"), "MDP"
End With
End Sub

Sub AfficheDebloque(Feuille As Worksheet, Optional Password As String)
With Feuille
    .Unprotect Password
    .Visible = True
End With
End Sub

Sub CacheBloque(Feuille As Worksheet, Optional Password As String)
With Feuille
    .Visible = False
    .Protect Password
End With
End Sub

Merci pour le temps que vous avez consacré pour m'aider
Bien cordialement
JA
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re
Plutôt que prévu !!
J'ai plus simple pour le résultat que tu m'as présenté au #6
En fait tu veux prendre les données de Feuil2 pour les enregistrer dans un nouveau fichier nommé par la cellule C8 oui ?
en Vba pas besoin de masquer / cacher seul Protect et unpro.
Conseil : évite de nommer des variables avec des mots clé de VBA > ChDir en est un !!
 

Pièces jointes

  • test_copy.xlsm
    23.8 KB · Affichages: 8

MOA_Excel

XLDnaute Nouveau
Très propre, j'ai modifié avec mes infos et ça marche
Merci pour la macro !
A bientôt sur le forum
Bien cordialement
JA
 

herve62

XLDnaute Barbatruc
Supporter XLD
De rien ; Tu étais parti sur mauvaise piste
Je viens de remettre le fichier actualisé au #8
le screenupdating permet de ne pas voir les étapes intermédiaires surtout quand on passe de feuille en feuille ou active autre classeur , cel évite les "Flash"
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…