[Catégorie modifiée .Net -> VBA] MACRO EXTRAIRE DANS UN FICHIER PUIS ENVOI PAR M
cs_VEROLYDE
Messages postés1Date d'inscriptionvendredi 27 août 2010StatutMembreDernière intervention16 mai 2011
-
16 mai 2011 à 15:42
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
16 mai 2011 à 18:46
Bjr,
J'ai créé une macro pour extraire dans un fichier excel, dans la colonne 1 "EC" puis en colonne 7 "MARTIN M", puis je copie cette feuille active et la sauvegarde dans un endroit précis, puis je l'envoie par mail à la MARTIN M.Elle marche trés bien.
Mon pb c'est que je souhaiterai reproduire cette macro à la suite avec une liste de plusieurs personnes. Comment faire pour que cette macro continue .... avec ALVES, puis DULOS... jusqu'à la fin.
ActiveSheet.SaveAs Filename:="G:\Direction Région \RECLAMATIONS\- REPORTING\ENVOI RECL TOUS LES 15 J\ALLAIRE\RECL MAJ" & Format(Date, "ddmmyy")
'& " " & ActiveSheet.Name
'Envoi Mail
Dim dest As String
dest = "MARTIN.M@xxx.net"
ActiveWorkbook.SendMail Recipients:=dest, Subject:="Reporting des réclamations en cours", ReturnReceipt:=True
ActiveSheet.Range("A1:B5").Select ' la plage de cellules à envoyer
Merci de votre aide !
A voir également:
[Catégorie modifiée .Net -> VBA] MACRO EXTRAIRE DANS UN FICHIER PUIS ENVOI PAR M
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 16 mai 2011 à 18:46
Salut
Il te faut créer une boucle de recherche.
Tu boucles depuis le premier jusqu'à la dernière ligne. Lorsque tu trouves un nouveau nom (*), tu lances ta macro en lui fournissant le nom.
(*) Il faudra donc mémoriser le dernier nom rencontré afin de pouvoir le comparer au suivant.
Pour transmettre une variable, il te suffit de modifier sa déclaration :
Sub EXTRAIREC(ByRef myCriteria As String)
puis d'utiliser cette variable dans ton programme.
Selection.AutoFilter Field:= 7, Criteria1:= myCriteria
Pour la boucle, c'est de celle qu'on trouve dans n'importe quelle bonne source que tu auras surement lue, agrémenté de ton test :
Dim oRange As Range
Dim sLastName As String
For Each oRange In Range("A1:A10000")
If oRange.Value = "" Then Exit For
If oRange.Value <> sLastName Then
sLastName = oRange.Value
Call EXTRAIREC(sLastName)
End If
Next oRange
PS : Le filtrtage ne change pas l'ordre des lignes et ne fait que rendre invisible les lignes inutiles (important sinon la boucle serait désorganisée).
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)