Créer une feuil excelle selon la valeur d'une cellule

Bonjour à Tous,

Voilà, aujourd'hui et grâce à votre soutien je vais pouvoir me facilité le travail et faire un gain de temps sur les opérations quotidiennes !

En faite, j'ai une feuille excel contenant différents non de fournisseurs dans la colonne B. Ce que je souhaite faire c'est d’extraire les lignes entière pour chaque fournisseur dans une nouvelle feuil et classeur excel pour l'envoyer par la suite par mail

Exemple ci-joint.

Merci pour votre aire

Bonne journée dans l'attente de votre retour

Salutations

13exemple-01.xlsx (10.12 Ko)

Bonjour,

à tester,

Sub test_mail()
Set sh1 = Sheets("Feuil1")
Set sh2 = Sheets("mail")
destinataire = "aaaaa@videotron.ca"  ' à modifier
deb = 2
sh2.Activate

 For i = 3 To 20
  n = n + 1
   If sh1.Cells(i, 1).Value <> sh1.Cells(deb, 1).Value Then
    sh2.Range(sh2.Cells(2, 1).Address, sh2.Cells(n + 1, 4).Address).Value = sh1.Range(sh1.Cells(deb, 1).Address, sh1.Cells(i - 1, 4).Address).Value
    deb = i
    With sh2
     Application.Dialogs(xlDialogSendMail).Show destinataire, "ObjetsRésultats" 'destinataire@mail.ca
    End With
    sh2.Range("A2:D" & sh2.Cells(Rows.Count, 1).End(xlUp).Row).ClearContents
    n = 0
   End If
 Next
End Sub

Bonjour SabV,

Merci pour ton retour !

Honnêtement, c'est un travail de Pro et chapeau bas

Cependant, ... j'ai juste a peu être demander une petit modif si possible...

Ta solution permet d'ouvrir des mail avec le fichier joint de chaque fournisseur ... mais pour des raison de confidentialité ... il faut que ça soit uniquement l'onglet mail ... sans le fichier source ... pour que chaque fournisseur à que les information qui l’intéresse ...

En bref

Supprimer Feuil1 du fichier joint au mail

MERCI FOR YOUR BIG HELP ....

Bonne journée les amis !!

H

Re !

  • Je viens aussi de m’apercevoir que la macro est limité à 4 fournisseurs ...
  • Aussi, possible de nommer le fichier joint avec le nom du fournisseur dans la colonne A
  • Possible que ça soit autant de mail que de Nom de Fournisseurs SVP !

Je sais que je demande beaucoup, mais je compte aussi énormément sur votre soutiens et générosité les amis

MERCI

@++

Voici la modification,

Bonjour SabV

Un grand MERCI pour ton retour ... et c'est cool d'avoir le soutien de Pro dans ce Forum

Sinon, j'ai testé et ça fonctionne parfaitement ... Mais ... le fameux mais ... A la place d'avoir pièce jointe avec le nom Classeur1 dans mail 1 et classeur 2 dans mail 2 ... serait il possible d'avoir plutôt pièce joint xxx pour mail 1 / YYY pièce jointe pour mail 2 ...

Ce que je disais dans mon précédant mail ... la pièce jointe avec le nom du fournisseur ... Possible ?

Euhh ... Un Petit changement dans la demande ... Serait-il possible SVP de créer l 'email avec la bonne adress du Fournisseur si on a une table de référence dans une feuil du classeur source ?

xxxx --> email :

YYY --> email :

123--> email :

Avec si possible un corps de mail qui serait le même pour tout le monde : Bonjour, ci-joint le programme de la semaine prochaine"

Et donc il y a qu'à appuyer sur le bouton "envoyer"

BIG THANKS

Amicalement

H

Bonjour,

pour changer le nom du fichier il faut impérativement enregistrer celui-ci,

voici les modification, il y des chose à adapter.

Bonjour SabV

D'après le premier test ... nickel RAS ...

Je vais testé sur mon fichier de travail et je te tiens informé ... si c'est Ok je vais indiqué la résolution du besoin (cloturer )

MERCi INFINEMENt pour ta réactivité et ton support ... appreciate it

Bonne Journée

H

Bonjour SabV,

Possible d'avoir une explication sur les lignes de la macro car j'ai des soucis d'adaptation sur mon fichier de travail.

En faite ... le Fournisseur est placé dans la colonne B - de la feuil 1 et du coup mail ... et non plus Colonne A comme dans l'exemple de travail

MERCI !!

@++

voici la modification, j'ai indiqué les 2 changements dans la macro

Sub test_mail()
Set sh1 = Sheets("Feuil1")
Set sh2 = Sheets("mail")
'changement sur la ligne suivante
lastRow = sh1.Cells(Rows.Count, "B").End(xlUp).Row + 1

deb = 2
sh2.Activate

 For i = 3 To lastRow
  n = n + 1
   If sh1.Cells(i, 2).Value <> sh1.Cells(deb, 2).Value Then
   'changement sur la ligne suivante
    sh2.Range(sh2.Cells(2, 1).Address, sh2.Cells(n + 1, 4).Address).Value = sh1.Range(sh1.Cells(deb, "B").Address, sh1.Cells(i - 1, "E").Address).Value
    destinataire = Evaluate("INDEX(adresseMail!B:B,MATCH(A2,adresseMail!A:A,0))")
    deb = i

    sh2.Copy
    chemin = "C:\Users\xxxxxx\Documents\" 'à adapter
'    ActiveWorkbook.SaveAs Filename:=chemin & Range("A2") & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

'    recipients, subject, return_receipt
    Application.Dialogs(xlDialogSendMail).Show destinataire, "Bonjour, ci-joint le programme de la semaine prochaine", False

    ActiveWorkbook.Close SaveChanges:=False
    sh2.Range("A2:D" & sh2.Cells(Rows.Count, 1).End(xlUp).Row).ClearContents
    n = 0
   End If
 Next
End Sub

Bonjour SabV,

Je suis vraiment désolé, je sais que les modifs et les explications sont largement claires mais je n'arrive pas a adapter à mon fichier de travail que je te mets en pièce jointe !

Je suis vraiment bloqué malgré les changement que j'ai testé et sa BUG ... sinon, je l'aurais fait tt seul comme un grand

Il faut que j'ai toutes les colonnes de l'onglet JTN dans le fichier a envoyer par mail

En ce qui concerne le texte "Bonjour ... possible de le mettre plutot dans le corps du mail et non pas l'objet ?

Merci d'avance .... VRAIMENT MERCI

Bonjour hamila92,

voici la modification pour les fournisseurs en colonne "B" et les données débutant à la ligne 3,

ps/ pour mettre l'information dans le corps du message il faudrait utiliser Outlook ou autre que Application.Dialogs(xlDialogSendMail)

Bonjour SabV

Désolé pour cette réponse tardive, j'ai testé le fichier comme tu me l'as envoyé et ça marche à moitié

Il y a eu un bug et je n'arrive pas à le résoudre ...

En pièce jointe dans le fichier onglet JTN j'ai mis une copie d'ecran du message d'erreur !

Merci d'avance

Comme DAB, je sais qu'il y a que toi qui me supporte ... donc je compte sur ton retour

PS / s'a fonctionnait bien dans le fichier test mais dans le fichier travail BUG ... Moi aussi je BUG ...

@+ et bonne journée

Bonjour ,

modifie cette ligne,

destinataire = Evaluate("INDEX(adresseMail!B:B,MATCH(A2,adresseMail!A:A,0))")

pour celle-ci

destinataire = Evaluate("INDEX(adresseMail!B:B,MATCH(B3,adresseMail!A:A,0))")

Salut,

Super ! ça fonctionne ... et du coup pour que dans le mail j'ai :

"Bonjour "Bonjour, ci-joint le programme de la semaine prochaine" et pas dans Objet ... que dois je faire STP

Merci MERCI

Aussi, Possible de mettre une adresse en copie qui sera dans la liste des adresse email ...

c'est a dire colonne C : Nom et D: adresse email

Merci ... je sais que je demande beaucoup ... mais le besoin Evolu ... et je m'adapte :p

Bonjour,

comme je l'ai déjà dit, pour mettre l'information dans le corps du message il faudrait utiliser un autre Application,

ne connaissant pas ce que tu utilise comme application de mail, c'est difficile de répondre.

pour l'autre question tu peut mettre plusieurs d'adresse mail en autant que ceux-ci soient séparés par ";"

par exemple:

    destinataire1 = Evaluate("INDEX(adresseMail!B:B,MATCH(B3,adresseMail!A:A,0))")
    destinataire2 = Evaluate("INDEX(adresseMail!D:D,MATCH(B3,adresseMail!A:A,0))")
    destinataire = destinataire1 & ";" & destinataire2

Bonjour SabV

Merci pour ton retour ... t'assure

J'utilise Outlook ... donc comme je disais dans le fichier "test" ça marche mais pas dans le fichier de travail (ci-joint) :,(

Sinon, j'ai un petit changement qui ne serait pas très important pour toi, j'espère ...

Onglet référence pour les email à envoyer : S05

L'envoi du mail se fera par rapport a la colonne:

C : Fournisseur ==> Destinataire du mail

A : EXPL FLOTTE ==> copie du mail (c'est l'unique changement normalement avec l'ordre des colonnes)

Est-ce que c'est claire ?

Merci for your Help

@+

Sinon, j'ai un petit changement qui ne serait pas très important pour toi, j'espère ...

Onglet référence pour les email à envoyer : S05

au contraire ça change tous puisque les info entête de colonne ne sont plus au même endroit.

Hello SabV,

Ok ce n'est pas grave ! Je vais garder le même objectif de départ !

Tableau de référence c'est Planning ... Disant que ça va être la même chose sauf que la colonne "Fournisseur" change de B --> C

les emails : envoi à l'adresse principale colonne B + l'adresse en copie de mail de la colonne C et D --> Outlook la messagerie

J'ai réussi à adapter quelques modifs mais dans l'email il n'y a ni destinataire ni copie ... Tu peux me corriger ça stp !

Encore une fois désolé de t'avoir sollicité autant de fois ... mais je reconnais ton aide et ton soutien énormément

MERCI MERCI

Rechercher des sujets similaires à "creer feuil excelle valeur"