Appeler macro à partir d'une autre

Bonjour le forum

Je voulais savoir si c'est possible d'appeler les macros ci-dessous à partir d'autres macros contenu dans module ou feuille.

1ère macro : Call imprimer_fichier_PE

2è macro : thisworkbook.mail_workbook_1

Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String _
    , ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Sub Imprimer_Fichier_PE()
    Dim NomFichier As String
    Dim x As Long

    x = FindWindow("XLMAIN", Application.Caption)
    NomFichier = "C:\SGIIOC\conditions générales PE.pdf"

    ShellExecute x, "print", NomFichier, "", "", 1
End Sub

2è macro:

Sub Mail_Workbook_1()
' Works in Excel 2000, Excel 2002, Excel 2003, Excel 2007, Excel 2010, Outlook 2000, Outlook 2002, Outlook 2003, Outlook 2007, Outlook 2010.
' This example sends the last saved version of the Activeworkbook object .
    Dim OutApp As Object
    Dim OutMail As Object
    Dim texte As String
    Dim I As String

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    I = Range("B29").Value

    On Error Resume Next

    With OutMail
        .To = Range("b29").Value
        .CC = ""
        .BCC = ""
        .Subject = "Bienvenue dans votre Entreprise"
        .Body = texte
        .Attachments.Add ("C:\users/benzoplus/desktop/lm bad.pdf")

        ' In place of the following statement, you can use ".Display" to
        ' display the mail.
        .Send
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing

End Sub

Erreur de postage. 1er message supprimé.

Rajout : Je ne comprends pas bien ta question. Depuis un module ou le code d'une feuille, tu peux appeler une autre macro soit par

Call Nom_de_la_macro 

soit par

Nom_de_la_macro

Cordialement.

Au faite c'était pour me rassurer que c'est possible d'appeler des macros à partir d'autre sans conséquence.

Ma macro ci-dessous ne fonctionne pas bien (celle qui gère les mouvements du curseur) et je pensais que l'erreur provient des macros que j'ai appelé.

Pouvez-vous voire si quelque chose qui cloche svp.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ValSaisie
Dim P As Integer

On Error GoTo fin

  If Not Intersect(Range("B12,B31,B34,B35"), Target) Is Nothing Then
    Application.EnableEvents = False
    ValSaisie = Target
    Application.Undo
    P = InStr(Target, ValSaisie)
    If P > 0 Then
      Target = Left(Target, P - 1) & Mid(Target, P + Len(ValSaisie) + 1)
      If Right(Target, 1) = "--" Then
        Target = Left(Target, Len(Target) - 1)
      End If
    Else
      If Target = "" Then
        Target = ValSaisie
      Else
        Target = Target & "--" & ValSaisie
      End If
    End If
    Application.EnableEvents = True
ElseIf Range("B4").Value = "COMPTE BUS" Then
    If Target.Address = "$B$5" And Target.Value <> "" Then
    Range("B7").Select
Call Imprimer_Fichier_PS
    MsgBox ("FAIRE SIGNER L'ASSURANCE COLINA ET LES CONDITIONS GENERALES AVANT DE CONTINUER SVP!")
    ElseIf Target.Address = "$B$31" And Target.Value <> "" Then
    Range("B33").Select
    ElseIf Target.Address = "$B$37" And Target.Value <> "" Then
    Range("B39").Select
    ElseIf Target.Address = "$B$39" And Target.Value <> "" Then
    Range("B42").Select
    Call Macro1
    MsgBox ("Remettre la copie en impression au client pour vérification et renseigner SAGE avant de continuer")
    Range("B42").Select
    ElseIf Target.Address = "$B$42" And Target.Value <> "" Then
    Range("B44").Select
    ElseIf Target.Address = "$B$44" And Target.Value <> "" Then
    Range("B48").Select
    ElseIf Target.Address = "$B$48" And Target.Value <> "" Then
    Range("B49").Select
    Call Macro10
    'Range("d3").Select
    Range("d3").Select
    Else: GoTo fin
    End If

    'GESTION DU CURSEUR SUR COMPTE MINEUR

ElseIf Range("B4").Value = "COMPTE PACK" Then
    If Target.Address = "$B$5" And Target.Value <> "" Then
    Range("B7").Select
    Call Imprimer_Fichier_PS
    MsgBox ("FAIRE SIGNER L'ASSURANCE COLINA ET LES CONDITIONS GENERALES AVANT DE CONTINUER SVP!")
    ElseIf Target.Address = "$B$41" And Target.Value <> "" Then
    Range("B42").Select
    Call Macro1
    MsgBox ("Remettre la copie en impression au client pour vérification et renseigner IGOR avant de continuer")
    Range("B42").Select
    ElseIf Target.Address = "$B$42" And Target.Value <> "" Then
    Range("B44").Select
    ElseIf Target.Address = "$B$44" And Target.Value <> "" Then
    Range("B46").Select
    ElseIf Target.Address = "$B$48" And Target.Value <> "" Then
    Range("B49").Select
    Call Macro10
    'Range("d3").Select
    Range("d3").Select
    Else: GoTo fin
    End If

 ElseIf Target.Address = "$B$46" And Target.Value <> "" Then
    Call Macro10
    GoTo fin

  Else: GoTo fin
  End If

fin:
  Application.EnableEvents = True   ' Dans tous les cas on remet les évènements en service
  Exit Sub
End Sub

Re,

Merci pour tes remerciements. Sans avoir ton fichier réel sous la main - ainsi que les différentes macros appelées depuis celle que tu daignes nous fournir - je peux te dire que rien ne cloche

zombe a écrit :

Au faite c'était pour me rassurer que c'est possible d'appeler des macros à partir d'autre sans conséquence.[/code]

Si tu lis ta macro "pas-à-pas, tu vois bien que ton code passe par la macro appelée avant de revenir à la macro de base, non ?

Cordialement.

Merci pour ton coup main.

Mon problème a été solutionné.

Salut Zombe,

Je vois que tu as bien pris note de ma remarque sur ton autre fil. Espérons que ça dure.

Il me semble en effet que ça ne coûte pas grand chose, lorsque tu as obtenu ta réponse, d'écrire un petit "Merci, tout fonctionne comme désiré".

Comme tu demandes de l'aide, évite dans tes textes de donner des ordres du genre "Je veux". L'utilisation du conditionnel est quand même plus approprié : "Je voudrais, je désirerais, je souhaiterais, ....".

En ce qui concerne le petit V vert, il est bien évident qu'il est 1000 fois plus utile s'il est visible lorsque ton fil est fermé. Je te propose que tu réessaies encore d'indiquer que tes fils sont résolus en cliquant - dans ton dernier message - sur le petit V vert à disposition. Il n'y a pas de raison que ça ne fonctionne pas chez toi.

Cordialement.

Bonjour Yvouille

Merci pour vos précieux conseils que je prend note.

Je vais revoir pour le bouton vert.

Rechercher des sujets similaires à "appeler macro partir"