Bonjour à tous,
j'aimerais savoir s'il est possible d'activer un bouton contenant une macro dans excel depuis VB.net.
Merci
Bonjour à tous,
j'aimerais savoir s'il est possible d'activer un bouton contenant une macro dans excel depuis VB.net.
Merci
Salut,
Tu peux directement lancer une Macro à partir de vb.net :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Dim Excel_App As New Excel.Application Dim Excel_Wb As Excel.Workbook Excel_Wb = Excel_App.Workbooks.Open(Chemin_classeur) Excel_App.Run(Nom_Macro) '...
bonjour cela ne fonctionne pas voici mon code il me dit que le nom de la macro n'est pas déclarée
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 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim XlApp As Microsoft.Office.Interop.Excel.Application = New Microsoft.Office.Interop.Excel.Application() Dim XLDestBook As Microsoft.Office.Interop.Excel.Workbook Dim XLSheet As Microsoft.Office.Interop.Excel.Worksheet Dim XlRange As Microsoft.Office.Interop.Excel.Range XLDestBook = XlApp.Workbooks.Open("C:\Users\Asus\Desktop\Dossier final - Copie.xlsm") XLSheet = XLDestBook.Sheets(1) 'Indique le numéro de la feuille souhaitée XlRange = XLSheet.Cells(5, 2) XlRange.Value = TextBox1.Text XlRange = XLSheet.Cells(1, 1) TextBox2.Text = XlRange.Value XlApp.Run(test) '... Xlapp.DisplayAlerts = False XLDestBook.Save() XLDestBook.Close() XlApp.DisplayAlerts = True XlApp.Quit()
Que fais ta macro ?
Il serait certainement plus pertinent de faire les modifications dans ton appli.
ma macro permet de sortir la fonction de la courbe de tendance sur le graphique et de la mettre sur une cellule
voici ma macro :
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 Sub test() Dim Graph As Chart, Feuille As Worksheet, Trendline Dim Equation As String Set Feuille = ActiveSheet With Feuille.ChartObjects(1).Chart .HasTitle = True .ChartTitle.Text = "Loi de weibull" '.SeriesCollection(1).Trendlines.Add With .SeriesCollection(1).Trendlines(1) Range("C1").Value = Format(Now, "dd.m.yyyy") .DisplayEquation = True .DisplayRSquared = False ActiveSheet.Cells(4, 16).Value = .DataLabel.Text End With End With End Sub
Essaye çà :
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 Dim Excel_App As New Excel.Application Dim Excel_Wb As Excel.Workbook = Excel_App.Workbooks.Open(Chemin_de_ton_fichier_Excel) Dim Excel_Ws As Excel.Worksheet = Excel_Wb.Worksheets(1) 'Indique le numéro de la feuille souhaitée ou son nom Dim Graph As Chart Dim Equation As String With Excel_Ws.ChartObjects(1).Chart .HasTitle = True .ChartTitle.Text = "Loi de weibull" With .SeriesCollection(1).Trendlines(1) Excel_Ws.Range("C1").Value = DateAndTime.Now.Day & "." & DateAndTime.Now.Month & "." & DateAndTime.Now.Year .DisplayEquation = True .DisplayRSquared = False Excel_Ws.Cells(4, 16).Value = .DataLabel.Text End With End With
Bonjour,
Je m'excuse de m'être absenté si longtemps j’étais en période de concours.
Les concours finis je me remets à fond dans ma programmation.
Je prends note de cette astuce mais j'ai plusieurs macros toutes différentes et je souhaiterais les diriger via VB.net si possible merci.
Bonjour,
Dans la foulée de r.morel.
VB.net qui lance la macro Histogramme du classeur Excel Ouvert (authentique):
À moins que tu les aient ajoutés plus tard, tu ne sembles pas avoir mis le nom de ta macro entre guillemets.
Code : Sélectionner tout - Visualiser dans une fenêtre à part XLSAPP.Run("histogramme")
P.S. Un truc qui marche avec Excel et avec Word. Tu peux utiliser les enregistreurs de macros pour avoir, du moins la plupart du temps, des canevas de procédure en VBA que tu peux facilement adapter en VB.net ou en C#. Peu importe que langage .net, ou VBA, les objets spécifiques de Word et Excel sont constants. Et n'oublie pas l'IntelliSense. Quand tu utilises les Primary Interop Assemblies (les dll Microsoft.interop.Excel, et Microsoft.interop.word), l'IntelliSense fonctionne avec Excel et Word dans VisualStudio..
est-ce possible que mes interop (références) puissent lire un fichier Excel classique mais pas un avec des macros ?
![]()
Non en effet je pense que mon erreur vient de là.
J'utilise déjà ces interop, fin du moins celle d'excel et en langage de programmation j'avoue que je débute à peine mais je trouve ça intéressent et pour l'instant je connais le VBA d'Excel ( macro ) et très peu le VB.net. en tout cas merci pour l'aide cela m'est vraiment utile
Salut,
Apparemment, ton fichier Excel n'existe pas.
Tu peux tester la présence d'un fichier avec la classe System.Io.File et la méthode Exists. Attention aux remarques sur cette méthode, et notamment celles sur le chemin et le répertoire.
Bon code...
Le problème c'est que même avec les anciens fichiers qu'il ouvrait il ne les reconnait plus donc je ne sais pas du tout pourquoi et je n'arrive pas à comprendre le code pour vérifier qu'un fichier existe et si jamais il n'existe pas comment lui redonner son existence ?
Je te joins un exemple de projet qui fonctionne.
J'espère que cela t'aidera.![]()
Merci je vais essayer ça ce soir car j'ai des réunions.
J'ai trouvé quelques fichiers qui s'ouvre dont celui dont j'ai besoin mais la macro même avec les guillemets ne se déclenche pas peut être car j'ai mis le nom de la macro et pas celui du fichier je vous tiens informé ce soir de l'avancement.
Bonjour,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click With New Microsoft.Office.Interop.Excel.Application() With .Workbooks.Open(System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\Dossier final - Copie.xlsm") .Sheets(1).Cells(5, 2).Value = TextBox1.Text TextBox2.Text = .Sheets(1).Cells(1, 1).Value .application.Run("test") .application.DisplayAlerts = False .Save() .Close() .application.DisplayAlerts = True End With .Quit() End With End Sub
Dernière modification par Invité ; 28/05/2019 à 07h46.
r.morel je télécharge les interop pour tester mes fichiers mais j'aimerais savoir comment un fichier existant peut être inexistant ?
et pour ton code dysorthographie j’essaierais demain là il est tard mais je le rajouterais surement sur un second bouton.
je vous dis toute l'évolution demain matin merci pour votre précieuse aide.
Bonjour,
Ton message d'erreur parle du fichier, mais en fait l'erreur peut toucher le fichier lui-même et/ou le chemin d'accès.
Si tu peux suivre le chemin d'accès dans l'Explorateur Windows et que le fichier est bien là, cela pourrait être un problème de droits d'accès géré par Windows. C'est le genre de coup de cochon qu'une mise à jour de Windows peut provoquer.
Un petit utilitaire très bien pour copier-coller des chemins d'accès. Une fois installé, il y a deux entrées de menu contextuel pour l'utiliser.
Salut,
Une petite erreur dans le lien de clementmarcotte : https://pathcopycopy.github.io/
As-tu essayé le projet que j'ai envoyé ?
J'ai peut-être trouvé une nouvelle piste ma macro ne se lance pas peut-être car elle n'est pas enregistrée dans le classeur ou non visible mais je ne sais pas comment visualiser tout cela.
ça vous semble possible que le problème provienne de là ?
https://www.developpez.net/forums/d1...pplication-vb/
Dans mon exemple la macro est situé dans un module et exécuter sans problème.
As-tu seulement regardé ?
Partager