'Définition du fichier
directory = "U:dossier"
fileName = Dir(directory & "*.xl??")
'On récupère toutes les worksheets du fichier excel ciblé
Do While fileName <> ""
Workbooks.Open (directory & fileName)
For Each sheet In Workbooks(fileName).Worksheets
total = Workbooks("fichier.xlsm").Worksheets.Count
Workbooks(fileName).Worksheets(sheet.Name).Copy _
after:=Workbooks("fichier.xlsm").Worksheets(total)
Next sheet
Workbooks(fileName).Close
fileName = Dir()
Loop
Puis en fonction de ce que l'on souhaite, on peut jouer avec une feuille sur son indice, exemple pour la dernière :
'On récupère le numéro du dernier worksheet arrivé.
Dim LastSheetName
LastSheetName = Sheets(Sheets.Count).Name
Exemple de boucle For :
'Pour chaque cellule dans le classeur "Liste" dans la colone C
For Each cell In Sheets("Liste").Range("C:C")
'Si la cellule n'est pas vide et est différente du menu "Menu"
If IsEmpty(cell.Value) = False And cell.Value <> "Menu" Then
'on récupère le contenu de la cellule
Contenu = cell.Value
End If
Next
--------------------------------
1 - On édite le registre (admin)
Validé sous Outlook 2016 jusque 365 :
HKEY_CURRENT_USERSoftwareMicrosoftOffice16.0OutlookSecurity
DWORD: EnableUnsafeClientMailRules
Value: 1
2 - Puis le code :
Ouvrir outlook puis ALT + F11 (Ouvre l'éditeur vba)
=> Insertion, module, et coller mon exemple
Cet exemple permet l'enregistrement des pièces jointes dans le dossier de votre choix :
Option Explicit
Public Sub SaveAttachmentsToDisk(MItem As Outlook.MailItem)
Dim oAttachment As Outlook.Attachment
Dim sSaveFolder As String
sSaveFolder = "C:UsersDesktopvotredossier"
For Each oAttachment In MItem.Attachments
oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
Next
End Sub
3 - Enfin exécuter la règle sous outlook :
= > fichier , règles et alertes ... puis sous "action à effectuer", choisir "run a script"
Exemple si l'on ne souhaite que les pdf's :
Public Sub SaveAttachmentsToDisk(MItem As Outlook.MailItem)
Dim oAttachment As Outlook.Attachment
Dim sSaveFolder As String
sSaveFolder = "votre emplacement dossier"
For Each oAttachment In MItem.Attachments
'Seulement si pdf
If Right(oAttachment.FileName, 3) = "pdf" Then
MsgBox (oAttachment)
oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
End If
Next
End Sub
Enjoy
'on commence à 2 pour sauter notre première feuille de calcul
If (mainworkBook.Sheets.Count > 1) Then
For i = 2 To mainworkBook.Sheets.Count
NomFeuille = mainworkBook.Sheets(i).Delete
Next
End If
Enjoy
Quelques exemples de code habituels :
Afficher un popup :
Msgbox("ceci est un messagebox")