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
| Sub MaBoucle()
Dim i As Integer
iNbCol = Range("A1").CurrentRegion.Columns.Count - 1 ' Nb de colonnes (-1 -> colonne des Z retirée
iNbLg = Range("A1").CurrentRegion.Rows.Count ' Nbre de lignes renseignées
For i = 2 To iNbLg 'de la seconde ligne à la dernière
Mfr 1, "", 0, Cells(i, iNbCol + 1) 'lance la procédure récursive avec la valeur de Z pour la ligne i
Next
End Sub
'
' Ma procedure recursive
'
Sub Mfr(ByVal j As Integer, ByVal stformule As String, ByVal res As Long, Z As Long)
'j = 1 au départ puis incrémenté ici (*)
'stformule = "" au départ, puis = stNewFormule constituée ici (**) et validée
'là (*****) et ligne suivante
'res = 0 au départ, puis = l (l est traité ici (***) et devient res ici (****)
'Z = Cells(i, NoColonne des Z) => Z de chaque ligne
Dim iLigne As Integer
Dim l As Long
Dim stNewFormule As String
For iLigne = 2 To iNbLg
'Là, iNbLg semble manquer mais suffit de reprendre la formule donnée dans "MaBoucle" Debug.Print "Test pour : " & Cells(iLigne, j).Address
l = Cells(iLigne, j) + res '(***) Somme des cellules
stNewFormule = stformule & "+" & Cells(iLigne, j).Address '(**) Constitution de la formule (Résultat)
'cette formule est transitoire et ne sera effective que si... lignes suivantes
If l <= Z Then 'si l <= Z et... voir sinon ---> (*****)
If j + 1 <= iNbCol Then '...si NoColonne <= NoColonne Z...
Mfr j + 1, stNewFormule, l, Z '(*) (****) '... boucle sur Mfr avec la nouvelle formule
Else '... sinon
If l = Z Then '... si l = Z on passe à la ligne suivante des Z
Debug.Print " ============== GAGNE === > ";
Else 'sinon on continue
Debug.Print "...";
End If
Debug.Print stNewFormule & " =>" & l & " pour " & Z
End If
Else ' ---> on passe sans rien faire à la ligne suivante des valeurs (Next iLigne)
Debug.Print " Trop grand Abandon : " & stNewFormule & " = " & l
End If
Next
'quand toutes les lignes et colonnes ont été examinées pour un Z donné, on retourne
'dans la procédure "MaBoucle()" pour lire le Z suivant
End Sub |
Partager