VBA Enelver protection pour copier feuille / envoie Outlook

Bonjour à tous,

J'ai rédigé une code qui permet lorsqu'on clique sur un bouton d'envoyer automatique via Outlook une copie de la feuille n°1 (Formulaire).

Seleuement, pour guider mes utilisateurs, j'ai protéger par mot de passe toutes les cellules auquelles ils ne doivent pas toucher.

Lors de l'envoi de l'email, mon code effectue une copie, mais bloque car les celluls de la plage à copier sont protégées.

Sub Demande_approbation()

Dim Source As Range
    Dim Dest As Workbook
    Dim wb As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim OutApp As Object
    Dim OutMail As Object
    Dim Nom As String
    Dim Des As String

    Set Source = Nothing
    On Error Resume Next
    Set Source = Range("C1:E38").SpecialCells(xlCellTypeVisible)
    On Error GoTo 0

    Nom = Sheets("Formulaire").Range("D15").Value
    Des = Sheets("Données de base").Range("AG2").Value

    If Source Is Nothing Then
        MsgBox "La plage à envoyer n'est pas valide. " & _
               "Merci de ré-essayer ou de contacter votre administrateur.", vbOKOnly
        Exit Sub
    End If

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    Set wb = ActiveWorkbook
    Set Dest = Workbooks.Add(xlWBATWorksheet)
    Source.Copy
    With Dest.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial Paste:=xlPasteValues
        .Cells(1).PasteSpecial Paste:=xlPasteFormats
        .Cells(1).Select
        Application.CutCopyMode = False
    End With

    TempFilePath = Environ$("temp") & "\"
    TempFileName = "Fiche" & "-" & Nom & "-" _
                 & Format(Now, "dd-mmm-yy")

    If Val(Application.Version) < 12 Then
        ' You are using Excel 2000 or 2003.
        FileExtStr = ".xls": FileFormatNum = -4143
    Else
        ' You are using Excel 2007 or 2010.
        FileExtStr = ".xlsx": FileFormatNum = 51
    End If

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With Dest
        .SaveAs TempFilePath & TempFileName & FileExtStr, _
                FileFormat:=FileFormatNum
        On Error Resume Next
        With OutMail
            .To = Des
            .CC = ""
            .BCC = ""
            .subject = "Demande d'approbation Fiche " & "" & "-" & "" & Nom
            .Body = "Bonjour" & vbNewLine & vbNewLine & _
              "Test texte." & vbNewLine & vbNewLine & _
              "text." & vbNewLine & vbNewLine & _
              "Bien cordialement,"
            .Attachments.Add Dest.FullName
            .VotingOptions = "Valider;Refuser"
            .Display
        End With
        On Error GoTo 0
        .Close SaveChanges:=False
    End With

    Kill TempFilePath & TempFileName & FileExtStr

    Set OutMail = Nothing
    Set OutApp = Nothing

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With

End Sub

Ma question :

Est-il possible d'y insérer une ligne qui fasse sauter la protection puis la remette uniquement pour la copie ?

Si oui, auriez-vous des idées / indications ?

Merci d'avance de votre aide !

Jay


Alors, pour info, j'ai rajouté ceci :

ActiveSheet.Unprotect "mdp"  
 '
 ' Macro
 '
 ActiveSheet.Protect "mdp"

Mais cela implique que le mot de passe est toujours identique..

Un moyen d'outre passer cela?

Bonjour,

La solution que tu as adoptée est effectivement la bonne ...

Cependant, ta question est-elle maintenant d'avoir un mot de passe variable ...???

Bonjour,

Merci de ta réponse !

Effectivement, l'idée serait que le code s'adapte peu importe le mot de passe utilisé pour protéger la feuille.

Disons qu'il s'agit de confort pour l'utilisateur plus qu'une nécessité.. Mais vu que les utilisateurs du fichier ne s'y connaissent pas du tout en VBA, ça va être dur de modifier du code en cas de changement de mot de passe !

Bonjour,

Tu peux conserver ton mot de passe ... et ses changements dans une feuille dédiée ... avec propriété Visible Very Hidden ...

J'adopte la solution ! Merci pour l'idée !

Rechercher des sujets similaires à "vba enelver protection copier feuille envoie outlook"