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

Macros et VBA Excel Discussion :

Valider la solution trouvée par le solveur Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Par défaut Valider la solution trouvée par le solveur Excel
    Bonjour,

    J'ai créé une macro Excel qui permet d'utiliser l'outil "solveur" Excel par itération sur une succession de cellules. Cette macro est lancée depuis la feuille de calcul courante.

    Dans l'état actuel des choses, lorsque je lance la macro, je dois valider la solution trouvée par le solveur, en clickant sur "OK", à chaque itération.

    Puis-je modifier le code VBA de ma macro pour rendre cette validation automatique?

    Merci d'avance de vos réponses.

  2. #2
    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 682
    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 682
    Par défaut
    Bonjour,
    bienvenue sur DVP

    Peux-tu nous indiquer ton code VBA actuellement utilise, on pourra te donner les pistes les plus interessantes
    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

  3. #3
    Nouveau candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Par défaut
    Voici les deux procédures que j'utilise:

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    Sub DistVisibADCAD2(FeuilleActive As String)
        Dim NbLignes As Long
        Range("E50").Select
        Range(Selection, Selection.End(xlDown)).Select
        NbLignes = Selection.Rows.Count
        Range("AM50").Select
        Dim count1 As Integer
        count1 = 1
        While count1 < NbLignes + 1
            Selection.Formula = Selection.Offset(0, -1).Formula
            Select Case Selection.Offset(0, -1).Value
            Case -2
                Selection.Value = ""
                Selection.Offset(1, 0).Select
                count1 = count1 + 1
            Case -1
                Selection.Value = "X"
                Selection.Offset(1, 0).Select
                count1 = count1 + 1
            Case Else
                Dim CelluleCible As String, CelluleVariable As String, TypeOpti As Integer, CelluleContr(4) As String, RelaContr(4) As Integer, ValContr(4) As String
     
                CelluleCible = "$" & Left$(Selection.Address(0, 0), (Selection.Column < 27) + 2) & "$" & Selection.Row
                CelluleVariable = "$" & Left$(Selection.Offset(0, -6).Address(0, 0), (Selection.Offset(0, -6).Column < 27) + 2) & "$" & Selection.Offset(0, -6).Row
                TypeOpti = 2
                CelluleContr(1) = CelluleVariable
                CelluleContr(2) = CelluleVariable
                CelluleContr(3) = "$" & Left$(Selection.Offset(0, -5).Address(0, 0), (Selection.Offset(0, -5).Column < 27) + 2) & "$" & Selection.Offset(0, -5).Row
                CelluleContr(4) = "$" & Left$(Selection.Offset(0, -3).Address(0, 0), (Selection.Offset(0, -3).Column < 27) + 2) & "$" & Selection.Offset(0, -3).Row
                RelaContr(1) = 1
                RelaContr(2) = 3
                RelaContr(3) = 1
                RelaContr(4) = 1
                ValContr(1) = "$" & Left$(Selection.Offset(0, -7).Address(0, 0), (Selection.Offset(0, -7).Column < 27) + 2) & "$" & Selection.Offset(0, -7).Row
                ValContr(2) = "$" & Left$(Selection.Offset(0, -8).Address(0, 0), (Selection.Offset(0, -8).Column < 27) + 2) & "$" & Selection.Offset(0, -8).Row
                ValContr(3) = "$" & Left$(Selection.Offset(0, -32).Address(0, 0), (Selection.Offset(0, -32).Column < 27) + 2) & "$" & Selection.Offset(0, -32).Row
                ValContr(4) = "$" & Left$(Selection.Offset(0, -31).Address(0, 0), (Selection.Offset(0, -31).Column < 27) + 2) & "$" & Selection.Offset(0, -31).Row
                Call Optimiser(CelluleCible, CelluleVariable, TypeOpti, CelluleContr, RelaContr, ValContr)
                Application.DisplayAlerts = False
                If Selection.Offset(0, -2) <> 1 Then
                    Selection.Value = "X"
                End If
                Selection.Offset(1, 0).Select
                count1 = count1 + 1
            End Select
        Wend
    End Sub
     
    Sub Optimiser(CelluleCible As String, CelluleVariable As String, TypeOpti As Integer, CelluleContr() As String, RelaContr() As Integer, ValContr() As String)
     
        SolverReset
        SolverOk SetCell:=CelluleCible, MaxMinVal:=TypeOpti, ValueOf:="0", ByChange:=CelluleVariable
     
        Dim NbContr As Integer, i As Integer
        NbContr = UBound(CelluleContr, 1)
        If NbContr > 0 Then
            For i = 1 To NbContr
                SolverAdd CellRef:=CelluleContr(i), Relation:=RelaContr(i), FormulaText:=ValContr(i)
            Next i
        End If
     
        SolverSolve
     
    End Sub
    En exécutant la première procédure, je dois confirmer chaque solution trouvée par le solveur Excel dans la boucle qui appelle la deuxième procédure. J'aimerais automatiser cette confirmation pour ne pas avoir à valider manuellement.

    Ai-je cette possibilité?

Discussions similaires

  1. [XL-2010] Valider la solution trouvée par le solveur Excel
    Par zaku22 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/04/2011, 13h47
  2. [DOM] validation d'un XML par un schéma
    Par zevince dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 12/06/2006, 16h01
  3. Réponses: 4
    Dernier message: 09/06/2006, 09h33
  4. [Débutant] fichier .class pas trouvé par tomcat!!!
    Par oussam dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 03/03/2006, 15h31
  5. comment interdire la validation d'un form par "Entrée&q
    Par taillooo dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 14/09/2005, 17h33

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