Discussion:
comment utiliser ALT-CTRL pour exécuter une macros sur le premier doc.
(trop ancien pour répondre)
pellet15
2020-04-26 15:02:29 UTC
Permalink
Bonjour à tous

J'ai un fichier(insp.xls) excel que j utilise sur un IPAD ,

je voudrait utiliser une Macros qui s'exécuterais a partir
d'un autre fichier Excel(Principal.xls) pour ne pas enregistrer
de Macros sur le Ipal.

La macros que j'ai fait:

Copier la page du fichier Excel en PDF et l'envoie par email.

Voici la Macros = Sub PrintPDF()
------------------------------------------

Function Printe(Row As Long, Colonne As Integer)
Dim name As String
Dim VV As String
If InStr(ActiveSheet.Range("E1"), "visuelle") > 0 Then
VV = "Visuelle"
Else
VV = "Détaillé"
End If
name = ActiveSheet.Range("B4") & " - " & ActiveSheet.Range("I9") & " - Inspection " & VV & " - " & ActiveSheet.Range("I2") & ".pdf"
ActiveSheet.ExportAsFixedFormat xlTypePDF, ActiveWorkbook.Path & "\" & name
End Function

Function SendEmail()
Dim oBjMail
Dim name As String
Dim name2 As String
Dim ObjOutlook As New Outlook.Application
name2 = ActiveSheet.Range("I9") & " - " & ActiveSheet.Range("B4") & " - Inspection " & VV & ActiveSheet.Range("I2")
Set ObjOutlook = New Outlook.Application
Set oBjMail = ObjOutlook.CreateItem(olMailItem)
If InStr(ActiveSheet.Range("E1"), "visuelle") > 0 Then
VV = "Visuelle"
Else
VV = "Détaillé"
End If
name = ActiveSheet.Range("B4") & " - " & ActiveSheet.Range("I9") & " - Inspection " & VV & " - " & ActiveSheet.Range("I2") & ".pdf"
If name = "" Then
Exit Function
End If
With oBjMail
.To = ActiveSheet.Range("F7")
.CC = ActiveSheet.Range("G9")
.BCC = ActiveSheet.Range("G10")
.Subject = name2
.Body = "Bonjour " & WorksheetFunction.Proper(ActiveSheet.Range("F5")) & Chr(10) & Chr(10) & "Voici le rapport du mois de " & Format(ActiveSheet.Range("I2"), "mmmm") & "." & Chr(10) & Chr(10) & "Salutations," & Chr(10) & Chr(10) & "Rail Cantech" & Chr(10) & "650, Boul. Lionel-Boulet" & Chr(10) & "Varennes (Québec), J3X 1P7" & Chr(10) & "T: 450-652-3010 #286" & Chr(10) & "F: 450-652-5250"
.Attachments.Add ActiveWorkbook.Path & "\" & name
.Display
End With
Set oBjMail = Nothing
Set ObjOutlook = Nothing
End Function

Sub PrintPDF()
Dim Colonne As Integer
Colonne = 13
Dim DernLigne As Long
DernLigne = Range("I" & Rows.Count).End(xlUp).Row
Call Printe(DernLigne + 1, Colonne)
Call SendEmail
End Sub

---------------------------------------
Merci
MichD
2020-04-26 16:54:13 UTC
Permalink
Bonjour,

J'ai un iPad, mais je ne sais pas si Excel sur cet iPad est capable de
Macro. Si c'est le cas, voici quelques explications sur la manière
d'appeler une macro d'un autre classeur qu'il soit ouvert ou fermé.


A )
Nom de la macro : "test1"
Si ton classeur est fermé et que la macro appelée se retrouve dans un
module standard :
Application.Run "'C:\Mes documents\Answer.xls'!test1"

Même chose, mais si le classeur est déjà ouvert :
Application.Run "Answer.xls!test1"

B ) Si le nom de ton classeur contient des espaces :

L'utilisation des apostrophes "'" permet d'utiliser
un nom de classeur contenant des espaces , sans
ces dernières, point de salut.

Classeur fermé
Dim LaMacro As String
LaMacro = "'" & "CheminEtNomClasseur.xls" & "'!test1"
Application.Run LaMacro

Le classeur ouvert ne nécessite pas d'inscrire le chemin du classeur.

C) Si la macro appelée est dans un module feuille du classeur au lieu
d'être dans un module Standard :

Dans la ligne de commande, tu dois insérer le nom de l'objet "Feuille"
que tu retrouves dans la fenêtre VBE (visual basic editor).
Dans la fenêtre de gauche de ton projet, la liste des feuilles est
affichée dans ce format : "toto"("Feuil4")
toto = Nom de l'onglet de la feuille
Feuil4 = Propriété Name de l'objet Feuille (worksheet)
Dans la commande suivante, tu dois utiliser le nom de la feuille et non
de l'onglet de la feuille

Si le fichier est ouvert :
Application.Run "modele.xls!Feuil4.test1"

Si le fichier est fermé :
Application.Run "'C:\Mes documents\Answer.xls'!Feuil4.test1"

MichD
pellet15
2020-04-26 20:23:42 UTC
Permalink
Post by MichD
Bonjour,
J'ai un iPad, mais je ne sais pas si Excel sur cet iPad est capable de
Macro. Si c'est le cas, voici quelques explications sur la manière
d'appeler une macro d'un autre classeur qu'il soit ouvert ou fermé.
A )
Nom de la macro : "test1"
Si ton classeur est fermé et que la macro appelée se retrouve dans un
Application.Run "'C:\Mes documents\Answer.xls'!test1"
Application.Run "Answer.xls!test1"
L'utilisation des apostrophes "'" permet d'utiliser
un nom de classeur contenant des espaces , sans
ces dernières, point de salut.
Classeur fermé
Dim LaMacro As String
LaMacro = "'" & "CheminEtNomClasseur.xls" & "'!test1"
Application.Run LaMacro
Le classeur ouvert ne nécessite pas d'inscrire le chemin du classeur.
C) Si la macro appelée est dans un module feuille du classeur au lieu
Dans la ligne de commande, tu dois insérer le nom de l'objet "Feuille"
que tu retrouves dans la fenêtre VBE (visual basic editor).
Dans la fenêtre de gauche de ton projet, la liste des feuilles est
affichée dans ce format : "toto"("Feuil4")
toto = Nom de l'onglet de la feuille
Feuil4 = Propriété Name de l'objet Feuille (worksheet)
Dans la commande suivante, tu dois utiliser le nom de la feuille et non
de l'onglet de la feuille
Application.Run "modele.xls!Feuil4.test1"
Application.Run "'C:\Mes documents\Answer.xls'!Feuil4.test1"
MichD
Bonjour MichD


cela ne fonctionne pas bien,
il fait un PDF de la mauvaise feuil dans le email...

J'airais aimer en premier ouvrir le classeur en arrière plan "numeros_1.xls"
(celui qui porte la macro)
et après avoir ouvert le classeur "numeros_2.xls" que je veut faire un PDF puis l'envoyé par email, utiliser une touche combiner assigner a la macro.

ce qui me donnerais le PDF du "numeros_2.xls"

Merci
MichD
2020-04-27 11:42:12 UTC
Permalink
Bonjour,

Voici un exemple de macro que tu peux copier dans le fichier qui doit
ouvrir un autre fichier Excel pour imprimer la feuille "Feuil1" du
fichier. Dans la procédure, tu peux choisir le nom de l'onglet que tu
veux imprimer. Le nom du fichier PDF sera imprimé dans le même
répertoire que le fichier original et avec le nom de la feuille de calcul.

Copie cette procédure dans le thisworkbook du classeur qui doit ouvrir
le fichier dont tu veux imprimer une de ces feuilles en PDF.

Dans la procédure, tu dois adapter le chemin et le nom du fichier à
ouvrir, ainsi que le nom de l'onglet de la feuille à imprimer en PDF.

'--------------------------------------------------
Private Sub Workbook_Open()
Dim File As String, Nfile As String
Dim Wk As Workbook

'Chemin + nom complet du fichier Excel
File = "E:\Documents\Excel\MonFichier.xlsm"

'Ouvre le fichier
Set Wk = Workbooks.Open(File)

'Extraire le chemin complet sans le nom du fichier
Nfile = Mid(File, 1, InStrRev(File, "\"))

'Enregistrement de la feuille "Feuil1" du classeur
'ce fichier portera le même nom de la feuille.

With Wk.Worksheets("Feuil1") 'Nom onglet Feuille à adapter
'Nouveau nom du fichier portant le nom de la feuille
'au format PDF enregistré dans le même répertoire
'du fichier original.
Nfile = Nfile & .Name & ".pdf"
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Nfile, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
End With
'Fermeture du classeur
Wk.Close
End Sub
'--------------------------------------------------

MichD

Loading...