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