[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:
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:
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 !!