Compiler plusieurs requetes en une seule macro

lilicoco

XLDnaute Nouveau
Bonjour

J'ai plusieurs tâches que je souhaite compiler en une seule macro, étant vraiment novice en VBA je me heurte à de gros problèmes de syntaxe et de cohérence d'arguments. J'ai vraiment besoin d'automatiser un document professionnel et je ne sais comment y parvenir.

Voici ma requête:

J'ai un classeur qui se nomme initialement "MATRICE"
Lorsqu'il est complété, je récupère alors dans une cellule concaténée (ici elle se trouve en $P$5), le nom sous lequel je voudrais que ce classeur soit enregistré

Idéalement, je souhaite qu'en cliquant sur un bouton (je sais faire et y affecter une macro), que :

1 - Ce classeur s'enregistre automatiquement sous la valeur figurant dans la cellule $P$5
2- que cet enregistrement s'effectue dans un répertoire défini que j'appellerai "SUIVI" et qui serait dans "Mes documents".
3- Qu'un mail soit envoyé à une ou plusieurs personnes via Outlook, avec en pièce jointe le classeur renommé selon la ligne 1 ci-dessus
4- Que l'objet du mail soit le nom de ce classeur
5- Qu'un petit texte standard figure dans le mail

je m'en remets aux experts d'Excel ....

Merci d'avance pour votre aide
 

Staple1600

XLDnaute Barbatruc
Re : Compiler plusieurs requetes en une seule macro

Bonsoir à tous

lilicoco
Ce ne sont pas les exemples qui manquent dans les archives du forum concernant les point 1 et 2.
(accessibles en cliquant en haut à droite sur la loupe et en faisant une recherche avec des mots-clés judicieusement choisi)
Le point 3 lui aussi trouvera de nombreux exemples sur le forum.
Les point 4 et 5 ont eux aussi (à la réflexion) déjà été abordés sur le forum.

Mon aide de ce soir est donc une invitation à mettre un peu les mains dans le cambouis, jeune padawan, en commençant par nous joindre un fichier exemple anonymisé.

Pour une énième fois, c'est au demandeur de poster un fichier exemple
.(surtout qu'il existe déjà l'original sur le HD de celui-ci) :rolleyes:

Je reviendrai t'aider plus avant quand je verrai ta PJ avec les essais que tu n'auras pas manqué de faire (fruit de tes recherches dans les archives du forum)
 

lilicoco

XLDnaute Nouveau
Re : Compiler plusieurs requetes en une seule macro

Bonsoir Staple

Merci d'avoir laissé un message, mais des recherches cela fait 3 jours que j'en fait ... enregistrement automatique sous une valeur de cellule, j'ai réussi, mais le choix du répertoire et le mail automatique, bug systématiquement, message erreur d'indice, erreur 404 ou que sais je
Je n'ai aucune base en VBA et je tâtonne cherchant à en comprendre la logique, mais je bute sur les pb de syntaxe qui me sont totalement étrangers.
En postant ce message, ce n'était pas une intention de "faire au plus simple", car j'ai souvent recours aux forums (heureusement qu'ils existent et merci à ceux qui les font vivre), pour obtenir le plus souvent la réponse que j'attends.
On va dire que c'est une bouteille à la mer ... j’espérais qu'elle ne fasse pas naufrage

Merci
 

Staple1600

XLDnaute Barbatruc
Re : Compiler plusieurs requetes en une seule macro

Re

Donc pas de fichier exemple à nous fournir pour voir où tu en es?
Va donc falloir que j'en crée un pour éviter que tu sombres dans la mélancolie.
(j'espère que mon café va pas refroidir pendant ce temps-là ;))
 
Dernière édition:

lilicoco

XLDnaute Nouveau
Re : Compiler plusieurs requetes en une seule macro

Par cette météo ingrate, je m'en voudrais de te laisser ingérer un breuvage à peine tiède :)

voici un exemple de fichier

Merci de veiller tard .... même avec un café :)

Heu ... je ne trouve pas comment insérer un fichier (c'est peut-moi qui ai besoin d'un café ):eek:
 

Pièces jointes

  • MATRICE.xlsx
    11.5 KB · Affichages: 45
  • MATRICE.xlsx
    11.5 KB · Affichages: 43
  • MATRICE.xlsx
    11.5 KB · Affichages: 42
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Compiler plusieurs requetes en une seule macro

Re

Voici déjà pour les points 1 et 2 (test OK sur mon PC)
Code:
Sub bouteille_a_la_mer()
Dim chemin$, nomFic$
Dim objShell
   
Set objShell = CreateObject("Wscript.Shell")
chemin = objShell.SpecialFolders("MyDocuments") & "\SUIVI\"
nomFic = Sheets("MATRICE").Range("P5")

If Not Len(nomFic) Then
ActiveWorkbook.SaveAs chemin & nomFic, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End If
End Sub
Je te laisse tester sur ton PC.
 

Staple1600

XLDnaute Barbatruc
Re : Compiler plusieurs requetes en une seule macro

Re

Le café est bu.
Juste pour te dire que les fichiers contenant des macros doivent avoir l'extension *.xlsm (ou *.xls)
Je vois que tu as su joindre ton fichier.
Je vais le voir de ce pas.

PS: tu as testé mon code du message #6 ?
 

lilicoco

XLDnaute Nouveau
Re : Compiler plusieurs requetes en une seule macro

Woww merci, c'est rapide

faudra me donner la marque du café :)

hélas j'ai une erreur d’exécution "9" l'indice n'appartient pas à la sélection (autant dire qu'il me faudrait une Pierre de Rosette) pour en comprendre le sens ...

PS fichier avec macro joint (maintenant que je sais le faire ...;)
 

Pièces jointes

  • MATRICE.xlsm
    17.5 KB · Affichages: 40
  • MATRICE.xlsm
    17.5 KB · Affichages: 44
  • MATRICE.xlsm
    17.5 KB · Affichages: 40
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Compiler plusieurs requetes en une seule macro

Re


Je viens de relire ton premier message
et me suis apercu que j'ai fait une erreur dans mon code (c'est le classeur qui s'appelle MATRICE pas la feuille)
Donc il faut changer cette ligne comme ceci:
nomFic = Sheets("Feuil1").Range("P5")

PS: La suite demain, car je dois aller au dodo.
Car il me faudra être frais et dispos pour le boulot demain.
Grosse journée en perspective.
D'autres insomniaques du forum viendront peut-être t'aider tout en écoutant Message in a bootle de Police pendant que je serai dans les bras de Morphée.
 
Dernière édition:

lilicoco

XLDnaute Nouveau
Re : Compiler plusieurs requetes en une seule macro

Désolée malgré la dernière modif cela ne fonctionne pas

je crois qu'il s'agit d'un bug au niveau du répertoire d'enregistrement, il est bien spécifié que celui ci se trouve dans mes documents\suivi... mais je viens de vérifier ce répertoire n'existe pas, et le doc sous le nom de la cellule P, non plus

pas évident ma demande, je le concède
 

Pièces jointes

  • MATRICE.xlsm
    18 KB · Affichages: 41
  • MATRICE.xlsm
    18 KB · Affichages: 45
  • MATRICE.xlsm
    18 KB · Affichages: 37

Staple1600

XLDnaute Barbatruc
Re : Compiler plusieurs requetes en une seule macro

Bonjour à tous

lilicoco
J'ai présumé que le répertoire SUIVI existait dans Mes Documents
(d'ailleurs j'ai crée un répertoire SUIVI avant de lancer ma macro de test)
Donc normalement si tu crées un dossier SUIVI dans Mes Documents, le code que je t'ai soumis dois fonctionner.
C'est ce qui se passe chez moi.
 

Staple1600

XLDnaute Barbatruc
Re : Compiler plusieurs requetes en une seule macro

Re

Avant d'aller sous la douche et de partir au taf, voici une dernière mouture que je te laisse tester
Code vb:
Sub Bouteille_a_la_merII()
'Déclarations des variables
Dim chemin$, nomFic$
Dim objShell
Dim OutApp As Object, OutMail As Object

'On détermine le répertoire de sauvegarde et le nom du fichier
Set objShell = CreateObject("Wscript.Shell")
chemin = objShell.SpecialFolders("MyDocuments") & "\SUIVI\"
nomFic = Sheets("MATRICE").Range("P5")

'On sauvegarde si P5 n'est pas vide
If Not Len(nomFic) > 0 Then
ActiveWorkbook.SaveAs chemin & nomFic, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End If

' Partie du code dédiée à l'envoi du mail
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

On Error Resume Next
With OutMail
.To = "email.destinaire@bouteillealamer.com"
.Subject = "Message in a bottle"
.Body = "Ici le petit texte qui va bien"
.Attachments.Add ActiveWorkbook.FullName
.Send 'On peut mettre aussi à la place de .Send .Display[/SUB]
End With
On Error GoTo 0
'On purge la mémoire
Set objShell = Nothing
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
 

lilicoco

XLDnaute Nouveau
Re : Compiler plusieurs requetes en une seule macro

Merciiiiiiiiiiiiiiiiiiiiii c'est quasi parfait

J'ai juste modifié (Nomfic) car j'avais un message d'erreur (tu me l'avais corrigé précédemment)

Mais le fichier ne s'enregistre pas sous la valeur de P5, ni même dans le répertoire SUIVI
ai je mal recopié la macro ?

Merci encore de ton aide, c'est vraiment gentil

Sub Bouteille_a_la_merII()

Dim chemin$, nomFic$
Dim objShell
Dim OutApp As Object, OutMail As Object


Set objShell = CreateObject("Wscript.Shell")
chemin = objShell.SpecialFolders("MyDocuments") & "\SUIVI\"
nomFic = Sheets("Feuil1").Range("P5")


If Not Len(nomFic) > 0 Then
ActiveWorkbook.SaveAs chemin & nomFic, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End If


Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

On Error Resume Next
With OutMail
.To = "robinson.crusoe@vendredi.fr"
.Subject = "Message in a bottle"
.Body = "Ici le petit texte qui va bien"
.Attachments.Add ActiveWorkbook.FullName
.Display [/SUB]
End With
On Error GoTo 0

Set objShell = Nothing
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
 

Pièces jointes

  • MATRICE.xlsm
    19.4 KB · Affichages: 40
  • MATRICE.xlsm
    19.4 KB · Affichages: 42
  • MATRICE.xlsm
    19.4 KB · Affichages: 45

Staple1600

XLDnaute Barbatruc
Re : Compiler plusieurs requetes en une seule macro

Bonjour à tous

lilicoco
Désolé une faute d'inattention de ma part.
Il faut quand tu lances la macro que le fichier qui la contient soit enregistré en *.xlsm
NB: Bien évidemment le répertoire SUIVI existe dans Mes Documents)
(Je viens de retester sur mon PC et cela fonctionne)
Code vba:
Sub Bouteille_a_la_merIII()
'Déclarations des variables
Dim chemin$, nomFic$
Dim objShell
Dim OutApp As Object, OutMail As Object

'On détermine le répertoire de sauvegarde et le nom du fichier
Set objShell = CreateObject("Wscript.Shell")
chemin = objShell.SpecialFolders("MyDocuments") & "\SUIVI\"
nomFic = Sheets("Feuil1").Range("P5").Text

'On sauvegarde si P5 n'est pas vide
If Len(nomFic) > 0 Then
ActiveWorkbook.SaveAs chemin & nomFic, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End If

' Partie du code dédiée à l'envoi du mail
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

On Error Resume Next
With OutMail
.To = "email.destinaire@bouteillealamer.com"
.Subject = "Message in a bottle"
.Body = "Ici le petit texte qui va bien"
.Attachments.Add ActiveWorkbook.FullName
.Send 'On peut mettre aussi à la place de .Send .Display[/SUB]
End With
On Error GoTo 0

'On purge la mémoire
Set objShell = Nothing
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
 
Dernière édition:

Discussions similaires

  • Question
XL pour MAC mise en forme
Réponses
2
Affichages
96

Statistiques des forums

Discussions
312 164
Messages
2 085 877
Membres
103 008
dernier inscrit
Ichaka