Microsoft 365 Envoi plage de cellules d'une feuille excel par mail en renommant le fichier envoyé

Huggy22

XLDnaute Nouveau
Bonjour à tous.

Dans le fichier ci-joint, je parviens à envoyer une feuille de mon classeur excel via outlook. Mais je rencontre deux petits soucis : j'aimerai envoyer uniquement les cellules A01:H35 dans un fichier excel et je souhaiterai que le fichier envoyé porte le nom de la cellule B3.

D'avance merci et bonne journée !
 

Pièces jointes

  • BCI (1).xlsm
    370.3 KB · Affichages: 3
Dernière édition:
Solution
Bonjour

Feuille.Copy ne crée un classeur que si vous ne spécifiez pas de plage de cellule, la feuille entière est alors créée comme première feuille du classeur.

Si vous voulez copier une plage de cellule, il vous faut d'abord créée le classeur.
VB:
Sub Image4_Cliquer()
'
' Image4_Cliquer Macro
'
    Dim wk As Workbook
    Dim Adr As String 'Adresse
    Dim T As String 'L'objet du message
    Adr = "maurice.bejart@hotmail.com"
    T = "Commande " & Range("B3")
    
    'Création d'un classeur qui recevra la copie de la plage de cellule
    Set wk = Workbooks.Add()
    ' Copier la plage de cellule de la feuille BCI de ce classeur
    ' vers la première feuille du nouveau classeur
    ThisWorkbook.Sheets("BCI").Range("A1:H35").Copy...

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour

Feuille.Copy ne crée un classeur que si vous ne spécifiez pas de plage de cellule, la feuille entière est alors créée comme première feuille du classeur.

Si vous voulez copier une plage de cellule, il vous faut d'abord créée le classeur.
VB:
Sub Image4_Cliquer()
'
' Image4_Cliquer Macro
'
    Dim wk As Workbook
    Dim Adr As String 'Adresse
    Dim T As String 'L'objet du message
    Adr = "maurice.bejart@hotmail.com"
    T = "Commande " & Range("B3")
    
    'Création d'un classeur qui recevra la copie de la plage de cellule
    Set wk = Workbooks.Add()
    ' Copier la plage de cellule de la feuille BCI de ce classeur
    ' vers la première feuille du nouveau classeur
    ThisWorkbook.Sheets("BCI").Range("A1:H35").Copy wk.Sheets(1).Range("A1")
    ' Pour éviter les différents message (enregistrement sans macro etc.)
    Application.DisplayAlerts = False
    wk.SaveAs ThisWorkbook.Path & "\" & T & ".xlsx", 51
    Application.DisplayAlerts = True
    
    Application.Dialogs(xlDialogSendMail).Show Adr, T
End Sub
 

Pièces jointes

  • BCI (1).xlsm
    368.9 KB · Affichages: 3

Huggy22

XLDnaute Nouveau
Désolé de revenir vers vous, mais j'ai parfois un message d'erreur (voir capture d'écran). D'autre part, existe-t-il une commande pour conserver la largeur des colonnes ?

Merci,
Bien cordialement.
 

Pièces jointes

  • Capture d’écran 2023-02-09 162223.jpg
    Capture d’écran 2023-02-09 162223.jpg
    15.4 KB · Affichages: 11

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

votre message d'erreur provient certainement de la construction de votre nom de fichier.
Je ne peux pas ni deviner ni vous dire plus comme ça.
Pour la deuxième question, elle ne rentre pas dans le cadre de cette discussion.
Terminez cette discussion en résolvant son problème puis éventuellement recréez en une autre pour l'autre question.
 

Huggy22

XLDnaute Nouveau
Désolé de revenir vers vous, mais j'ai parfois un message d'erreur (voir capture d'écran). D'autre part, existe-t-il une commande pour conserver la largeur des colonnes ?

Merci,
Bien cordialement.
Je crois que l'erreur provient lorsque la référence du classeur excel créé existe déjà. Est-il possible de supprimer la copie du fichier excel sur mon disque C après envoi du mail ?

Bien à vous,
 

Discussions similaires

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 183
dernier inscrit
angelique76120