Pièce jointe à partir du chemin spécifié dans une cellule

cgpa

XLDnaute Occasionnel
Bonjour !
En vba, je sais piloter Outlook et joindre un fichier spécifique avec '.Attachments.Add "Chemin de mon fichier".
Pour une raison de facilité, j'aimerais cependant pouvoir spécifier le chemin du fichier dans la cellule A1 de la "Feuil1", mais malgré mes essais et recherches, je ne parviens pas à dire en VBA qu'il faut prendre le chemin spécifié dans la cellule A1 de la feuille 1. Pouvez-vous m'aider? Merci beaucoup et excellente journée.
 

cgpa

XLDnaute Occasionnel
Bonjour,

initialiser d'abord en variable, exemple:

CheminFichier$= sheets("Feuil1").Range("A1")

.Attachments.Add CheminFichier$

Merci beaucoup Roland_M, cela fonctionne. J'ai doublé le code pour pouvoir proposer 2 chemins de fichier en cellules A16 et A17 et cela fonctionne aussi. Par contre, si la cellule A17 est vide il y a un bug. J'ai essayé avec If.. then mais je pense faire une erreur. Vous avez une idée? Encore merci.

CheminFichier1$ = Sheets("Feuil1").Range("A16")
.Attachments.Add CheminFichier1$
CheminFichier2$ = Sheets("feuil1").Range("A17")
.Attachments.Add CheminFichier2$
If CheminFichier2$ = "" Then Exit Sub
 

cgpa

XLDnaute Occasionnel
Mon objectif est de laisser 5 cellules disponibles pour ajouter des chemins d'accès. Cependant, comme il s'agit d'un listing de commandes, certaines nécessitent 1 pièce jointe, d'autres 2, 3, 4 ou 5. Donc, certaines cellules peuvent être vides.
 

Roland_M

XLDnaute Barbatruc
re

conclusion chaque cellule occupée sera un fichier à envoyer ?
soit comme ceci, exemple !?
CheminFichier1$ = Sheets("Feuil1").Range("A16")
CheminFichier2$ = Sheets("Feuil1").Range("A17")
CheminFichier3$ = Sheets("Feuil1").Range("A18")
CheminFichier4$ = Sheets("Feuil1").Range("A19")
If CheminFichier1$ > "" Then .Attachments.Add CheminFichier1$
If CheminFichier2$ > "" Then .Attachments.Add CheminFichier2$
If CheminFichier3$ > "" Then .Attachments.Add CheminFichier3$
If CheminFichier4$ > "" Then .Attachments.Add CheminFichier4$

tu sais que l'on peut, par sécurité, tester si le chemin et le fichier sont valable !?
si tu en as beaucoup on peut aussi voir à éviter les répétitions mais je vais pas t'embrouiller avec ça.
 

Roland_M

XLDnaute Barbatruc
re

VB:
'si tes cellules Chemin\Fichier sont de A16 à A20 par exemple
For I = 1 To 5
   R$ = Choose(I, "A16", "A17", "A18", "A19", "A20")
   F$ = Sheets("Feuil1").Range(R$)
   If F$ > "" Then
      If Dir(F$) <> "" Then .Attachments.Add F$ Else MsgBox "Ce chemin\fichier est incorrect ou inexistant !?" & vbLf & F$, vbCritical, ""
   End If
Next
 
Dernière édition:

cgpa

XLDnaute Occasionnel
Magnifique! Je viens d'encoder et adapter le dernier code. C'est génial. Merci. Cela répond parfaitement à la problématique. Tant qu'à abuser, et afin de parfaire ce fichier, voici mon but ultime: une commande est soit de fourniture, soit de sous-traitance. J'ai deux codes séparés : un pour chaque type de commande. Le type de commande est indiqué dans une cellule en colonne G (la ligne reprend le nom de société, l'adresse, etc.) et les commandes se suivent en se mélangeant. J'ai créé deux boutons de lancement en fonction de la macro à lancer. J'aimerais n'avoir qu'un seul bouton et que la macro soit déterminée par le type de commande présent dans la cellule de la colonne G. Est-ce possible ou dois-je garder les 2 boutons séparés? en tout ca, merci beaucoup, le code est celui qu'il me fallait.
 

cgpa

XLDnaute Occasionnel
Je vous remercie de donner de votre temps.
Sur une même feuille, j'ai une liste de commandes. Une commande par ligne (société, nom, adresse...). en colonne G il y a le type de commande (fourniture ou sous-traitance). Actuellement, j'ai une macro qui ouvre Word et distribue ses signets. Une deuxième macro ouvre Outlook pour envoyer un mail à la société voulue pour une commande de fourniture, et une troisième macro fait de même pour une commande de sous-traitance. J'ai deux boutons séparés (l'un pour une commande de sous-traitance, l'autre pour une commande de fourniture). En effet, le texte et les pièces jointes ne sont pas les mêmes selon le type de commande. J'aimerais n'avoir qu'un seul bouton de commande au lieu de deux. Je pense que c'est le contenu de la cellule en colonne G (soit le type de commande) qui peut déterminer la macro à lancer. Autrement dit, le contenu de la cellule G déterminera si c'est la macro "fourniture" ou la macro "sous-traitance" qui sera lancée à l'activation du bouton de commande. C'est possible?
 

Roland_M

XLDnaute Barbatruc
re

je comprend mieux, effectivement un seul bouton peut suffire.
mais il faut connaitre les éléments avec leurs origines feuil & range pour décider de la direction à prendre
ensuite le nom des macros à exécuter ...
pour cela il faudrait avoir le classeur avec les explications dans une zone de texte bien détaillées
encore faut t'il que ce classeur ne soit pas trop complexe et bien structuré
pour ne pas devoir y passer une soirée pour comprendre tout le cheminement !?
ça peut être très simple si bien fait ou demander plus de temps si mal ficelé !?
 

cgpa

XLDnaute Occasionnel
re

je comprend mieux, effectivement un seul bouton peut suffire.
mais il faut connaitre les éléments avec leurs origines feuil & range pour décider de la direction à prendre
ensuite le nom des macros à exécuter ...
pour cela il faudrait avoir le classeur avec les explications dans une zone de texte bien détaillées
encore faut t'il que ce classeur ne soit pas trop complexe et bien structuré
pour ne pas devoir y passer une soirée pour comprendre tout le cheminement !?
ça peut être très simple si bien fait ou demander plus de temps si mal ficelé !?

Bonjour Roland,
J'ai nettoyé le fichier de façon à ne laisser que les deux macros qui me posent problème. Je vous le propose en annexe. Il y a une explication dans un encadré bleu. Cela est-il assez clair? Merci pour votre aide.
 

Pièces jointes

  • commande.xls
    226 KB · Affichages: 56

Roland_M

XLDnaute Barbatruc
Bonjour à tous,

voir ci-joint avec explications !


EDIT: j'ai un gros soucis avec le classeur !
je l'ai enregistré sans soucis, mais je viens d'essayer de le rouvrir
avec les références manquantes, j'ai perdu tout mon code !?
je ne sais plus accéder au module que j'ai modifié !?
erreur dll !? j'ai bien entendu décoché toutes les références manquantes rien n'y fait !?
j'ai essayé de l'enregistré sous un autre format rien à faire !
j'espère que pour toi ça ira car perso j'ai tout perdu !?
tu me dis quoi !
 

Pièces jointes

  • commande_ModifRol.xls
    224 KB · Affichages: 31
Dernière édition:

cgpa

XLDnaute Occasionnel
Bonjour Roland,
Merci pour ce fichier. Je sais l'ouvrir, mais il y a un problème: quel que soit le contenu de la cellule active en colonne W, le bouton renvoie toujours à la macro de la commande "fournisseur" et on à celle du sous-traitant. De même si le contenu est erroné. Il ouvre pourtant bien Outlook mais pas avec le bon texte. Je n'en comprends pas la raison. Je joins à nouveau le dossier.
 

Pièces jointes

  • commande_ModifRol.xls
    224 KB · Affichages: 36

Discussions similaires

Statistiques des forums

Discussions
312 797
Messages
2 092 212
Membres
105 286
dernier inscrit
SoCa