Questions pour modification/amélioration d'une macro

Sassy

XLDnaute Nouveau
Bonjour,

A force de recherches et de multiples essais, j'ai réussi à composer une macro qui réponde (presque) à mes besoins mais j'ai quelques soucis pour la finaliser.

Dans le fichier en attachement, j'ai quelques problèmes avec la macro "Generation_Mail"

Dans la partie "copie de la feuille recap : il y a t'il un moyen ne pas copier les lignes et colonnes qui sont masquées ?

Dans la partie "Sauvegarde de la feuille Envoi : mon fichier se sauve mais les espaces dans le nom du fichier sont remplacés par des %20, comment résoudre ce problème ?

Dans la partie "Préparation du mail" : ça bloque sur l'attachement mais je crois que c'est dû au problème des %20 lors de la sauvegarde du fichier ..

Merci d'avance de votre aide et de vos bons conseils :)

Sass
 

Pièces jointes

  • SASSY.xlsm
    255 KB · Affichages: 34
  • SASSY.xlsm
    255 KB · Affichages: 29

Staple1600

XLDnaute Barbatruc
Re : Questions pour modification/amélioration d'une macro

Bonjour à tous

Sassy
Merci d'avance de votre aide et de vos bons conseils :)
Ce matin, je vais plutôt verser dans le conseil, ou plutôt les conseils ;)
-éviter autant que faire se peut le recours au Select et autre Activate
-abuser des endives (pour les non-initiés, chez moi endives = With/End With)
(je le laisse juge de leurs qualités)

Et à l'heure du petit déjeuner, j'ai récrit ton code à ma sauce
(attention aux miettes de croissants ;))
NB: j'ai ajouté quelque chose pour cette histoire d'espace
VB:
Sub Generation_mail_BIS()Dim nom_fichier$, m As Worksheet
Application.ScreenUpdating = False
'Effacement et création de la feuille envoi pour repartir de 0
Application.DisplayAlerts = False
Sheets("ENVOI").Delete
Application.DisplayAlerts = True
Sheets.Add.Name = "ENVOI"
'Copie de la feuille recap mais pas les formules
Sheets("RECAP").Range("4:200").Copy
With Sheets("ENVOI").Range("a1")
.PasteSpecial -4163: .PasteSpecial 8: .PasteSpecial Paste:=-4122
.Application.CutCopyMode = False
End With
'sauvegarde de la feuille Envoi
nom_fichier = ActiveWorkbook.Path & "\" & Sheets("ENVOI").Range("B1").Text & ".xlsx"
'ci-dessous nomfichier sans espaces
'nom_fichier = ActiveWorkbook.Path & "\" & Replace(Sheets("ENVOI").Range("B1").Text, Chr(32), vbNullString) & ".xlsx"
Sheets("ENVOI").Copy
With ActiveWorkbook
.SaveAs nom_fichier, 51
.Close False
End With
'Préparation du mail
Set m = Sheets("MAIL")
With CreateObject("outlook.application").CreateItem(0)
    .to = m.[c1].Text: .cc = m.[c3].Text
    .Subject = m.[c5].Text
    .Body = m.[c7].Text
    .Add nom_fichier
    .Display
End With
Application.ScreenUpdating = True
End Sub
 

Sassy

XLDnaute Nouveau
Re : Questions pour modification/amélioration d'une macro

Bonjour,

Un tout grand merci pour ton aide et désolée de répondre un peu tard. J'essayerai de me souvenir de tes conseils pour mes prochaines macros bien que souvent, par manque de connaissances, je me contente de prendre des bouts de code à droite et à gauche et de les adapter :)

Sassy
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
353
Réponses
12
Affichages
279

Statistiques des forums

Discussions
312 389
Messages
2 087 898
Membres
103 675
dernier inscrit
axona