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 :

Problème Solveur recurrent


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 10
    Par défaut Problème Solveur recurrent
    Bonjour à Tous,

    Cela fait 2h que je cherche une réponse à ce problème sur internet mais je ne trouve pas...
    J'utilise Excel 2003 sous XP et ai créé une macro utilisant le Solver dans une fonction retournant la valeur de la case "Changing".

    Tous les arguments sont corrects car vérifiés et revérifiés en faisant tourner le code lentement etc...

    En faisant exactement la même opération dans une simple feuille Excel j'obtiens le résultat voulu par contre VBA ne fonctionne pas.

    Je vais disposer le code ci dessous pour que vous puissiez vérifier mais avant je veux préciser que le solver.xla est bien coché et au'il ne s'agit pas d'une erreur de frappe ou d'argument.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function ISolveAll(MinimumPressureCell As Range, TargetValue As Long,  ChangingCell) As Long
     
         Application.run "solver.xla!Auto_open"
        'On programme le solver
        SolverOk SetCell:=MinimumPressureCell.Address, MaxMinVal:=3, ValueOf:=TargetValue, ByChange:=ChangingCell.Address
        'On execute le solver
        SolverSolve UserFinish:=True
        ISolveAll = ChangingCell.Value
        SolverFinish KeepFinal:=1
    Ceci me donne le resultat suivant "Solver : An Unexpected internal Error occured, or available memory was exhausted"

    Il semble que cela soit un problème récurrent du solver mais je ne comprends pas d'ou ça vient et il faut que je réussisse à le faire marcher.

    Aussi il ne bug qu'après la ligne SolverFInish et quand je ne mets pas de SolverFinish il ne change absolument rien sur la feuille et me donne la valeur initiale de la cellule ChangingCell, en gros il ne fonctionne pas.

    A noté aussi que le solver n'était pas directement proposé dans la liste de références et que j'ai du aller le chercher par moi meme dans un obscure ficher OFFICE 11 d fichier Microsoft office.

    Merci pour votre aide parce que je commence à en avoir vraiment marre !

  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 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,

    à toutes fins utiles, un petit tuto sur Solveur
    http://jpcheck.developpez.com/tutori...ur-sous-excel/
    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
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 10
    Par défaut
    jpcheck,

    J’étais déjà tombé surce tuto mais il explique juste les fonctions et comme tu as pu le voir mes fonctions sont ok et il y a autre chose qui cloche !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Ce problème est récurant.
    J’utilise des applications lancées par le planificateur de tache et de temps en temps à la demande d’utilisateurs. Je ne saurais si c’est exactement la même erreur ou le contexte, mais voila comment j’ais contourné le problème.
    Je n’ai pas regardé ton code car tu dis :
    Tous les arguments sont corrects car vérifiés et revérifiés en faisant tourner le code lentement etc...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub AddIns_Installed(MonObjet As Object)
    'Retires les commentaires sur les macros complémentaire que tu veux traiter.
        For Each cp In MonObjet.Application.AddIns
            Debug.Print cp.Name
        '    If UCase(cp.Name) = "ANALYS32.XLL" Then AddIns_InstalledOnOf cp     'Anallysis tool pack
        '    If UCase(cp.Name) = "ATPVBAEN.XLAM" Then AddIns_InstalledOnOf cp    'Anallysis tool pack - VBA
        '    If UCase(cp.Name) = "LOOKUP.XLAM" Then AddIns_InstalledOnOf cp      'Assistant recherche
        '    If UCase(cp.Name) = "SUMIF.XLAM" Then AddIns_InstalledOnOf cp       'Assistant somme conditionnelle
        '    If UCase(cp.Name) = "SOLVER.XLAM" Then AddIns_InstalledOnOf cp      'Compément Solver
        '    If UCase(cp.Name) = "EUROTOOL.XLAM"" Then AddIns_InstalledOnOf cp    'Outils pour l'euro
        '    If UCase(cp.Name) = "HTML.XLAM" Then AddIns_InstalledOnOf cp        'VBA pour l'assistant internet
          Next
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub AddIns_InstalledOnOf(ByVal MonObjet As Object)
        MonObjet.Installed = False  'Décoche
        MonObjet.Installed = True   'Coche
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
    AddIns_Installed Application
    End Sub

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 10
    Par défaut
    Bonjour rdurupt,

    Merci pour ta réponse . Cependant je ne comprends pas trop ton code et à quoi il sert. J'ai lancé la procédure en décochant "Solver" mais rien ne se passe alors après j'ai lancé ma procédure et rien ne se passe non plus.

    Peut-être que j'ai mal utilisé ton code.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Il est possible que les macros complémentaires ne soient pas en adéquation entre ton xls et excel.application.
    Le but est de supprimer la relation entre ton fichier et la macro originelle et la recréer avec celle d’excel.application de ta machine.
    Donc ma macro décoche la macro complémentaire puis la réactive.
    Attention de bien enlever le commentaire ['] touche clavier [4]
    Ça ne corrige pas un vrai bug de conception seulement un bug d’environnement.

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 10
    Par défaut
    J'ai réalisé un test pour voir si tout ceci provenait de mon fichier.
    J'ai créé un probleme simple avec 3 cases.
    Dans une (C1) j'ai mis 2
    Dans la deuxième (C2) j'ai mis 3
    Et dans la 3ème (C3) j'ai mis C1*C2

    Je fais varier C2 et fixe C3 à 60. Comme vous l'aurez compris il doit donner C2 = 30. Jusque là rien de sorcier.

    Cest le problème le plus simple qu'il puisse réaliser.

    Je dispose de deux ordinateur, l'un avec windows 7 et la dernière version d'excel.
    L'autre avec XP avec Excel 2003 et pour certaines raisons je suis obligé d'utiliser ce dernier.

    Le code que j'utilise pour résoudre le problème ci dessus fonctionne parfaitement sur la nouvelle version d'excel tandis que le code crash sur Excel 2003. Et je dois dire que je comprends pas pourquoi ... il y a bien Quelqu'un qui a résolu ça dans le passé !

  8. #8
    Invité
    Invité(e)
    Par défaut
    Poste ton exemple :
    J’ai plusieurs versions d’excel je pourrais comparer.

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 10
    Par défaut
    Voici L'exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Exemple()
        With Sheets("Exemple")
        SolverReset
        'On programme le solver
        SolverOk SetCell:="$C$2", MaxMinVal:=3, ValueOf:=60, ByChange:="$A$2"
        'On execute le solver
        SolverSolve UserFinish:=True
        SolverFinish KeepFinal:=1
        End With
     
    End Sub
    Je mets même un fichier exemple si tu veux.

    Aussi j'ai même essaye le fichier fourni dans le TUTO cité plus haut dans la discussion et il ne fonctionne pas sur mon pc XP tandis qu'il fonctionne sur mon pc 7.

    Enfin juste pour rappel, le solver n'était pas disponible dans la liste fourni au départ dans mon logiciel et je suis allé dans program files etc et je suis tombé sur le fichier OFFICE 11 où j'ai trouvé Library puis le SOLVER.

    Enfin il y avait aussi de présent le fichier OFFICE12 mais il y avait pas de library dedans.

    En espérant que tout ceci puisse t'éclairer parceque je m'y connais pas assez pour savoir quelle version peut parasiter une autre etc...
    Fichiers attachés Fichiers attachés

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 10
    Par défaut
    Bon, Après avoir ráliser un test, le solver FONCTIONNE sur un autre workbook excel. Il s'agirait donc d'un simple problème lié à la sécurité des macros.

    Le niveau de sécurité est Medium. Y aurait -il d'autres paramètres de sécurité pouvant empecher l'utilisation du solveur VBA sur une feuille contenant des formules et des données ?

Discussions similaires

  1. Problème avec le solveur Excel 2003
    Par ber84 dans le forum Excel
    Réponses: 4
    Dernier message: 01/07/2010, 22h11
  2. Problème exécution du Solveur
    Par edouardmartin dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/04/2010, 18h54
  3. Excel 2000-problème de contrainte avec le solveur
    Par jncoffy dans le forum Conception
    Réponses: 1
    Dernier message: 04/02/2010, 01h18
  4. [XL-2007] Problème à résoudre avec solveur
    Par Airone784 dans le forum Excel
    Réponses: 4
    Dernier message: 08/01/2010, 11h36
  5. [BIOS] Probléme recurrent sur Acer
    Par CaluLePetit dans le forum Composants
    Réponses: 7
    Dernier message: 07/01/2010, 13h03

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