Configuration automatique des itérations dans Excel

Anonyme
2015-11-23T10:43:05+00:00

Bonjour

C'est un problème un peu particulier que je souhaite vous soumettre (sous EXCEL 2010 minimum).

Je développe un programme EXCEL utilisant le calcul itératif pour de nombreuses boucles; le contenu des données de ce programme et le temps de traitement sont très variables d'une utilisation à l'autre obligeant trop fréquemment à redéfinir manuellement le nombre maximal d'itérations. je souhaiterais une configuration automatique.

Le nombre maximal d'itérations à configurer est manuel dans le menu "Fichier - Options - Formules".

Dans l'idéal, ce nombre maximal d'itérations serait à récupérer dans une cellule d'une feuille Excel et dont le contenu serait variable suivant la quantité de données de l'application à traiter. En cas d'absence de nombre dans la cellule, la configuration manuelle reprend la main.

A ma connaissance aucune instruction ne permet de réaliser cette configuration automatique du nombre maxi d'itérations.

Pour le moins serait-il possible de savoir comment et où récupérer la configuration d'Excel à l'ouverture d'un fichier (les informations de l'onglet "Options" paramétrables manuellement.

D'un niveau bien trop modeste en VBA, je recherche une macro qui permette cette configuration automatique à partir du contenu d'une cellule d'une feuille.

En remerciant d'avance celles et ceux qui pourraient m'aider à résoudre ce problème.

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

24 réponses

  1. DanielCo 107.1K Points de réputation
    2015-11-30T17:07:21+00:00

    Désolé, je ne comprends pas ce que tu cherches à faire. Quel est le but de ta macro ?

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2015-11-30T13:49:10+00:00

    Merci de télécharger le fichier Excel "Itérations" à cette adresse pour constater les 3 problèmes suivants:

    http://vri.perso.neuf.fr/public\_html/Private.htm

    * En lançant le fichier et en choisissant la séquence de Fct suivante, la macro ne s'exécute pas

    * En lançant alors la macro Itérations le nombre d'itérations max est bien modifié mais les icônes VisualBasic et Macros ne sont plus accessibles. (Macro en exécution constante)

    * Bien que configuré manuellement dans Options , Formules, l'exécution des itérations en bas de la fenêtre Excel ne s'effectue pas conformément au nombre configuré (Avec ou sans référence circulaire écrite)

    Merci de tes résultats pour rectifier cela.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. DanielCo 107.1K Points de réputation
    2015-11-29T17:07:01+00:00

    Bonsoir,

    DoEvents s'emploie sans paramètre.

    J'ai l'impression que la macro s'arrête de fonctionner lorsque je travaille dans Excel

    Sais-tu où la macro s'arrête ?

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2015-11-29T16:17:29+00:00

    Bonjour et merci de ton dernier code qui m'a bien inspiré avec le re "test" à la fin; après réflexions recherches et essais, voilà où j'en suis et c'est presque bon:

    Private Sub Worksheet_Calculate()

    With Application

    .Iteration = True

    .MaxChange = 0.01

    .MaxIterations = 2: Rem: Configuration initiale des itérations

    [Envoi!BV43] = .MaxIterations

    End With

    Rem: Dans une feuille Excel

    Rem: BW43 = N° de séquence en cours de fonctionnement (0 à 3 pour 4 séquences)

    Rem: BX26 = Nbre d'itérations max configurées par séquence (Nbre variable

    Rem: BV43 = Affichage dans Excel du Nbre d'itérations max configurées

    Retour:

    Rem: séquence 1 Attente d'un message d'Excel

    Do While [Envoi!BW43] = 0

    With Application

    .MaxIterations = [Envoi!BX26].Value

    [Envoi!BV43] = .MaxIterations

    End With

    DoEvents

    Loop

    Rem: séquence 2 Attente Nbre d'itérations max venant d'Excel

    Do While [Envoi!BW43] = 1

    With Application

    .MaxIterations = [Envoi!BX26].Value

    [Envoi!BV43] = .MaxIterations

    End With

    DoEvents

    Loop

    Rem: séquence 3 Attente du message codé

    Do While [Envoi!BW43] = 2

    With Application

    .MaxIterations = [Envoi!BX26].Value

    [Envoi!BV43] = .MaxIterations

    End With

    DoEvents

    Loop

    Rem: séquence 4 Attente d'effacement complet des données

    Do While [Envoi!BW43] = 3

    With Application

    .MaxIterations = [Envoi!BX26].Value

    [Envoi!BV43] = .MaxIterations

    End With

    DoEvents

    Loop

    GoTo Retour

    End Sub

    En mode pas à pas de la macro c'est parfait si ce n'est que je suis obligé de jongler avec les 2 fenêtres manuellement à savoir celle de la feuille excel pour faire avancer les séquences de 0 à 3 et celle de la macro pour poursuivre le pas à pas.

    Il doit manquer une information dans la macro ou dans Excel qui puisse faire exécuter la macro en permanence alors que je suis sur ma feuille Excel à configurer les séquences une par une.

    J'ai l'impression que la macro s'arrête de fonctionner lorsque je travaille dans Excel et pas moyen de la refaire travailler automatiquement mais uniquement en repointant la macro et en reprenant la suite du pas à pas dans la boucle en cours de Do While.

    DoEvents me semble utile mais je ne sais s'il y a autre chose à configurer pour cette instruction.

    Patrick

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. DanielCo 107.1K Points de réputation
    2015-11-28T14:08:27+00:00
    Sub test() <br><br>With Application <br><br>    For i = 1 To n <br><br>        .Iteration = True <br><br>        If [Envoi!BX28] = 1 Then .MaxIterations = [Envoi!BX26].Value <br><br>        If [Envoi!BX29] = 1 Then .MaxIterations = [Envoi!BX26].Value <br><br>        If [Envoi!BX30] = 1 Then .MaxIterations = [Envoi!BX26].Value <br><br>        If [Envoi!BX31] = 1 Then .MaxIterations = 2 <br><br>         .MaxChange = 0.01 <br><br>    Next i <br><br>End With <br><br>If [Condition] Then test <br><br>End Sub

    La macro "Test" est relancée si la condition est remplie.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire