Petit bug sur macro - fichier protégé

Bonjour,

j'ai réalisé une macro qui me permet de redimensionner un bon de commande en ne prenant que les quantités non vides, de copier, et coller les valeurs dans un nouvel excel et de créer un mail pour envoyer notre proposition au client à partir de notre nouveau fichier.

Tout fonctionnait à merveille, mais depuis que j'ai protégé mon document (pour que les utilisateurs ne me virent pas les formules de calcul) çà ne fonctionne plus :(

des idées pour que cela fonctionne à nouveau ? (sachant que lorsque je protège, je laisse la possibilité d'utiliser le filtre sur excel)

merci de votre aide

   Dim ws As Worksheet
    Dim rng As Range
    Dim newWB As Workbook
    Dim OutlookApp As Object
    Dim OutlookMail As Object
    Dim FileName As String

    ' Définir la feuille de calcul active
    Set ws = ThisWorkbook.ActiveSheet

    ' Filtrer la colonne M en ne prenant que les cellules non vides
    ws.Range("$Aa$6:$Z$530").AutoFilter Field:=13, Criteria1:="<>", Operator:=xlFilterValues

    ' Sélectionner le tableau de B1 à P600 dans l'onglet actif
    Set rng = ws.Range("B1:P600").SpecialCells(xlCellTypeVisible)

    ' Copier les valeurs et le format du tableau dans un nouveau classeur
    rng.Copy
    Set newWB = Workbooks.Add
    newWB.Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteValues
    newWB.Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteFormats

    ' Nommer le nouveau classeur avec les cellules B4, C2 et C1
    FileName = ws.Range("B4").Value & "_" & ws.Range("C2").Value & "_" & ws.Range("C1").Value
    newWB.SaveAs "C:\Temp\" & FileName

    ' Créer l'objet Outlook
    Set OutlookApp = CreateObject("Outlook.Application")
    Set OutlookMail = OutlookApp.CreateItem(0)

    ' Remplir les informations de l'e-mail
    With OutlookMail
        .To = ws.Range("D2").Value
        .Subject = ws.Range("B4").Value & " DIXNEUF / " & ws.Range("C2").Value & " " & ws.Range("C1").Value
        .Body = "Bonjour," & vbCrLf & vbCrLf & "Ci-joint comme vu ensemble."
        .Attachments.Add newWB.FullName
        .Display
    End With

    ' Nettoyer
    Application.CutCopyMode = False
    ws.AutoFilterMode = False
    newWB.Close False
    Set OutlookMail = Nothing
    Set OutlookApp = Nothing
    Set newWB = Nothing
End Sub

Bonjour

Il faut protéger par VBA à l'ouverture avec l'argument userinterfaceonly qui limite les users mais pas le code

merci beaucoup pour votre réponse 78chris mais étant débutante autodidacte, j'avoue ne pas bien savoir comment utiliser cette réponse 🫣

RE

Il faut placer un code de ce type dans le module Workbook du classeur

Private Sub Workbook_Open()
    With ThisWorkbook
        .Worksheets("Feuil1").Protect , Password:="Toto", Userinterfaceonly:=True
        .Worksheets("Feuil2").Protect , Password:="Toto", Userinterfaceonly:=True
    End With
End Sub

en précisant les feuilles à protéger

Le code pourra agir mais la protection reste pour les utilisateurs

Bonjour à tous,

il faut envoyer une version pdf au client, c'est le plus simple et le plus sûr.
'Enregistrer sous... / PDF (*.pdf)' ou bien imprimer vers une imprimante pdf virtuelle.
eric

Bonjour,

Du coup le code de la macro vient de chat GPT ?

(Juste par simple curiosité)

Bonjour Eriiic

Effectivement, auparavant, j'avais créé la macro pour qu'elle se génère en pdf.

mon responsable m'a demandé cette année de la générer en excel pour que nos clients s'ils ont besoin, puissent récupérer rapidement les références et quantités articles pour leurs ERP. d'où cette modification

Bonjour 21Formatic

En partie, oui, j'avoue 🫣, pour la macro en pdf, j'étais partie de réponses sur ce forum et pour modifier en excel, n'ayant pas trouvé sur le forum et un peu prise par le temps, j'ai posé la question à ChatGPT.

merci en tous les cas, pour le temps consacré à ma demande.

Merci Beaucoup 78Chris.

je vais mettre ce code en début du workbook.

Merci à vous pour le temps passé à me répondre

bonne journée

Rechercher des sujets similaires à "petit bug macro fichier protege"