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. Anonyme
    2015-11-24T12:18:16+00:00

    Super cela avance avec ton aide; 2 petits problèmes subsistent:

    Voilà la 1ère macro que j'ai écrit dans le fichier principal

    Sub Itérations()

    With Application

    .Iteration = True

    .MaxIterations = 50

    End With

    End Sub

    Après une exécution de la macro, il est possible de voir 50 écrit dans la configuration manuelle des itérations (menu options puis formule) alors qu'il y avait une autre valeur d'itérations affichée précédent l'exécution.

    Cela correspond donc bien à ce que je souhaitais: Modifier le Nbre maxi d'itérations automatiquement .

    Par contre l'exécution a eu lieu 1 fois seulement et non de manière automatique régulièrement; pour le démontrer, une re configuration manuelle après exécution de la macro est prise en compte mais plus la valeur écrite dans la macro sauf re exécution de celle-ci alors que cette mise à jour devrait être permanente avec la valeur enregistrée.

    2ème  écriture de la macro en remplaçant le nombre maxi d'itérations chiffré par la valeur contenue dans une cellule du programme Excel (onglet "Envoi" du fichier et cellule "BX26" qui contient la valeur (variable) d'itérations à configurer automatiquement.

    L'exécution de la macro indique: *Erreur d'exécution '424' et Objet requis.*A 1ère vue, Envoi.[BX26] ne semble pas être reconnu...

    Sub Itérations()

    With Application

    .Iteration = True

    .MaxIterations = Envoi.[BX26]

    End With

    End Sub

    Si tu peux m'aider à corriger ces 2 petites erreurs dans cette macro, je t'en remercie.

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

    0 commentaires Aucun commentaire
  2. Anonyme
    2015-11-24T09:32:34+00:00

    Merci, je vais tester cela avec une page de code et te tenir au courant du résultat.

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

    0 commentaires Aucun commentaire
  3. DanielCo 107.1K Points de réputation
    2015-11-23T21:55:47+00:00

    > il récupère le maximum d'itérations configuré (manuellement dans les options) pour une utilisation dans les cellules.

    Non. Il fixe les valeurs, par exemple :

    With Application <br><br> .Iteration = True <br><br> .MaxIterations = 500 <br><br> .MaxChange = 0.0002 <br><br>End With

    Je ne suis pas sûr que ce soit ce que tu veuilles. Par exemple , pour boucler 100 fois :

    Dim Ctr As Integer, Var As Integer <br><br>Var = 100 <br><br>For I = 1 To Var <br><br>    Ctr = Ctr + 10 <br><br>Next I

    En changeant la valeur de la variable "Var", tu changes le nombre de boucles.

    Daniel

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

    0 commentaires Aucun commentaire
  4. Anonyme
    2015-11-23T20:23:13+00:00

    Merci beaucoup pour cette 1ère réponse.

    Je ne suis pas expérimenté avec ce langage mais si je comprends bien cet extrait de programme, il récupère le maximum d'itérations configuré (manuellement dans les options) pour une utilisation dans les cellules.

    Il s'agit en fait d'exactement l'inverse: Une valeur maximum d'itérations variable suivant la configuration d'utilisation et contenue dans une cellule Excel sera envoyée (???) au programme source Excel pour effectuer le nombre d'itérations souhaité (comme s'il était configuré manuellement dans les options d'Excel).

    Il ne s'agit donc pas de compter le nombre de boucles effectuées mais de définir le nombre de boucles à effectuer.

    J'espère que ces explications pourront mieux éclairer ce que je souhaite.

    Merci de votre attention dans tous les cas

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

    0 commentaires Aucun commentaire
  5. DanielCo 107.1K Points de réputation
    2015-11-23T12:30:51+00:00

    Bonjour,

    Est-ce bien cette option que tu veux utiliser ? Elle ne sert que dans des cas très particuliers.

    Le code est celui-ci :

    With Application <br><br> .Iteration = True <br><br> .MaxIterations = x <br><br> .MaxChange = y <br><br>End With

    S'il s'agit de compter le nombre de boucles à effectuer, il faut t'y prendre autrement. Dans ce cas, dis-nous ce que tu veux faire ?

    Cordialement.

    Daniel

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

    0 commentaires Aucun commentaire