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

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

Re-bonjour,

Ci-joint un fichier de test que j'ai essayé de faire, mais il y a un truc que je fais mal

Merci par avance de votre aide !

Bien cordialement

JA

PS : le mdp est "MDP"

10test-1.xlsm (16.37 Ko)

Bonjour,

Voici une première proposition avec des procédures secondaires dépendant de paramètres :

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

A utiliser comme on veut ainsi :

sub mamacro()
AfficheDebloque sheets(1), "MDP" '<<< à adapter bien sûr
'code
CacheBloque sheets(1), "MDP" 'idem
end sub

Cdlt,

Bonjour 3GB,

Merci de votre réponse. Etant un piètre utilisateur VBA, je n'arrive pas à mettre en exécution votre code
Ci-dessous ce que j'ai testé

Merci par avance de votre aide

Bien cordialement

JA

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

ChDir = "C:\Users\confidentiel\Desktop"
nmFich = Sheets("Feuil1").Range("C8").Value & ".xlsx"

AfficheDebloque Sheets("Feuil2"), "MDP"

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

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

CacheBloque Sheets("Feuil2"), "MDP"

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

End Sub

Re,

Je comprends. Voici un essai avec le code complet (basé sur celui de départ).

Sub GENERER_NOUVEAU_FICHIER_IMPORT_CLIENT()
Dim ChDir As String, nmFich As String
ChDir = "Chemin d'accès confidentiel"
nmFich = Sheets("Confidentiel0").Range("X29").Value & ".xlsx"
with thisworkbook
    AfficheDebloque .Sheets("CONFIDENTIEL1"), "MDP"
    .Sheets("CONFIDENTIEL1").Copy
    with activeworkbook
        .sheets(1).Range("A1").value = .sheets(1).Range("A1").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

Je pense que le problème vient du fait que c'est la feuille de votre nouveau classeur qui subit la protection et la tentative de masquage (impossible s'il n'y a qu'une seule feuille dans le classeur).

Cdlt,

PS : N'hésitez pas à utiliser les balises </> du ruban d'icônes pour poster du code.

3GB,

Ca marche ! Serait-il possible d'avoir le même code mais cette fois-ci avec un collé dans le nouveau fichier uniquement en valeur (sans importer quelconque formule) et en format texte ?

Merci pour le temps que vous consacrez pour m'aider

Bien cordialement

JA

PS : c'est noté pour l'insertion de code, merci pour l'info car j'ignorais cette manip

Nickel !

Normalement, c'est déjà en valeur avec ce code.

Pour le format texte, il est possible de modifier le bloc with activeworkbook ainsi :

    with activeworkbook
        with .sheets(1)
            .Range("A1").value = .Range("A1").value
            .usedrange.numberformat = "@"
        end with
        'application.displayalerts = false 'si besoin
        .SaveAs Filename:=ChDir & nmFich, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        'application.displayalerts = true   
        .Close
    end with

Cdlt,

Super ! Merci pour ce coup de pouce ultra efficace

A bientôt sur le forum

Bien cordialement

JA

Rechercher des sujets similaires à "afficher debloquer onglet masque protege macro"