Le problème c'est qu'il faut Framework.
Pièce jointe 478752
et quand je télécharge framework j'ai ceci.
Pièce jointe 478764
Version imprimable
Le problème c'est qu'il faut Framework.
Pièce jointe 478752
et quand je télécharge framework j'ai ceci.
Pièce jointe 478764
Essaye avec le fichier joint. J'ai modifié le FrameWork cible du projet.
J'ai exactement le même problème.
le fait d'avoir seulement visual basic et pas visual studio cela peut poser un problème ?
merci beaucoup pour le temps que vous m'accordez et je m'excuse d'être très peu compétent dans ce domaine.
Tu as le même problème en utilisant le classeur joint dans mon archive ou le tient ?
Tu peux avoir accès à la version gratuite de Visual Studio.
Le fichier que vous m’avez envoyé.
En mettant le dossier en .exe est il possible de diriger le dossier Excel à partir d'un autre ordinateur ?
Bonjour,
tu n'es pas obligé de tester si ma solution ne t'intéresses pas!
bien évidement il faut que le classeur soit sur le bureau!
pas besoin de la référence Microsoft.Office.Interop.Excel.Application.
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
38
39 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click With GetObject("Excel.Application") .visible = True 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 Friend Function GetObject(ByVal App As String) As Object Try ' log.Debug("Begin...") Return Marshal.GetActiveObject(App) Catch ex As Exception Return CreateObject(App) 'Log.Error("", exRD) Finally ' log.Debug("End...") End Try End Function Friend Function CreateObject(ByVal app As String) As Object Try ' log.Debug("Begin...") Dim AppType As Object = Type.GetTypeFromProgID(app) Dim ApplInst As Object = Activator.CreateInstance(AppType) Return ApplInst Catch ex As Exception Return Nothing 'Log.Error("", exRD) Finally ' log.Debug("End...") End Try End Function
Bonjour,
Bien sur que la solution m’intéresse j'aimerais savoir quelles références je dois utiliser ?
Tu n'as besoin d'aucune référence.
Edit, si Marshal mais si tu fais un click droit sur l'erreur souligné en rouge, il te proposera d'importer la librairie.
Pièce jointe 480731
Voici le message d'erreur cela peut signifier quoi ?
Désolé il faut mettre .application.DisplayAlerts = True après save et avant close.
DisplayAlerts active ou désactivé les messages d'avertissement true/false
Bonjour,
tes deux with mis ensemble veulent dire
mais DisplayAlerts est une propriété de l'objet application et pas une propriété de l'object Workbook en définitive.Code:Excel.application.Workbooks.Open(System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\Dossier final - Copie.xlsm").displayalerts = FALSE
Essaie plutôt comme cela:
Mais, en relisant, je suis loin de penser queCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click With GetObject("Excel.Application") .visible = True .DisplayAlerts = True 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") .Save() .Close() End With .application.DisplayAlerts = False .Quit() End With End Sub
ne plantera pas à son tourCode:.application.Run("test")
Bonsoir Clément,
Workbook hérite de la classe application
Workbooks(1).application.Run("test")
Ah ! Je pensais que non. Si cela marche tant mieux.
Bonjour Clément,
En fait si on regarde l'imprimer écran, on se rend compte que les instruction Application au niveau du classeur on fonctionnées sauf celle après close ce qui est légitime vue que par définition le classeur est fermé !
Utiliser application du classeur permet en autre que Run concerne bien une macro du classeur.
Code:
1
2
3
4
5 .application.Run("test") .application.DisplayAlerts = False .Save() .application.DisplayAlerts = True .Close(False)
dysorthographie c'est parfait ça marche mille merci par contre maintenant mon fichier Excel s'ouvre j'aimerais qu'il reste non visible si possible.
Merci beaucoup à tous pour toute l'aide apporté.
Tu mets visible en commentaire.
Code:
1
2 With GetObject("Excel.Application") '.visible = True
C'est parfait ça fonctionne correctement merci beaucoup.
C'est exactement ce que je souhaitais.
Existe t'il un moyen pour que le fichier Excel ne s'ouvre qu'avec VB ?
Et une fonction qui permet que j'installe un groupe de données (fichier VB et Excel sur un autre bureau sans avoir à changer le parcours pour que VB trouve Excel ?
bonjour,
je ne comprends pas!
ici j'ouvre l'Excel qui est installé sur ta machine et ce quelque soit la version!
Code:With GetObject("Excel.Application")
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 Friend Function GetObject(ByVal App As String) As Object Try ' log.Debug("Begin...") Return Marshal.GetActiveObject(App) Catch ex As Exception Return CreateObject(App) 'Log.Error("", exRD) Finally ' log.Debug("End...") End Try End Function Friend Function CreateObject(ByVal app As String) As Object Try ' log.Debug("Begin...") Dim AppType As Object = Type.GetTypeFromProgID(app) Dim ApplInst As Object = Activator.CreateInstance(AppType) Return ApplInst Catch ex As Exception Return Nothing 'Log.Error("", exRD) Finally ' log.Debug("End...") End Try End Function
ici j'ouvre le fichier Dossier final - Copie.xlsm qui se trouve sur le bureau de l’utilisateur!
Code:With .Workbooks.Open(System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\Dossier final - Copie.xlsm")
Oui c’est bon ça fonctionne merci c’est ce que je voulais
Mais je souhaiterais savoir si il existe un moyen que mon dossier ne puisse s’ouvrir qu’avec VB et non en double cliquant sur le dossier