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-28T13:01:13+00:00

    OK

    Pour être clair et concis:

    Le programme d'une macro (sans boucle) se lance à l'ouverture d'un fichier Excel; une fois la macro effectuée (End Sub), je cherche le moyen de la relancer automatiquement (avec une condition suivant l'état d'une cellule Excel) sans avoir à ré exécuter la macro manuellement (Triangle vert du menu de la macro).

    Tu m'a bien aidé à transmettre un nombre d'itérations là où il faut; il reste à modifier automatiquement ce nombre au début d'une autre séquence de fonctionnement.

    J'espère que cela sera encore plus clair

    Merci d'avance

    Patrick

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

    0 commentaires Aucun commentaire
  2. DanielCo 107.1K Points de réputation
    2015-11-28T11:28:11+00:00

    Bonjour,

    Tu devrais m'expliquer ce que tu cherches à faire, plutôt que de poster elui qui ne fonctionne pas; on gagnerait du temps.

    Pour le test, je n'aurai pas le temps.

    Désolé.

    Daniel

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

    0 commentaires Aucun commentaire
  3. Anonyme
    2015-11-27T19:47:53+00:00

    Voilà le programme test que j'ai écrit pour observer ce qui se passe

    Private Sub Worksheet_Calculate()

    *X:n = [Envoi!BX32]*rem: Valeur maxi de la boucle

    For i = 1 To n

     With Application rem: Cette partie en gras fonctionne très bien seulement en ré exécutant manuellement la macro

    .Iteration = True

    If [Envoi!BX28] = 1 Then .MaxIterations = [Envoi!BX26].Value

    If [Envoi!BX29] = 1 Then .MaxIterations = [Envoi!BX26].Value

    If [Envoi!BX30] = 1 Then .MaxIterations = [Envoi!BX26].Value

    If [Envoi!BX31] = 1 Then .MaxIterations = 2

    .MaxChange = 0.01

    End With

    [Envoi!BX33] = i rem: Valeur de i affichée dans Excel

    Next i rem: Boucle de i

    GoTo x rem: Boucle permanente interrompue par Echap

    End Sub

    En gras tout fonctionne bien (sans les boucles) à la seule condition de relacer manuellement l'exécution de la macro (triangle vert du menu macro) entre chacune des 3 séquences (BX28 -BX29 - BX30) et au retour au repos (BX31).

    le problème des boucles c'est que durant leur exécution (en permanence avec goto x), il est impossible d'utiliser les cellules Excel et donc de poursuivre le fonctionnement. Ce n'est donc pas viable.

    Je suppose que en ouvrant le fichier CM et donc sa macro, l'exécution de celle-ci s'effectue 1 fois; ce qui conviendrait c'est que la macro se ré exécute au début des autres séquences de fonctionnement. (en remplacement de l'action sur le bouton d'exécution de la macro - triangle vert)

    Si cela peut se résoudre, la solution est définitivement trouvée.

    Concernant le craquage du logiciel, il s'agit dans sa version finalisée de supprimer les protections de fichiers et d'onglets puis d'essayer de comprendre sa logique de codage et décodage en analysant... les 100.000 cellules le constituant et contenant aucune information de repérage et un nombre de leurres important; autant dire Y passer des jours au mieux... plus raisonnablement des mois.

    Pour m'aider activement dans mon questionnement, je pourrais te te donner l'une des 5 options de fonctionnement possibles en 3 ou 4 fichiers mais seulement si cela t'intéresse.

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

    0 commentaires Aucun commentaire
  4. DanielCo 107.1K Points de réputation
    2015-11-26T20:02:17+00:00

    Teste et vois si ça correspond à ton besoin.

    Autre chose (mais en lien); serais-tu intéressé pour (tester et/ou craquer puis essayer d'analyser) mon logiciel Excel d'ici à quelques temps lorsqu'il sera entièrement finalisé puisqu'il ne me reste que ce problème à résoudre?

    Qu'est-ce que tu entends par "craquer" ? Sinon, je ne dispose pas de trop de temps. A voir.

    Daniel

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

    0 commentaires Aucun commentaire
  5. Anonyme
    2015-11-26T18:33:55+00:00

    Pour te répondre, je ne sais pas s'il faut effectuer une boucle.

    Dans une séquence d'utilisation il y a 3 séquences:

    Séquence 1: un message original est collé dans 1 cellule - i=1

    Séquence 2: Le nombre d'itérations max est calculé par Excel (en fonction de la longueur du message original)  - i=2

    Séquence 3: Le message codé est collé dans une cellule; effacement manuel du message original - i=3 (10 itérations sont nécessaires pour vider nombre de cellules

    Puis retour au départ

    Si je suis sûr que ta dernière proposition de macro (sans boucle) modifie dans chacune des 3 séquences le nombre d'itérations max c'est bon; si ce n'est pas le cas est ce que la boucle su programme ci-dessous te semble répondre à ce cahier des charges?

    Sub test()

    For i=0 to 3

    If [Envoi!BX2]<>""then i=1 Rem' BX2 <>0 si message original placé - BX26=6

    If [Envoi!BX3]<>""then i=2 Rem' BX3 <>0 si Nbre d'itérations max calculé par Excel - BX26= 145 par exemple

    If [Envoi!BX4]<>""then i=3 else 0 Rem' BX2 <>0 si message codé présent - BX26= 10

    Application.MaxIterations = [Envoi!BX26].Value

    Next i

    End sub

    Autre chose (mais en lien); serais-tu intéressé pour (tester et/ou craquer puis essayer d'analyser) mon logiciel Excel d'ici à quelques temps lorsqu'il sera entièrement finalisé puisqu'il ne me reste que ce problème à résoudre?

    Cordialement

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

    0 commentaires Aucun commentaire