IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.NET][VBA-E]Execution d'une macro excel via application


Sujet :

Windows Forms

  1. #1
    Membre actif Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Points : 206
    Points
    206
    Par défaut [VB.NET][VBA-E]Execution d'une macro excel via application
    Bonjour!!!

    J'ai un petit soucis de fonctionnement :

    J'ai une application créée en VB (avec Visual studio express edition) avec plusieurs champs. En cliquant sur un bouton, les données de ces champs sont exportées vers un fichier excel. Dans ce fichier excel j'ai fait une macro de calcul et j'aimerais bien quelle s'execute une fois que j'ai exporté les donnée de mon application VB.

    J'ai tenté des multitudes de solution avec la méthode RunAutoMacros et rien n'y fait!!!

    Est-ce qu'il existe une méthode ou fonction qui permet de lancer une macro en particulier a partir d'une application VB ?

    Voici mon code qui pourras peut-être m'aider a comprendre pourquoi la macro ne se lance pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click      
     
            Dim appExcel As Excel.Application 'Application Excel
            Dim wbExcel As Excel.Workbook 'Classeur Excel
            Dim wsExcel As Excel.Worksheet 'Feuille Excel
     
            'Ouverture de l'application
            appExcel = CreateObject("Excel.Application")
            'Ouverture d'un fichier Excel
            wbExcel = appExcel.Workbooks.Open("******.xls")
            'wsExcel correspond à la première feuille du fichier
            wsExcel = wbExcel.Worksheets(1)
            wsExcel.Visible = True
            appExcel.Visible = True
            ' ici on compte le nombre de lignes et de colonnes du datatable
            With wbExcel
                Try
                    .Worksheets(1).range("A2").value = Me.TextBoxRef.Text
                    .Worksheets(1).range("B2").Value = Me.TextBoxDesignation.Text
                    .Worksheets(1).range("C2").Value = Me.TextBoxClient.Text
                    .Worksheets(1).range("D2").Value = Me.TextBoxNumCdeClient.Text
                    .Worksheets(1).range("E2").value = Me.TextBoxOF.Text
                    .Worksheets(1).range("F2").value = Me.ComboBoxTypePalette.Text
                    .Worksheets(1).range("G2").value = Me.TextBoxTypeCarton.Text
                    .Worksheets(1).range("H2").value = Me.TextBoxQteParCarton.Text
                    .Worksheets(1).range("I2").value = Me.TextBoxCartonParPalette.Text
                    .Worksheets(1).range("J2").value = Me.LabelQteParPal.Text
                    .Worksheets(1).range("K2").value = "1"
                    .Worksheets(1).range("L2").value = Me.LabelNbPalette.Text
                Catch ex As Exception
                    MsgBox("Impossible d'exporter les données" & Chr(10) & "Rapport de l'erreur : " & Chr(10) & ex.ToString)
                End Try
                .Activate()
                .RunAutoMacros(Excel.XlRunAutoMacro.xlAutoActivate)
     
            End With
        End Sub
    Et le code de ma macro (placé dans un module):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Main()
    Dim NbPalette, i As Integer
    If Worksheets(1).Range("L2").Value > 1 Then
        NbPalette = Worksheets(1).Range("L2").Value
        Worksheets(1).Rows(2).Copy
        For i = 3 To NbPalette + 1 Step 1
            ActiveSheet.Paste Destination:=Worksheets("Feuil1").Rows(i)
            Worksheets(1).Range("K" & i).Value = (Worksheets(1).Range("K" & (i - 1)).Value) + 1
        Next i
    End If
    End Sub
    J'ai même tenté de faire
    sub AutoExecute()

    Merci pour votre aide !!
    Épargnez votre cerveau : éteignez votre télé !

  2. #2
    Membre actif
    Homme Profil pro
    DBA - Développeur BI
    Inscrit en
    Avril 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : DBA - Développeur BI
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2003
    Messages : 442
    Points : 283
    Points
    283
    Par défaut
    sa vaut ce que sa vaut mais avez vous pensez à mettre votre code sur Worksheet_Activate de votre feuille excel?

  3. #3
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    D'après l'aide VBA Excel :
    Méthode RunAutoMacros :
    Cette méthode exécute la macro Auto_Open, Auto_Close, Auto_Activate ou Auto_Deactivate attachée au classeur. Cette méthode est incluse pour des raisons de compatibilité avec les versions précédentes.
    Dans ton cas, tu dois utiliser plutôt la méthode Run de ton objet Application (appExcel) :
    Méthode Run, exemple :
    Cet exemple montre comment appeler la fonction macro My_Func_Sum, qui est définie dans la feuille macro MyCustom.xlm (cette dernière doit être ouverte). Dans cet exemple, la fonction accepte deux arguments numériques, 1 et 5.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mySum = Application.Run("MYCUSTOM.XLM!My_Func_Sum", 1, 5)
    MsgBox "Macro result: " & mySum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Excuter une macro Excel via MATLAB
    Par autousto dans le forum MATLAB
    Réponses: 4
    Dernier message: 05/12/2014, 08h55
  2. [AC-2007] Lancer une macro excel via VBA?
    Par EmmanuelleC dans le forum VBA Access
    Réponses: 4
    Dernier message: 10/09/2010, 11h47
  3. [VBA-E] Execution d'un programme Perl depuis une macro Excel
    Par DaBeam dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/09/2007, 15h21
  4. [VBA-E]Execution d'une macro access sous excel VBA
    Par virtualinsanity dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 21/04/2006, 17h27
  5. [VBA-E]Pendant l'execution d'une macro
    Par benoue dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/03/2006, 18h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo