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 de syntaxe dans une macro pour automatiser le lancement du solveur [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 542
    Points : 187
    Points
    187
    Par défaut Problème de syntaxe dans une macro pour automatiser le lancement du solveur
    Bonjour,

    J'essaye d'automatiser le lancement du solveur pour fiare 102 lignes (de la ligne 114 à 116).

    Voici mon code que j'ai réalisé en m'inspirant de codes déjà faits sur le forum :

    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
    Sub SolverAutomatise()
     
       Dim CellulesVariables As Range
       Dim i As Integer
       For i = 14 To 116
       'SolverReset
     
             With pelvis
             Set CellulesVariables = Union(Range("Z" & i), Range("AA" & i), Range("AB" & i))
             End With
     
              'ligne générale :
              '   SetCell correspond à la cellule cible
              '   MaxMinVal donne l'objectif (Max = 1, Min = 2, Val = 3)
              '   ValueOf est utilisé car MaxMinVal vaut 3
              '   ByChange précise les cellules variables
     
             Set CelluleObjectif = Range("AG" & i).Value
     
             SolverOk SetCell:=CelluleObjectif, MaxMinVal:=3, ValueOf:="0", ByChange:=CellulesVariables.Address
     
            'on lance la résolution
             SolverSolve
       Next i
     
    End Sub
    J'ai une erreur de compilation, visiblement à la ligne du SolverOk.

    Est-ce que vous auriez des idées sur l'erreur de syntaxe qu'il y a dans mon code ?

    Je vous remercie d'avance pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Bonjour,

    une erreur de syntaxe indique une instruction n'existant pas ou un mauvais paramètre !
    C'est donc soit une faute d'orthographe (et oui même en informatique !)
    soit carrément quelque chose sorti d'un chapeau mais n'existant pas dans le référentiel du VBA,
    consulter son aide intégrée (aidant aussi à vérifier le type des paramètres attendus) …

    Déjà la ligne de code n°18 me paraît plutôt singulière, à vérifier dans la fenêtre des Variables locales durant l'exécution !

    _________________________________________________________________________________________________________
    Je suis Paris, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 542
    Points : 187
    Points
    187
    Par défaut
    Merci pour ton retour.

    Mais,
    1) peux-tu me préciser un peu plus la partie de code que tu trouves incorrect ?

    2) Comment fait-on pour "vérifier dans la fenêtre des Variables locales durant l'exécution" d'éventuelles soucis ?

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    La ligne n°18 me semble tout à fait irréelle !   Rien qu'en consultant l'aide VBA de l'instruction Set

    Soit placer un point d'arrêt sur la ligne n°20 soit progresser dans le code via la touche F8 (cf tutoriel & aide VBA).
    Une fois la variable alimentée, son contenu est visible dans la fenêtre des Variables locales.

    Pour une ligne déclenchant une erreur, il faut vérifier le contenu de chacune de ses variables
    et s'il y a des paramètres passés à une fonction ou à une procédure (c'est le cas ici)
    il faut aussi vérifier si leur types de données correspond à ceux attendus
    (pouvant être une cause d'erreur ici, là aussi juste en consultant l'aide VBA ) …

    Astuce pour ceux ne s'en sortant pas : activer l'Enregistreur de macro - l'ami du débutant - puis
    opérer manuellement dans la feuille de calculs : une base de code est livrée sur un plateau !
    Ensuite il est facile de comparer le code ainsi généré avec le code en erreur …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 542
    Points : 187
    Points
    187
    Par défaut
    OK j'ai trouvé la fenetre des variables locales.

    J'ai fait également un F8 pour faire un pas à pas.

    Par contre, je constate qu'il n'y a tjs rien dans les variables locales.

    Pour la ligne 18, j'ai enlevé le .Value mais celà ne fonctionne tjs pas.

    Voici maintenant mon code

    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
    Sub SolverAutomatise()
     
       Dim CellulesVariables As Range
       Dim i As Integer
       For i = 14 To 116
       'SolverReset
     
             With pelvis
             Set CellulesVariables = Union(Range("Z" & i), Range("AA" & i), Range("AB" & i))
             End With
     
              'ligne générale :
              '   SetCell correspond à la cellule cible
              '   MaxMinVal donne l'objectif (Max = 1, Min = 2, Val = 3)
              '   ValueOf est utilisé car MaxMinVal vaut 3
              '   ByChange précise les cellules variables
     
             Set CelluleObjectif = Range("AG" & i)
     
             SolverOk SetCell:=CelluleObjectif, MaxMinVal:=3, ValueOf:="0", ByChange:=CellulesVariables.Address
     
            'on lance la résolution
             SolverSolve
       Next i
    Aurais-tu des idées d'où provient l'erreur et SURTOUT comment la corriger ?

    Merci d'avance pour ton aide

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut


    Peut-être en comparant ton paramètre ByChange avec celui attendu dans l'aide VBA de SolverOk ?

    Sinon le plus rapide est de directement opérer dans la feuille de calculs et une fois la manœuvre réussie
    la réitérer en utilisant l'Enregistreur de macro …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Problème dans une macro pour ajouter une date
    Par INFINITY100 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/05/2015, 20h28
  2. Problème de syntaxe dans une requête
    Par jncoffy dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 29/02/2008, 08h53
  3. [POO] Probléme de syntaxe dans une classe
    Par jewelz dans le forum Langage
    Réponses: 3
    Dernier message: 03/11/2007, 03h57
  4. [requête]problème de syntaxe dans une insertion
    Par josua dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 16/05/2007, 08h50
  5. problème de condition dans une macro
    Par Skizo dans le forum Access
    Réponses: 3
    Dernier message: 15/05/2006, 11h22

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