Je pose cette question car je cré une boucle qui incrémente de 1 un nombre qui est par la suite transposer en binaire dans la feuille de calcul.
Ce nombre binaire est décomposé en série de "1" et "0" pour chaque ligne d un tableau. Ces nombres sont lier dynamiquement aux tableau et crée des séries de combinaison qui sont testé par des opérations dans la feuille de calcul ( des "si" et des "sommes").
Ma boucle doit alors s arrêter quand la combinaison satisfais aux valeur des "si" et "somme".
Donc je voulais savoir si excel traite en priorité la boucle puis la feuille , dans c cas meme si une bonne combinaison est trouver elle ne sera pas vus car la feuille est traiter apres ,ou si quand j'incrémente de 1 toute la feuille est traiter et dans ce cas ca marche.
Voilas j'espere avoir été assez consi .
Merci pour votre convertisseur ,je vais l'essayer sans attendre.
je mettrai un fichier exemple des que mon fichier sera impeut plus avancer car pour l'instant c est encore asser fouillis.
Comme je fais le pont c week je vai y travailler .
merci encore pour votre aide.
mais voilà un code qui fait déjà du boulot et sans doublon
Public Sub Combinaison5()
Dim intI1 As Integer, intI2 As Integer, intI3 As Integer
Dim intI4 As Integer, intI5 As Integer, intN As Integer
Dim strTab As String
Dim sngChrono As Single
strTab = UCase(InputBox("Saisissez les éléments : ", "Saisie", "ABCDEFGHI"))
sngChrono = Timer
intI1 = 1
Do Until Cells(1, intI1).Value = ""
intI1 = intI1 + 1
Loop
Cells(1, intI1).Select
intN = Len(strTab)
ActiveCell.Value = strTab
For intI1 = 1 To intN
For intI2 = 1 To intN
If intI2 <> intI1 Then
For intI3 = 1 To intN
If intI3 <> intI1 And intI3 <> intI2 Then
If Len(strTab) = 3 Then
ActiveCell.Value = Mid(strTab, intI1, 1) & Mid(strTab, intI2, 1) & Mid(strTab, intI3, 1)
ActiveCell.Offset(1, 0).Select
Else
For intI4 = 1 To intN
If intI4 <> intI1 And intI4 <> intI2 And intI4 <> intI3 Then
If Len(strTab) > 4 Then
For intI5 = 1 To intN
If intI5 <> intI1 And intI5 <> intI2 And intI5 <> intI3 And intI5 <> intI4 Then
ActiveCell.Value = Mid(strTab, intI1, 1) & Mid(strTab, intI2, 1) & Mid(strTab, intI3, 1) _
& Mid(strTab, intI4, 1) & Mid(strTab, intI5, 1)
ActiveCell.Offset(1, 0).Select
End If
Next
Else
ActiveCell.Value = Mid(strTab, intI1, 1) & Mid(strTab, intI2, 1) & Mid(strTab, intI3, 1) & Mid(strTab, intI4, 1)
ActiveCell.Offset(1, 0).Select
End If
End If
Next
End If
End If
Next
End If
Next
Next
Cells(1, ActiveCell.Column + 1).Value = (Timer - sngChrono)
End Sub
Salutations
RGI
__________________________
PS: VBA pour EXCEL est maintenant dans Bureautique
merci de poser vos questions VBA à cet endroit
salutations
RGI
Un MERCI en retour c'est sympa
et ne pas oublier le tag :après résolution.
Voilas je vous ai mis mon fichier, je suis plutot un novice de la programmation.
Alors mon prog doit surement etre plus de la "magouille" que de belle programmation dsl.
Mais né en moins ca a l ère de fonctionné, toute fois c est relativement lents.
Pourriez me dire les correctifs a apporter a ma macro et ma feuille de calcul pour qu elle soit optimome .
Le but de mon prog , je cherche des ensembles de 98 éléments valable dans un tableau de 156.
Je crée un nombre dans la macro que j'incrémente de 1 a chaque boucle, puis je le converti en 98 bits binaire (en bleu) que je sépare et affecte a mon tableau.
Pour garder 98 élément a 1 j'inverse chaque bits dans les 98 autres case, ex les
trois première case sont a "1" les trois dernière sont a "0", les trois première case sont a "0" les trois dernière sont a "1".
Quand la combinaison former répond aux condition (qui sont en haut du tableau ) les case W2, X2, Y2 (en vert) passe a "1" et stop la macro.