Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Macro pour Envoyer des mails aves des pièces jointes

StephGuerain

XLDnaute Nouveau
Bonjour,

Je ne m'y connais pas vraiment en macro et j'ai récupérer pour mon boulot un fichier qui avait été fait avec Excel 2013 et nous sommes maintenant sur Excel 2016 et la macro ne fonctionne plus.

Donc j'ai créer un nouveau fichier et essaye de déchiffrer la macro, dans ce premier jet je pense que l'idée est d'aller récupérer les fichiers Excel d'un répertoire qui aura été sléectionné via une fenêtre par l'utilisateur :



Le code macro que j'ai associé à cela est le suivant :


Sub TestListeFichiers()
Dim Dossier As String

'Définit le répertoire pour débuter la recherche de fichiers.
'(Attention à ne pas indiquer un répertoire qu contient trop de sous-dossiers ou de
'fichiers, sinon le temps de traitement va être très long).

UserForm1.Show

'Appelle la procédure de recherche des fichiers
ListeFichiers Dossier
'Ajuste la largeur des colonnes A:E en fonction du contenu des cellules.
Sheets("Fichier à traiter").Columns("A:E").AutoFit
MsgBox "Analyse fichier terminé"
End Sub



Sub ListeFichiers(Repertoire As String)
'
'Nécessite d'activer la référence "Microsoft Scripting RunTime"
'Dans l'éditeur de macros (Alt+F11):
'Menu Outils
'Références
'Cochez la ligne "Microsoft Scripting RunTime".
'Cliquez sur le bouton OK pour valider.

Dim Fso As Scripting.FileSystemObject
Dim SourceFolder As Scripting.Folder
Dim SubFolder As Scripting.Folder
Dim FileItem As Scripting.File
Dim i As Long

Set Fso = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = Fso.GetFolder(Repertoire)

'Récupère le numéro de la dernière ligne vide dans la colonne A.
i = Range("A65536").End(xlUp).Row + 1

'Boucle sur tous les fichiers du répertoire
For Each FileItem In SourceFolder.Files
'Inscrit le nom du fichier dans la cellule
Sheets("Fichier à traiter").Cells(i, 1) = FileItem.Name
'Ajoute un lien hypertexte vers le fichier
ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1), _
Address:=FileItem.ParentFolder & "\" & FileItem.Name
'Indique la date de création
Sheets("Fichier à traiter").Cells(i, 2) = FileItem.DateCreated
'Indique la date de dernier acces
Sheets("Fichier à traiter").Cells(i, 3) = FileItem.DateLastAccessed
'Indique la date de dernière modification
Sheets("Fichier à traiter").Cells(i, 4) = FileItem.DateLastModified
'Nom du répertoire
Sheets("Fichier à traiter").Cells(i, 5) = FileItem.ParentFolder

i = i + 1
Next FileItem


'--- Appel récursif pour lister les fichier dans les sous-répertoires ---.
For Each SubFolder In SourceFolder.subfolders
ListeFichiers SubFolder.Path
Next SubFolder

End Sub


Mais cela ne fonctionne pas pouvez-vous m'aider déjà dans cette première étape svp

Merci
 

StephGuerain

XLDnaute Nouveau
Bonjour à tous,
une recherche dans le forum et tu trouveras plein.

un lien
Bonjour,

Merci pour ce lien j'ai presque tout mais j'aimerais bien quele fichier recense tous fichiers PDF que je veux envoyer sur une liste Excel, et après avec une rechercheV je sais identifié à qui j'envoi le fichier grâche au nom de ce fichier et ensuite la macro doit pouvoir me créer un mail en y joignant automatiquement le fichier listé dans le tableau.

J'espère être assez clair
 

StephGuerain

XLDnaute Nouveau
Re,
Si tu joint un classeur avec "les souhaits", on saura mieux venir en aide.
Bonjour,

Voilà un classeur avec déjà la macro existante de puis la nuit des temps, j'ai réussi a avancé mais quand je veux envoyer un mail rien ne se fait.

en fait le but :

Macro qui effect dans un premier de la cellule A3 à Exxxx qui sera la dernière ligne remplie.

Onglet "Résultat" :
- de Cellule A3 à Axxx (en fonction du nombre de fichier trouvé dans le répertoire) il écrit le nom du fichier (*.pdf) avec son extension

- de Cellule B3 à BXXX (autant qu'il y a de nom de fichier trouvé) copie colle les formules des cellules B2 à E2 qui sont des formules qui vont récupérer mes informations de ma base de données de mes fournisseurs dans l'onglet Fournisseurs.

Et Dernière Etape importante il me créé les mails pour les fournisseurs de la feuille résultat en y joignant le fichier pdf qu'il a trouvé (Correspondant à sa facture)


J'espère être plus clair ? (j'ai fouillé pendant X Heures aujourd'hui sans y arriver je désespère)

Merci encore

Stéphane
 

Pièces jointes

  • test.xlsm
    143.9 KB · Affichages: 13

zebanx

XLDnaute Accro
Bonjour à tous,

1/Pour extraire les fichiers des répertoires et sous répertoires.
A adapter dans une feuille spécifique de votre fichier.

2/ Rien compris... Le tableau "résultat" n'étant pas du tout rempli, je vous invite à donner un exemple concret SUR LE FICHIER avec éventuellement des bulles de commentaires sinon les réponses risques de ne pas s'accumuler.

Bon courage
 

StephGuerain

XLDnaute Nouveau
Bonjour,

Je vous joins un nouveau fichier avec mes commentaires de ce que je veux merci à vous encore

Je répète ici mon message précédent en complément

en fait le but :

Macro qui effect dans un premier de la cellule A3 à Exxxx qui sera la dernière ligne remplie.

Onglet "Résultat" :
- de Cellule A3 à Axxx (en fonction du nombre de fichier trouvé dans le répertoire) il écrit le nom du fichier (*.pdf) avec son extension

- de Cellule B3 à BXXX (autant qu'il y a de nom de fichier trouvé) copie colle les formules des cellules B2 à E2 qui sont des formules qui vont récupérer mes informations de ma base de données de mes fournisseurs dans l'onglet Fournisseurs.

Et Dernière Etape importante il me créé les mails pour les fournisseurs de la feuille résultat en y joignant le fichier pdf qu'il a trouvé (Correspondant à sa facture)



Merci à vous
 

Pièces jointes

  • test.xlsm
    131 KB · Affichages: 7

zebanx

XLDnaute Accro
Bonsoir Stephguerain,

Un essai.
On commence à la ligne 9, à vous de reparamétrer sur la feuille "listing" sur toutes les macros si vous le souhaitez.
Rajout d'un bouton "reset" pour revenir au point de départ (cellule "A8") et utilisation d'un UDF pour aller chercher le nom du fournisseur (avec STXT - de ma compréhension pour ne retenir que 2 caractères sur une série de 3 (AA et non pas AAA)).

La macro affiche les mails pour le moment (display) mais vous pouvez les envoyer directement (send).
La macro ne fonctionne qu'avec une seule pièce jointe ("la facture") dont le chemin complet figure en colonne A.

xl-ment
zebanx

PS : par rapport au #1, il n'y a pas de raison qu'une macro ne fonctionne plus sous 2016 (àma) sauf à ce que les références ne soient pas cochées (dans la fenêtre VBE, allez chercher outils puis choisir les références et cocher certaines rubriques comme mentionnée dans le fichier ci-joint).
 

Pièces jointes

  • test_listing.xlsm
    147.6 KB · Affichages: 9

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
10
Affichages
748
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…