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

VB.NET Discussion :

Utiliser le solveur d'EXCEL sur VB.Net


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Par défaut Utiliser le solveur d'EXCEL sur VB.Net
    Bonjour à tous,
    Je voudrais vous solliciter pour un problème que je rencontre lorsque j’essaie d'utiliser le solveur d'Excel sur VB.Net.
    Voici mon code que j'ai trouvé sur internet et qui en principe devrait marcher mais il ne fonctionne pas chez moi.
    Le fichier Excel s'ouvre avec la même valeur initiale de A1 et B1 :

    Code vb : 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
    Module Module1
            Sub Main()
            Dim oExcel As Microsoft.Office.Interop.Excel.Application
            Dim oBook As Microsoft.Office.Interop.Excel.Workbook
            Dim oSheet As Microsoft.Office.Interop.Excel.Worksheet
            ' Dim oRng As Microsoft.Office.Interop.Excel.Range
            Dim oModule As VBIDE.VBComponent
            Dim MacroCode As String
     
            oExcel = New Excel.Application()
            oExcel.Visible = True
     
            oBook = oExcel.Workbooks.Add
            oSheet = oBook.ActiveSheet
     
            oSheet.Range("A1").NumberFormat = "#,##0.00"
            oSheet.Range("B1").NumberFormat = "#,##0.00"
            oSheet.Range("A1").Value = 2
            oSheet.Range("B1").Formula = "=A1*5+4"
     
            oModule = oBook.VBProject.VBComponents.Add(VBIDE.vbext_ComponentType.vbext_ct_StdModule)
            MacroCode = "sub useSolver()" & vbCr & _
            "SolverOk SetCell:=""$B$1"", MaxMinVal:=3, ValueOf:=0.00, ByChange:=""$A$1"", Engine _" & vbCr & _
            ":=1, EngineDesc:=""GRG Nonlinear""" & vbCr & _
            "SolverSolve UserFinish:=True" & vbCr & _
            "End Sub"
     
            oBook.VBProject.References.AddFromFile("C:\Program Files\Microsoft Office\Office14\Library\SOLVER\SOLVER.xlam")
            oExcel.Run(MacroCode)
     
        End Sub
    Le code ouvre donc le fichier Excel et met juste les valeurs initiales de chaque case et n'utilise donc pas le solveur.
    J'ai juste mis une formule simple pour vérifier si le solveur marchait.

    Merci de m'aider

  2. #2
    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
    Par défaut
    Avant de passer par VB.Net, as-tu essayé de faire ça directement dans Excel ? Depuis une macro, par exemple ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Par défaut
    sur Excell la syntaxe n'est pas la même : Par exemple pour le même exemple sa donne le code suivant(j'ai enregistré une macro pendant que j'utilisais le solveur):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Macro2()
    '
    ' Macro2 Macro
    '
     
    '
        SolverOk SetCell:="$B$1", MaxMinVal:=3, ValueOf:=20, ByChange:="$A$1", Engine:= _
            1, EngineDesc:="GRG Nonlinear"
        SolverOk SetCell:="$B$1", MaxMinVal:=3, ValueOf:=20, ByChange:="$A$1", Engine:= _
            1, EngineDesc:="GRG Nonlinear"
        SolverSolve
    End Sub
    Sur excell ce code marche bien. je ne pense pas que ce soit le même sur VB.net

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Et pourquoi pas Solver Foundation ? C'est fait explicitement pour .net et c'est gratuit. (En version 32 bits et en version 64 bits.)

    http://msdn.microsoft.com/en-us/devlabs/hh145003.aspx

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Par défaut
    Bonjour Clément,
    merci pour ta réponse; je vais l'essayer de suite.Merci

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 678
    Par défaut
    Salut,

    à toute fin utile, un tuto sur le solveur Excel côté VBA,
    http://jpcheck.developpez.com/tutori...ur-sous-excel/

    bonne lecture
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Par défaut
    salut JP
    Merci bien pour le lien .

Discussions similaires

  1. ouvrir un fichier text en excel sur vb net
    Par sihammaster dans le forum VB.NET
    Réponses: 0
    Dernier message: 30/11/2009, 13h02
  2. Utilisation du solveur sur Excel
    Par adrian07 dans le forum Excel
    Réponses: 7
    Dernier message: 25/12/2008, 17h25
  3. Comment automatiser l'utilisation du solveur dans EXCEL
    Par nianko dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/10/2008, 07h20
  4. Utiliser des packages ou des classes présents sur le net
    Par lionrouge dans le forum Général Java
    Réponses: 2
    Dernier message: 27/09/2006, 06h09

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