Bonjour à tous
Je soumets à la communauté le problème suivant étant assez novice en VBA :
Une macro dans la feuille « Envoi » d’un classeur « A » d’Excel automatise la déclaration du Nbre d’itérations maxi dans Excel (En lieu et place de le faire manuellement dans Options / Formules).
Durant 5 séquences successives (0 à 4) le Nbre d’itérations maxi est différent (Seq 0 :2 Itérations, Seq 1 : 10 It, seq 2 ; 80 it etc.)
2 cellules de la feuille « Envoi » contiennent respectivement le N° de séquence en cours et le Nbre d’itérations maxi à configurer transmis à la macro (BW62 et BX61).

Les N° de séquences (en simulation de fonctionnement) sont obtenus dans une liste de choix de données dans le classeur « A » et l’automatisation fonctionne parfaitement.
Par contre la même configuration des N° de séquences exécutée à partir d’un autre classeur « B » ne s’effectue pas dans la macro du classeur « A » bien que les liaisons soient établies entre les 2 et que les 2 cellules de la feuille « Envoi » prennent bien en compte les choix de séquence du classeur « B » ; il est vrai que dans ce cas le classeur « A » est devenu inactif puisque c’est le « B » qui est actif.

L’extrait de programme que je soumets concerne le début, et les 2 1ères séquences ; les 3 autres sont similaires avant la réinitialisation à la 1ère séquence :

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Rem : Classeur CM avec While… Went
 
Private Sub Workbook_Open()
Dim N°seq As Integer, N°Itr As Integer, RtItr As Integer, Reinit As Byte, a0 As Byte, a1 As Byte, a2 As Byte, a3 As Byte, a4 As Byte
 
Depart:
With Application
.Iteration = True
.MaxChange = 0.01
.MaxIterations = 2: Rem: Configuration initiale du Nbre maxi d'itérations
End With
 
Rem: N°seq = BW62 = N° de séquence en cours de fonctionnement (0 à 4 pour 5 séquences successives de fonctionnement)
Rem: N°Itr = BX61 = Nbre d'itérations max configurées par séquence (Nbre variable)
Rem: a0-a1-a2-a3-a4: Ne recevoir qu'une seule fois le Nbre d'itérations dans les boucles While-Went
Rem: BZ42 = Reinit: réinitialisation
 
a0 = 0: a1 = 0: a2 = 0: a3 = 0: a4 = 0
 
Rem: séquence 0 Attente d'un message d'Excel dans le classeur « B » 
While N°seq = 0
    Rem: Test de la séquence suivante
    N°seq = Range("BW62").Value: Rem: Test de la séquence suivante àpartir d'Excel
    If a0 <> 1 Then
            Rem:Test du seul passage de ce qui suit
            With Application
            Sheets("Envoi").Activate: Rem:Activer la feuille "Envoi" du classeur de la macro (CM)
            N°Itr = Range("BX61").Value: Rem:Nbre maxi d'itérations à récupérer dans Excel
            .MaxIterations = N°Itr: Rem: Configuration dans Excel du Nbre maxi d'itérations
            [Envoi!BU63] = .MaxIterations: Rem:Affichage dans Excel du Nbre maxi d'itérations
            Rem:Affichage MsgBox N°seq & " " & N°Itr & ", " & a0 & a1 & a2 & a3 & a4
            a0 = 1: a4 = 0: Rem: 1 seul passage détecté
            End With
    End If
Reinit = Range("BZ42").Value
If Reinit = 1 Then a0 = 0
DoEvents
Wend
 
Rem: séquence 1 Message placé dans le classeur « B » l
While N°seq = 1
    N°seq = Range("BW62").Value
    If a1 <> 1 Then
            With Application
            Sheets("Envoi").Activate
            N°Itr = Range("BX61").Value
            .MaxIterations = N°Itr
            a1 = 1: a0 = 0
            [Envoi!BU63] = .MaxIterations
            Rem:MsgBox N°seq & " " & N°Itr & ", " & a0 & a1 & a2 & a3 & a4
            End With
    End If
Reinit = Range("BZ42").Value
If Reinit = 1 Then a1 = 0
DoEvents
Wend
Mes recherches infructueuses concernent l’instruction « Doevents » qui redonne la main au classeur Excel « A » pour attendre le N° de séquence suivante et la ligne « Sheets("Envoi").Activate » qui réactive la feuille du classeur « A ».
J’ai déjà testé de mettre cette ligne dans la boucle While…Went mais il devient impossible de laisser la main au classeur « B » et la boucle reste visible sur le curseur Excel ce que je ne souhaite pas.
A noter que pour chaque séquence, la configuration des itérations ne s’effectue qu’une seule fois (1 boucle) ce qui convient parfaitement.
Je remercie d’avance quelqu’un qui puisse me donner de nouvelles pistes d’écriture ou de correction de la macro pour que la configuration des itérations puisse s’effectuer à partir d’un autre classeur que celui de la macro.