Enregistrer le calcul fait avec Visual Basic dans . feuil excel

Résolu
kikou93 Messages postés 438 Statut Membre -  
kikou93 Messages postés 438 Statut Membre -
Bonjour,

Je sollicite votre aide comme toujours pour régler le sujet suivant :

J'utilise Visual Basic pour faire des calculs je voulais savoir si c'est possible par exemple quand je clique sur un bouton le programme que j'ai créé (bien après avoir terminer tout les calcul) il crée un nouvelle feuille Excel et enregistrer résultats dedans.

S'il y a un lien ou un livre qui explique cette méthode s'il vous plaît indiquez-moi son emplacement.

Remarque :
Je ne parle pas du langage VBA qu est présente dans Excel mais d'un logiciel créé avec Visual basic express 2010.

Aidez-moi s'il vous plaît et merci d'avance



--
Comment ça marche c'est cool! 
      1000 Merci les Amis

4 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    voici le code. Tu peux supprimer ton FolderBrowserDialog1, je l'ai initialisé par code:

    Option Strict On
    Imports Microsoft.Office.Interop
    Imports Microsoft.Office.Interop.Excel
    Public Class Form1
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            'Créer une instance de Excel 
            Dim ApExcel As New Excel.Application
            Dim wbExcel As New Excel.Worksheet
            Dim nom As String 'nom classeur
            Dim chemin As String = "C:\" 'chemin classeur
            nom = "Calcul" 'nom classeur
            'Créer un nouveau classeur 
            ApExcel.Workbooks.Add()
            'Ouvrir un classeur 
            'ApExcel.Workbooks.Open("chemin classeur.xls") 
            ApExcel.Application.DisplayAlerts = False 'supprime les messages d'alerte
            'rendre le classeur visible 
            ApExcel.Visible = False
            ApExcel.Range("A1").Formula = "1200" 'Ajouter du texte à une cellule 
            ApExcel.Range("A2").Formula = "1300" 'Ajouter du texte à une cellule 
            ApExcel.Range("A3").Formula = "1400" 'Ajouter du texte à une cellule 
            Dim FBD As New FolderBrowserDialog
            ' On affiche le formulaire et on teste si l'utilisateur a bien sélectionné un dossier.
            ' L'utilisateur aura donc cliqué sur le bouton OK.
            With FBD
                If .ShowDialog() = System.Windows.Forms.DialogResult.OK Then
                    ' Récupère le chemin complet du dossier sélectionné par l'utilisateur
                    Dim dossier_selectionner As String = .SelectedPath
                    ' Affiche le chemin complet du dossier sélectionné par l'utilisateur dans la variable chemin, il faudra ajouter \ avant le nom du classeur
                    chemin = dossier_selectionner 'chemin dossier
                Else
                    ' Si l'utilisateur n'a pas sélectionné de dossier, on lui affiche un avertissement
                    MsgBox("Aucun dossier n'a été sélectionné", MsgBoxStyle.Exclamation, "Aucun dossier sélectionné")
                End If
            End With
            ApExcel.ActiveWorkbook.SaveAs(Filename:=chemin & "\" & nom)
            MsgBox("Classeur enregistré dans le dossier" & Environment.NewLine & chemin, MsgBoxStyle.Information, "Enregistrement")
            ApExcel.Workbooks.Close() 'on ferme le classeur 
            ApExcel.Application.DisplayAlerts = True
            ApExcel.Visible = False
            ApExcel.Quit() 'on ferme Excel 
            ApExcel = Nothing
        End Sub
    End Class
    


    Et voilà!
    1
    1. kikou93 Messages postés 438 Statut Membre 1
       
      ton code marche beaucoup mieux que le mien, j'ai fait l'erreur suivante :

      ApExcel.ActiveWorkbook.SaveAs(dossier_selectionner & "\" & nom & ".xls")
      l'erreur est que j'ai ajouter : .xls

      c'est pour ça qu'il affiche l'erreur suivante quand j'essaie d'ouvrir la feuille excel :
      Le format du fichier que vous tentez d'ouvrir, "Calcul.xls", est différent de celui spécifié par l'extension du fichier. Assurez-vous que le fichiers n'est pas endommagé et qu'il provient d'une source fiable avant d'ouvrir. Souhaitez-vous ouvrir le fichier maintenant ? Oui/Non/Annuler

      Visual Basic enregistre la feuille excel déjà sous format xlsx, alors en ajoutant .xls a la fin ça crée un erreur

      merci tu m'as beaucoup aidée je te suis vraiment très reconnaissant
      0
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    et pour compléter la réponse de Whismeril que je salue, voici ce snippet en VB.NEt:

    https://codes-sources.commentcamarche.net/source/100410-piloter-office-en-vb-net
    0
    1. Utilisateur anonyme
       
      Ha c'était le tien, je ne savais plus qui en était l'auteur et ne l'ai pas retrouvé!
      0
    2. kikou93 Messages postés 438 Statut Membre 1
       
      merci beaucoup à Whismeril et cs_Le Pivert de votre réponse.
      le code qui se trouve dans :
      https://codes-sources.commentcamarche.net/source/100410-piloter-office-en-vb-net

      est très bien expliqué juste en le lisant j'ai compris comment ça fonctionne, mais il y a juste un petit problème ou plutôt un gros problème, j'arrive pas à trouver dans Références --> Ajouter ---> COM :

      Microsoft Excel Object 12.0 Library
      Microsoft PowerPoint Object 12.0 Library
      Microsoft Word 12.0 Object Library

      j'ai fais une recherche dans google et j'ai pu savoir comment ajouter Microsoft Excel Object 15.0 Library (C:\Program Files\Microsoft Office\Office15\EXCEL.exe)

      c'est Microsoft Excel Object 15.0 Library est pas Microsoft Excel Object 12.0 Library car j’utilise Microsoft 2013.

      mais j'arrive pas à trouver pour le chemain pour ajouter :

      Microsoft PowerPoint Object 15.0 Library
      Microsoft Word 15.0 Object Library

      Comment faire?

      j'ai une deuxième question c'est un autre utilisateur utilise Microsoft 2003 2007 ou 2010 est-ce qu'il y aura un bug parce qu'il utilise un version antécédente à la mienne (Microsoft 2013)?

      J'ai lu ça dans le poste :

      https://www.developpez.net/forums/d1421126/logiciels/microsoft-office/excel/macros-vba-excel/microsoft-word-14-0-object-library-manquante/
      0
    3. Utilisateur anonyme
       
      Pour l'adresse ou trouver la référence avec 2013, je ne sais pas car je ne l'ai pas.

      Afin d'éviter les problèmes de compatibilité, j'ai mis dans ma source la dll compatible avec 97 (et oui le code est vieux, et au boulot on n'est jamais à jour, on vient juste de passer à Seven....) et cela fonctionne même avec 2007 à condition que la dll soit dans le répertoire de l'exe.
      0
    4. kikou93 Messages postés 438 Statut Membre 1 > Utilisateur anonyme
       
      je ne vois pas un dll dans le code suivant :


      'Aller dans My Project- Références et ajouter dans COM:
      'Microsoft Excel Object 12.0 Library
      'Microsoft PowerPoint Object 12.0 Library
      'Microsoft Word 12.0 Object Library
      Option Strict On
      Imports Microsoft.Office.Interop
      Imports Microsoft.Office.Interop.Word
      Imports Microsoft.Office.Interop.Excel
      Imports Microsoft.Office.Interop.PowerPoint
      Public Class Form1
      Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
      Button1.Text = "Ouvrir Excel"
      Button2.Text = "Ouvrir PowerPoint"
      Button3.Text = "Ouvrir Word"
      Button1.AutoSize = True
      Button2.AutoSize = True
      Button3.AutoSize = True
      End Sub
      'Excel
      Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
      'Créer une instance de Excel
      Dim ApExcel As New Excel.Application
      Dim wbExcel As New Excel.Worksheet
      'Créer un nouveau classeur
      ApExcel.Workbooks.Add()
      'Ouvrir un classeur
      'ApExcel.Workbooks.Open("chemin classeur.xls")
      'rendre le classeur visible
      ApExcel.Visible = True
      ApExcel.Range("A1").Formula = "Bonjour" 'Ajouter du texte à une cellule
      ApExcel.Workbooks.Close() 'on ferme le classeur
      ApExcel.Visible = False
      ApExcel.Quit() 'on ferme Excel
      End Sub
      'PowerPoint
      Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
      'Créer une instance de PowerPoint
      Dim PptApp As New PowerPoint.Application
      Dim PptDoc As PowerPoint.Presentation
      'Créer une nouvelle présentation
      PptDoc = PptApp.Presentations.Add()
      'rendre la présentation visible
      PptApp.Visible = Microsoft.Office.Core.MsoTriState.msoCTrue
      'Ouvrir une présentation
      ' PptDoc = PptApp.Presentations.Open("Chemin de la presentation.ppt")
      PptDoc.Slides.Add(1, PowerPoint.PpSlideLayout.ppLayoutTitleOnly)
      PptDoc.Slides(1).Shapes(1).TextFrame.TextRange.Text = "Bonjour" 'Ajouter du texte
      PptDoc.SaveAs(System.Windows.Forms.Application.StartupPath & "\mapresentation.ppt")
      PptDoc.Close() 'on ferme la présentation
      PptApp.Quit() 'on ferme PowerPoint
      End Sub
      'Word
      Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
      'Créer une instance de word
      Dim oWord As New Word.Application
      'Créer un nouveau document
      oWord.Documents.Add()
      'Ouvrir un document
      'oWord.Documents.Open("chemin document.doc")
      'rendre le document word visible
      oWord.Visible = True
      oWord.Selection.TypeText(Text:="Bonjour") 'Ajouter du texte
      oWord.ActiveDocument.Close() 'on ferme le document
      oWord.Visible = False
      oWord.Quit() 'on ferme Word
      End Sub
      End Class

      peux-tu m'expliquer les étapes en détail pour mettre un dll dans le dossier *.exe
      désolée je suis un débutant dans le langage de Visual Basic, je n'ai pas tout compris
      0
    5. Utilisateur anonyme
       
      Sur la page, il y a un aperçu du code, que tu viens de copier coller.
      Il y a aussi un projet complet, avec un bouton bleu "Télécharger le projet", tu obtiendras un zip, dans lequel se trouve un projet winform complet avec des exemples et les dll, en fait il en faut au moins deux, mais comme je l'ai écrit plus haut c'est vieux.

      Quand tu compiles un projet, Visual Studio écrit un exe dans
      Nom du Projet \Nom de la solution\bin\Debug ou Realese
      selon le mode de compilation.

      Par défaut, le nom du projet est celui de la solution.
      0
  3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    j'ai cherché mais j'ai rien trouvé dans Internet

    Pour le choix d'un repertoire:

    https://www.informatiweb.net/tutoriels/informatique

    supprimer les messages d'alerte d'Excel

    https://docs.microsoft.com/fr-fr/office/vba/api/excel.application.displayalerts?redirectedfrom=MSDN

    Voilà!
    0
    1. kikou93 Messages postés 438 Statut Membre 1
       
      merci de m'avoir répondu aussi rapidement.

      Je ne me suis pas bien exprimer, je sais déjà comment utiliser : "FolderBrowserDialog" (même si j'ai appris beaucoup de choses utiles dans : https://www.informatiweb.net/tutoriels/informatique mais le problème est que je ne sais pas où mettre le chemin que j'ai récupéré en utilisant "FolderBrowserDialog".
      Si je le mets ici : "ApExcel.ActiveWorkbook.Save()" il m'affiche une erreur.
      je dois bien mettre le chemin quelque part parce que "FolderBrowserDialog" récupère que le chemin d'accès il n'enregistré pas la feuille excel.

      à propos de
      j'ai cherché mais j'ai rien trouvé dans Internet

      ce n'est pas que je n'ai rien trouvé le problème pour trouver quelque chose d'utile il faut mettre les bons mots dans Google
      0