Divers Macro (enregister et envoie par mail)

Résolu/Fermé
Cabrina
Messages postés
230
Date d'inscription
samedi 5 avril 2008
Statut
Membre
Dernière intervention
25 mai 2022
- 5 oct. 2015 à 14:29
Cabrina
Messages postés
230
Date d'inscription
samedi 5 avril 2008
Statut
Membre
Dernière intervention
25 mai 2022
- 8 oct. 2015 à 15:58
Bonjour,

Voilà j'ai modifier une macro mais je ne sais pas où ça bloque...

Le but de ma macro et de faire simultanément :
- Agrémenté mon n° de BL.
- Faire un enregistrer sous en format pdf.
- Faire un envoie par mail de mon pdf.
- Faire une sauvegarde dans mon historique.

Les parties en gras sont les partie qui fonctionne (J'ai fait ma macro progressivement donc je sais que cela fonctionne...)

Sub avec_imprimer_2_copies()
Sheets("Bon de Livraison").Range("N1").Value = Sheets("Bon de Livraison").Range("V1").Value
Sheets("Bon de Livraison").Range("V1").Value = Sheets("Bon de Livraison").Range("N1").Value + 1

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.SaveAs Filename:="C:\Users\DUPMA.MTR\Desktop\Test BL" & Range("A1").Value & ".pdf", _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Sub Envoie()
'
' Envoie Macro
'

'
ChDir "C:\Users\DUPMA.MTR\Desktop\Test BL"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\DUPMA.MTR\Desktop\Test BL\Nouveau BL Quai3.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub
With Sheets("Bon de Livraison")
Sheets("Historiques BL").[B65536].End(xlUp).Offset(1, 0) = .[N1].Value
Sheets("Historiques BL").[C65536].End(xlUp).Offset(1, 0) = .[H4].Value
.[H4].Value = ""
Sheets("Historiques BL").[D65536].End(xlUp).Offset(1, 0) = .[H3].Value
.[H3].Value = ""
Sheets("Historiques BL").[E65536].End(xlUp).Offset(1, 0) = .[P3].Value
End With
End Sub
Sub SEL()
Range("A31:IV65536").Select
End Sub

4 réponses

cs_Le Pivert
Messages postés
7752
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
711
5 oct. 2015 à 14:42
Bonjour,

Tu as oublié de répondre à ce post et en plus tu l'as mal recopié:

https://forums.commentcamarche.net/forum/affich-32597348-enregister-sous
0
Cabrina
Messages postés
230
Date d'inscription
samedi 5 avril 2008
Statut
Membre
Dernière intervention
25 mai 2022
2
5 oct. 2015 à 15:11
Je viens de vous poster votre réponse, quand je ne trouve pas ce que je cherche j'essaye par d'autres moyens.
Désolé de me pas avoir répondu plus tôt.
Mais je pensais que le problème ne venait pas de votre macro mais du tout.
0
cs_Le Pivert
Messages postés
7752
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
711
5 oct. 2015 à 15:25
Le problème c'est que tu as mis toutes les macros bout à bout. C'est pas comme cela que l'on procède. La macro d'enregistrement que je t'avais donné est à mettre dans ThisWorkbook:


Private Sub Workbook_BeforeClose(Cancel As Boolean) 
 ActiveWorkbook.SaveAs Filename:="C:\Users\DUPMA.MTR\Desktop\Test BL" & Range("A1").Value & ".pdf", _ 
 FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _ 
 ReadOnlyRecommended:=False, CreateBackup:=False 


Dans ce cas il ne faut pas mettre l'extension pdf.
Pour mettre l'extension pdf, ouvre l'enregistreur de macro et enregistre ton classeur en Pdf, tu auras ta macro

0
cs_Le Pivert
Messages postés
7752
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
711
5 oct. 2015 à 15:25
j'ai oublié End Sub
0
Cabrina
Messages postés
230
Date d'inscription
samedi 5 avril 2008
Statut
Membre
Dernière intervention
25 mai 2022
2
5 oct. 2015 à 15:37
J'ai réussi ça marche mais si je veux faire un envoie automatique par mail je le met ou du coup dans "ThisWorkbook" ou dans "Feuil1"
Comment le mettre en forme ?

Existe-il un document pour apprendre à faire des marcos !?!
0
cs_Le Pivert
Messages postés
7752
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
711 > Cabrina
Messages postés
230
Date d'inscription
samedi 5 avril 2008
Statut
Membre
Dernière intervention
25 mai 2022

5 oct. 2015 à 18:50
Tu mets ta macro Envoi dans ThisWorkbook et tu l'appelles comme ceci:

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
ta macro Envoi
ta macro enregistrer
End Sub
Sub envoi()
blabla
End Sub
0
Cabrina
Messages postés
230
Date d'inscription
samedi 5 avril 2008
Statut
Membre
Dernière intervention
25 mai 2022
2
5 oct. 2015 à 16:18
Extension c'est bien dans la ligne :
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _

Et je remplace en gras par xlPDF ?
0
cs_Le Pivert
Messages postés
7752
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
711 > Cabrina
Messages postés
230
Date d'inscription
samedi 5 avril 2008
Statut
Membre
Dernière intervention
25 mai 2022

5 oct. 2015 à 18:55
Cette extension n'existe pas: xlPDF!!!

La macro d'enregistrement est faite pour un classeur Excel et non un PDF

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
 ActiveWorkbook.SaveAs Filename:="C:\Users\DUPMA.MTR\Desktop\Test BL" & Range("A1").Value & ".xls", _ 
 FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _ 
 ReadOnlyRecommended:=False, CreateBackup:=False
End Sub 


As-tu fait ta macro avec l'enregistreur pour l'enregistrement en PDF?
0
cs_Le Pivert
Messages postés
7752
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
711
6 oct. 2015 à 11:25
Il ne suffit pas de changer l'extension pour enregistrer en PDF!

Si tu ne veux pas faire l'effort de te servir de l'enregistreur de macro, ce n'est pas moi qui vais le faire.

Je peux corriger la macro que tu vas obtenir avec l'enregistreur à la rigueur pour l'adapter à ton cas.

Il faut faire un petit effort. Si tu te contentes de faire des copier-coller, tu seras vite bloqué.

Sinon tu postes ton classeur sur C-joint en disant ce que tu veux obtenir, il y aura peut-être une âme charitable qui fera le travail pour toi.

Ce n'est pas dans ma conception pour apprendre le vba

Bon courage
0
Cabrina
Messages postés
230
Date d'inscription
samedi 5 avril 2008
Statut
Membre
Dernière intervention
25 mai 2022
2
6 oct. 2015 à 11:33
Il ne faut pas s'énerver ! Je fais mon possible ce n'est pas mon d 'job !
Si je ne veux pas faire l'effort pourquoi me réponde vous sur ce ton !?!
J'essaye juste de faire ce que mon supérieur me demande, désolé de ne pas être du métier...
Merci tout de même de m'avoir apporté tant de temps pour les conseils que j'ai pu demander, je vais dès maintenant essayer de me dépatouiller dans toute cette merde (pardonné mon expression)
Cdlt,
0
Cabrina
Messages postés
230
Date d'inscription
samedi 5 avril 2008
Statut
Membre
Dernière intervention
25 mai 2022
2
6 oct. 2015 à 12:29
Si une bonne âme charitable peut m'aider car là je suis perdu !

Ce que je cherche c'est comme dit au-dessus :

"le but de ma macro est de faire simultanément :
- agrémenté mon n° de BL.
- Faire un enregistrer sous en format PDF.
- Faire un envoi par mail de mon PDF.
- Faire une sauvegarde dans mon historique."

Le pivert m'a donné de bons conseils mais je n'arrive pas à le mettre en exécution il doit y avoir quelques choses que je ne comprends pas ou que je n'arrive pas à faire (je ne prends peut-être pas le temps de le faire correctement également je ne sais pas...)

Ci-après mon fichier:
https://www.cjoint.com/c/EJgkyChTYXi

Un grand merci par avance à la personne qui pourra m'aider...
0
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
6 oct. 2015 à 14:21
Bonjour Cabrina,

80% du temps, je ne sais pas comment faire les trucs en Excel.
Je prend l'enregistreur de macro, et je fais un truc, je regarde le code, et je google les mots clef.

Je prend un fichier excel, je fais "Enregistrer une macro".
Ensuite, je fais fichier -> enregistrer sous,
Je choisi le format PDF, et j'enregistre le fichier en PDF.
Je retourne dans l'onglet développement, et je fais arreter l'enregistrement.

Bon, ensuite je vais dans l'éditeur visual basic, et voici le code enregistré.
Sub Macro1()
'
' Macro1 Macro
'
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\temp\Classeur1.pdf", Quality:=xlQualityStandard, IncludeDocProperties _
        :=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub


Après, il faut développer des réflexes de programmation.
Il faut savoir ce qu'est un objet, une méthode, et ce qu'est un paramêtre.

Pour mon objet Activesheet, j'appelle la méthode ExportAsFixedFormat.
Et je lui passe les paramêtre Type, Filename, etc.

La prochaine étape GOOGLE !

Tu tappes VBA suivi des termes.

Exemple VBA ExportasFixedformat
Je trouve
https://docs.microsoft.com/en-us/office/vba/api/Excel.Workbook.ExportAsFixedFormat

Et je lis, ca donne une explication de tout les paramêtre et de leur différente valeur possible.

Ensuite, je cherche encore sur google pour trouver des exemple de code, et ensuite essai erreur.

Et quand je tombe dans un cul de sac, je reviens sur comment ca marche et je met ou je suis rendu avec mon code.

Donc avec l'enregistreur de macro, google et du temps, de la patience et malheureusement des réflèxes de programmation, tu peux pas mal tout faire.

Le plus dur c'est d'apprendre ce qu'est un objet (habituellement les mots qui précède un point), et ce qu'est une méthode (habituellement ce qui a après le dernier point)
0
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
Modifié par PlacageGranby le 6/10/2015 à 14:33
Autre conseil,
L'enregistreur de macro n'a pas de cerveau.
Il reproduit exactement TOUT ce qui est fait.
Si tu clic sur un onglet, si tu clique dans la feuille, il va t'écrire le code pour toutes ces actions et ca devient difficile de s'y retrouver.

Si tu as besoin de faire plusieurs choses, fait quand même un truc à la fois pour avoir le moins de code possible écrit par l'enregistreur.
Cela permet plus facilement d'identifier quelle ligne de code fait quoi.

Tu veux faire 4x trucs, tu fais 4x enregistrements.

On apprend beaucoup en regardant des exemples, on cherche du code sur internet qu'on copie. Et Essai erreur... essai erreur.
Ca ne fonctionne pas, on google le mot clef, on chercher les paramêtres et les valeurs possible.
Ca ne marche pas ? On recommence google avec notre question précédé de VBA.
On trouve d'autre exemple de code, on re-google les mots clef pour voir encore plus d'exemple et encore plus de paramêtre.

Ta réponse est quelque part sur internet, ca c'est sûr, tu n'est probablement pas la première personne qui veut envoyé un PDF par courriel.

Tu peux aussi avoir de la chance et trouver quelqu'un qui va coder ton fichier excel pour toi. Mais sache que si ton Boss demande une modification, tu ne pourras pas la faire et le bon samaritain ne sera peut-être plus là. Donc il est crucial de comprendre le code, et la seule façon, c'est de se retrousser les manches et d'essayer d'en faire le plus possibls soi-même
0
Cabrina
Messages postés
230
Date d'inscription
samedi 5 avril 2008
Statut
Membre
Dernière intervention
25 mai 2022
2
6 oct. 2015 à 14:47
Bonjour,

Un grand merci pour votre message réconfortant !

Je suis entiérement d'accord avec vous, chaque chose en sont temps.

Pour le moment je bloque sur l'enregistrement de mon fichier en PDF « Le Pivert » m'a indiqué une macro pour faire mon enregistrement qui fonctionne très bien mais je veux faire la modifications sur les deux partie en gras :


Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.SaveAs Filename:="C:\Users\....\Documents\" & Range("A1").Value & ".xls", _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
End Sub


La première OK .pdf
La deuxième FileFormat je ne sais pas quoi mettre, j'avais trouvée xlPDF, xlTypepdf mais rein ne fonctionne et je ne sais plus comment faire...

Mon PDF se crée mais je ne peux pas l'ouvrir.
0
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
6 oct. 2015 à 14:53
Bonjour Cabrina,

La réponse est dans mon exemple.
Saveas permet d'enregistrer un fichier excel.

PDF ce n'est pas du excel, donc le fichier est "converti" et non pas seulement enregistré.
Donc ce ne sera pas SaveAs, mais ExportAsFixedFormat

C'est avec l'enregistreur de macro que j'ai découvert cela en enregistrant en format PDF.
0
Cabrina
Messages postés
230
Date d'inscription
samedi 5 avril 2008
Statut
Membre
Dernière intervention
25 mai 2022
2
6 oct. 2015 à 15:00
Je viens donc de changer mon SaveAs par ExportAsFixedFormat effectivement quant je le fait manuellement j'ai ça également.
Par contre je n'ai pas d'enregistrement de fichier et ça me surligne "Private Sub Workbook_BeforeClose(Cancel As Boolean)"
0