XL 2010 MACRO - VBA - ENREGISTREMENT AVEC NOM CELLULE ET DATE DU JOUR

elisa1507

XLDnaute Nouveau
Bonjour à tous,

Je me présente, ELISA, étudiante en ressources humaines

Dans le cadre de mon contrat d'alternance, on me demande d'améliorer une fiche Excel.
Cependant, mes connaissances arrivent à bout et j'ai vraiment besoin d'aide.

Je m'explique, mon tuteur aimerais que la fiche incident s'envoie sur une adresse mail , s'imprime et s'enregistre par une macro automatiquement sur le bureau en PDF avec comme nom la désignation de l'installation (cellule m14) et la date du jour.

J'ai beaucoup travaillé sur le sujet avant de demander de l'aide. J'ai réussi à créer l'envoie, l'impression puis dans un autre bouton j'ai crée l'enregistrement en PDF. Seulement mon tuteur, souhaiterais que cela se fasse en seul bouton.
Pouvez -vous m'aider ?

Ensuite, j'ai réussi l'enregistrement en PDF avec pour titre la cellule M14 mais je n'arrive pas à insérer également la date du jour.
Est-ce possible avec la fonction aujourd'hui ?

Vous trouverez ci-joint le ficher.

Je vous remercie d'avance de m'avoir lu et surtout pour votre éventuelle aide.

J'espère avoir été claire sur ma demande

Bonne journée a tous,

Elisa
 

Pièces jointes

  • Copie de CSub Enregistre().xlsm
    74.5 KB · Affichages: 68

Jauster

XLDnaute Occasionnel
Salut Elisa,
Je n'ai pas encore regardé précisément le fichier, mais c'est en cours. Une première solution, très simple, serait de créer une nouvelle macro, et de CALL toutes tes macros dans l'ordre que tu souhaites avoir. Puis tu assignes la nouvelle macro au bouton.

Ex :

VB:
Sub Main

Call Macro1 'première macro à s’exécuter
Call Macro2 'se lance après la fin de la macro1
Call Macro3 'se lance après la fin de la macro2

End Sub
 

Lone-wolf

XLDnaute Barbatruc
Bonjour à tous :)

@elisa1507 : Dans la macro de l'enregistrement PDF ajoute ceci

VB:
Sub EnrPDF()
Dim a$, nom$, dt As Date

' Sauvegarder la feuille en PDF
  Application.ScreenUpdating = False
  a = ActiveSheet.Name  'Ou à changer avec ActiveSheet.Range("m14").Value
  dt = Date
  nom = a & " " & "du " & dt
  ActiveSheet.Copy

  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
  ThisWorkbook.Path & "\" & nom & ".pdf", Quality:=xlQualityStandard, _
  IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
  True
  ActiveWorkbook.Close False
End Sub
 
Dernière édition:

Jauster

XLDnaute Occasionnel
Salut Lone-Wolf, re Elisa

Pour personnaliser la date et avoir plus d'information voici une autre méthode :

Déclarer la variable & la définir :
VB:
Dim madate as String

madate = "_" & Day(Now()) & "_" & Month(Now()) & "_" & Year(Now())

Si tu souhaites également afficher l'heure il faudra utiliser :
VB:
madate = "_" & Day(Now()) & "_" & Month(Now()) & "_" & Year(Now()) & "_" & Hour(Now()) & "_" & Minute(Now()) & "_" & Second(Now())

Au moment de l'enregistrement du fichier, y intégrer notre nouvelle variable

VB:
.SaveAs Filename:=ThisWorkbook.Path & "/" & Range("M14") & madate, FileFormat:=xlOpenXMLWorkbook
 

elisa1507

XLDnaute Nouveau
Bonjour,

Merci à tous les deux pour votre aide !

@Lone-wolf , j'ai ajouter dans la macro " = date " après le nom de la cellule.
Et la phrase est devenu rouge dans la macro. Est-ce normal ?
Pouvez -vous regarder ?

Je suis désolé mais je ne maitrise pas du tout Excel sur les macro

Dim a$
'a$ = ActiveSheet.Name
a$ = Range("M14")= date.Value
ChDir ThisWorkbook.Path
ActiveSheet.Select
 

elisa1507

XLDnaute Nouveau
j'ai copié votre code, dans la macro d'enregistrement
ce qui donne :

Sub EnrPDF()
Dim a$, nom$, dt As Date

' Sauvegarder la feuille en PDF
a = ActiveSheet.Name
dt = Date
nom = "Fichier_ " & a & " " & dt
ActiveSheet.Copy

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & nom & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
ActiveWorkbook.Close False
End Sub


Sub EnrPDF()
'
' EnrPDF Macro
' Sauvegarder la feuille en PDF

Dim a$
'a$ = ActiveSheet.Name
a$ = Range("M14").Value
ChDir ThisWorkbook.Path
ActiveSheet.Select

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\Fichier_" & a$ & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
End Sub

Ce pense que je peux supprimer la deuxième partie ? C'est de la répétition, c'est ca ?

Quand je quitte l'onglet développeur et que j'essaye le bouton enregistrer, un message d'erreur s'affiche :
erreur de compilation
nom ambigu détecté : EnrPDF

pouvez-vous m'aider ?

il est vrai que lorsque j'enregistre avec le bouton le nom est fichier puis la désignation de l'installation (cellule M14). j'aimerais enlever ficher du nom de document et ajouter la date du jour devant la désignation. Est-ce possible ?

Encore une fois, je suis novice en Excel et je maitrise seulement les fonctionnalité de base (tri, filtre, recherchev, liste déroulante, fonction si ...). Je découvre les macro par le biais de mes recherches mais je pense que je ne comprend pas du tout. Merci pour votre aide
 

Jauster

XLDnaute Occasionnel
Re,

Plusieurs points :
- Lorsque tu utilises $ pour déclarer la variable, il s'agit d'une abréviation pour String. Donc Dim a$ équivaut à Dim a as String. Dès lors, a$ = .Name est faux puisque ta variable est "a" et non "a$". Il faudra donc écrire a = ActiveSheet.Name
- Il y a une erreur parce que 2 macros ont le même nom.
- Pour changer le nom du fichier, il suffit de retirer "Fichier_" lorsque tu attribues une valeur à nom et de changer l'emplacement de Date. La ligne de code devrait ressembler à ça :
VB:
nom =  dt & " " & a

Et enfin, la deuxième macro EnrPDF peut effectivement être supprimée.

PS : Si je peux me permettre, il serait plus intéressant pour toi de regarder quelques cours en ligne sur les bases du VBA (Variables, Conditions, Boucles, procédures...). Ca t'aidera vraiment par la suite, et ce n'est jamais perdu
 

Discussions similaires

Statistiques des forums

Discussions
315 132
Messages
2 116 583
Membres
112 797
dernier inscrit
zouzou50