tableau de nombres variables

Emmanuelle95

XLDnaute Junior
Bonjour tout le monde,

je veux réaliser un tableau en 7 colonnes dont je vous joint un exemple http://cjoint.com/?dEq7n1qge7.

n21, x21, n41 et x41 sont des entiers qui doivent varier de 0 à 6 pour les "n" (Z=6) et de 0 à 8 pour les "x" (X=8).

Les colonnes avec les 6 ne servent à rien. C'est juste qu'on doit avoir A=n21*x21*6 + n41*x41*6

je souhaite conserver uniquement les lignes de combinaisons de (n21,x21,n41,x41) tel qu'on vérifie la condition suivante: 134 < A <= 140

Je suis en train d'écrire ma macro. Mais j'ai des difficultés à définir mes n21, x21, n41, x41. Je souhaite dire que chacun va occuper la plage de cellules de: [A3] sur toute la colonne A pour n21, [B3] sur tte la colonne B pour x21, ...
J'utilise RANGE mais j'ai droit à "erreur 404".

Voici la macro:
Sub combinaison1()
Dim n21 As Integer, x21 As Integer, n41 As Integer, x41 As Integer, Z As Integer, X As Integer, A As Integer, n As Integer, tableau() As Byte
n21 = Range([A3], [A65635].End(xlDown))
x21 = Range([B3], [B65635].End(xlDown))
n41 = Range([D3], [D65635].End(xlDown))
x41 = Range([E3], [E65635].End(xlDown))
A = Range([F3], [F65635].End(xlDown))


Z = 6
X = 8

For n21 = 0 To Z
For x21 = 0 To X
For n41 = 0 To Z
For x41 = 0 To X

A = n21 * x21 * 6 + n41 * x41 * 6

If 134 < A <= 140 Then
ReDim Preserve tableau(n, 5)
tableau(n, 0) = n21: tableau(n, 1) = x21: tableau(n, 3) = n41: tableau(n, 4) = x41
n = n + 1
Else: Rows(n).Delete

End If


Next
Next
Next
Next




End Sub


Merci d'avance à ceux qui pourront m'aider à résoudre ce problème.
 

pierrejean

XLDnaute Barbatruc
Re : tableau de nombres variables

Bonjour Emmanuelle95

Je te propose:

Code:
Sub test()
For n = Range("A65536").End(xlUp).Row To 3 Step -1
  X = Range("A" & n) * Range("B" & n) * 6 + Range("D" & n) * Range("E" & n) * 6
  If 134 < X And X <= 140 Then
    Range("G" & n) = X
  Else
    Rows(n).Delete
  End If
Next n
End Sub
 

tototiti2008

XLDnaute Barbatruc
Re : tableau de nombres variables

Bonjour Emmanuelle95,

un essai

Code:
Sub combinaison1()
Dim n21 As Integer, x21 As Integer, n41 As Integer, x41 As Integer, Z As Integer, X As Integer, A As Integer
Dim Ligne As Long
    Z = 6
    X = 8
    Ligne = 3
        For n21 = 0 To Z
            For x21 = 0 To X
                For n41 = 0 To Z
                    For x41 = 0 To X
                        A = n21 * x21 * 6 + n41 * x41 * 6
                        If 134 < A And A <= 140 Then
                            Cells(Ligne, 1).Value = n21
                            Cells(Ligne, 2).Value = x21
                            Cells(Ligne, 4).Value = n41
                            Cells(Ligne, 5).Value = x41
                            Cells(Ligne, 7).Value = A
                            Ligne = Ligne + 1
                        End If
                    Next
                Next
            Next
        Next
End Sub
 

tototiti2008

XLDnaute Barbatruc
Re : tableau de nombres variables

Re,
Bonjour PierreJean,

Ta version est bonne si on a rempli les valeurs de x21, n21, x41, n41 dans la feuille de calcul
c'est pas ce que j'ai compris mais je peux me tromper...

visiblement Emmanuelle confond un peu Range et Tableau...
 

Emmanuelle95

XLDnaute Junior
Re : tableau de nombres variables

oui je débute avec VBA. Donc j'ai encore des soucis de compréhension.

Mais merci à tous les deux pour votre aide. En effet, je voulais que les combinaisons s'affichent mais sans avoir à les saisir.
Tototiti2008, ta version semble fonctionner. Merci encore
 

Emmanuelle95

XLDnaute Junior
Re : tableau de nombres variables

Bonjour,

Cette fois-ci, je souhaite faire varier 16 nombres n21, x21, n41, x41, n22, x22, n42, x42, n23, x23, n43, x43, n24, x24, n44, x44.

Ils doivent vérifier la condition suivante:
A = n21 * x21 * 6 + n41 * x41 * 6 + n22 * x22 * 8 + n42 * x42 * 8 + n23 * x23 * 10 + n43 * x43 * 10 + n24 * x24 * 12 + n44 * x44 * 12

et 94< A And A <= 100

les "n" varient de 0 à Z et les "x" de 0 à X.

Quand je fais tourner la macro dans ce cas là, j'ai trop de combinaisons possibles, il n'y a pas assez de lignes sur EXCEL 2003.

Alors j'ai voulu éliminé certains cas: la cas où n21=0 ou x21=0 est inutile donc on peut supprimer la ligne, de même pour n41 et X41, n22 et x22, .....

Mais la macro que j'ai écrite ne fonctionne pas, soit il y a un problème avec les "End if" ou alors avec cells(Ligne,1)=n21, ou encore j'ai eu le cas où je vois le programme chercher: des nombres défilent mais sur la première ligne.


Voici le fichier: http://cjoint.com/?dFkYhQDf6O

et la macro (je sais c'est loin d'être optimiser):

Sub combinaison2a()
[A7.Q65536].ClearContents
Dim n21 As Integer, x21 As Integer, n41 As Integer, x41 As Integer, n22 As Integer, x22 As Integer, n42 As Integer, x42 As Integer, n23 As Integer, x23 As Integer, n43 As Integer, x43 As Integer, n24 As Integer, x24 As Integer, n44 As Integer, x44 As Integer, Z As Integer, X As Integer, A As Integer, Aa As Integer, à As Integer
Dim Ligne As Long
Z = [A1]
X = [J1]
Aa = [A3]
Ab = [J3]
Ligne = 7
For n21 = 0 To Z
For x21 = 0 To X
For n41 = 0 To Z
For x41 = 0 To X
For n22 = 0 To Z
For x22 = 0 To X
For n42 = 0 To Z
For x42 = 0 To X
For n23 = 0 To Z
For x23 = 0 To X
For n43 = 0 To Z
For x43 = 0 To X
For n24 = 0 To Z
For x24 = 0 To X
For n44 = 0 To Z
For x44 = 0 To X

A = n21 * x21 * 6 + n41 * x41 * 6 + n22 * x22 * 8 + n42 * x42 * 8 + n23 * x23 * 10 + n43 * x43 * 10 + n24 * x24 * 12 + n44 * x44 * 12
If Aa < A And A <= Ab Then
Cells(Ligne, 1).Value = n21
Cells(Ligne, 2).Value = x21
Cells(Ligne, 3).Value = n41
Cells(Ligne, 4).Value = x41
Cells(Ligne, 5).Value = n22
Cells(Ligne, 6).Value = x22
Cells(Ligne, 7).Value = n42
Cells(Ligne, 8).Value = x42
Cells(Ligne, 9).Value = n23
Cells(Ligne, 10).Value = x23
Cells(Ligne, 11).Value = n43
Cells(Ligne, 12).Value = x43
Cells(Ligne, 13).Value = n24
Cells(Ligne, 14).Value = x24
Cells(Ligne, 15).Value = n44
Cells(Ligne, 16).Value = x44
Cells(Ligne, 17).Value = A

ElseIf n21 = 0 Or x21 = 0 Then Ligne = Delete

ElseIf n41 = 0 Or x41 = 0 Then Ligne = Delete

ElseIf n22 = 0 Or x22 = 0 Then Ligne = Delete

ElseIf n42 = 0 Or x42 = 0 Then Ligne = Delete

ElseIf n23 = 0 Or x23 = 0 Then Ligne = Delete

ElseIf n43 = 0 Or x43 = 0 Then Ligne = Delete

ElseIf n24 = 0 Or x24 = 0 Then Ligne = Delete

ElseIf n44 = 0 Or x44 = 0 Then Ligne = Delete

Else: Ligne = Ligne + 1
End If

Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
End Sub
 

tototiti2008

XLDnaute Barbatruc
Re : tableau de nombres variables

Bonjour,


essaye un peu comme ça pour voir :

Code:
Sub combinaison2a()
[A7.Q65536].ClearContents
Dim n21 As Integer, x21 As Integer, n41 As Integer, x41 As Integer, n22 As Integer, x22 As Integer, n42 As Integer, x42 As Integer, n23 As Integer, x23 As Integer, n43 As Integer, x43 As Integer, n24 As Integer, x24 As Integer, n44 As Integer, x44 As Integer, Z As Integer, X As Integer, A As Integer, Aa As Integer, à As Integer
Dim Ligne As Long
Z = [A1]
X = [J1]
Aa = [A3]
Ab = [J3]
Ligne = 7
For n21 = 0 To Z
For x21 = 0 To X
For n41 = 0 To Z
For x41 = 0 To X
For n22 = 0 To Z
For x22 = 0 To X
For n42 = 0 To Z
For x42 = 0 To X
For n23 = 0 To Z
For x23 = 0 To X
For n43 = 0 To Z
For x43 = 0 To X
For n24 = 0 To Z
For x24 = 0 To X
For n44 = 0 To Z
For x44 = 0 To X

A = n21 * x21 * 6 + n41 * x41 * 6 + n22 * x22 * 8 + n42 * x42 * 8 + n23 * x23 * 10 + n43 * x43 * 10 + n24 * x24 * 12 + n44 * x44 * 12
If Aa < A And A <= Ab Then
Cells(Ligne, 1).Value = n21
Cells(Ligne, 2).Value = x21
Cells(Ligne, 3).Value = n41
Cells(Ligne, 4).Value = x41
Cells(Ligne, 5).Value = n22
Cells(Ligne, 6).Value = x22
Cells(Ligne, 7).Value = n42
Cells(Ligne, 8).Value = x42
Cells(Ligne, 9).Value = n23
Cells(Ligne, 10).Value = x23
Cells(Ligne, 11).Value = n43
Cells(Ligne, 12).Value = x43
Cells(Ligne, 13).Value = n24
Cells(Ligne, 14).Value = x24
Cells(Ligne, 15).Value = n44
Cells(Ligne, 16).Value = x44
Cells(Ligne, 17).Value = A
Ligne = Ligne + 1
End If

Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
End Sub
 

Emmanuelle95

XLDnaute Junior
Re : tableau de nombres variables

cette macro là, je l'ai déja. Elle fonctionne mais il y a tellement de combinaisons possibles qu'il n'y a pas assez de lignes dans EXCEL 2003.

C'est pour ça que dans ma macro, je souhaite rajouter des conditions. En effet, si sur une ligne, j'ai:
n21=0 ou x21=0
et/ ou n41=0 ou x41=0
et/ou n22=0 ou x22=0
et/ou n42=0 ou x42=0
et/ou n23=0 ou x23=0
et/ou n42=0 ou x43=0
et/ou n24=0 ou x24=0
et/ou n44=0 ou x44=0
cette ligne est alors inutile. Elle doit être éliminée et ne pas apparaître.

(par contre pour chaque cas, je garde le cas où ils st tous les 2 nuls)
 

pierrejean

XLDnaute Barbatruc
Re : tableau de nombres variables

Re

TITI J'ai testé une version modifiée de ta macro pour afficher plusieurs tableaux de 65000 lignes et j'en suis a plus de 12 tableaux

Emmanuelle , je presume que tu recherches un optimum (maxi ou mini de A)
Dans ce cas il faudrait peut-etre restreindre l'affichage aux possibilité de det optimum
Qu'en penses-tu ?
 

tototiti2008

XLDnaute Barbatruc
Re : tableau de nombres variables

Bonjour PierreJean,

Je dois avouer que je n'ai pas testé... tout dépend des valeurs de X et Z, je suppose.

Sinon, d'accord avec toi, il faut filtrer les résultats sur un critère (plus restrictif que n=0 ou x=0) pour vraiment limiter les résultats
 

Emmanuelle95

XLDnaute Junior
Re : tableau de nombres variables

mon optimum c'est d'atteindre mon rendement par jour, que je nomme Ab dans la macro. Mais j'ai peur que pour certaines valeurs de Ab, il n'y ait aucune combinaison.

Sinon vous avez trouvé quelque chose qui déja élimine les lignes où n=0 ou x=0?

Je vais essayer de passer en EXCEL2007 pour avoir plus de lignes ou alors de ne prendre que les cas avec les "8" et "10".
 

tototiti2008

XLDnaute Barbatruc
Re : tableau de nombres variables

Re,

s'il ne s'agit que de place de sockage, on peut t'écrire les résultats dans un fichier texte, mais la question qui se pose est :

Que feras-tu de 650000 lignes de résultats ? Est-ce cohérent à analyser ?
 

job75

XLDnaute Barbatruc
Re : tableau de nombres variables

Bonjour le fil,

Que feras-tu de 650000 lignes de résultats ? Est-ce cohérent à analyser ?

Sur ce fil :

https://www.excel-downloads.com/threads/trouver-les-meilleures-combinaisons.138528/

je me posais la même question et écrivais au post #15 :

Pourquoi vouloir à tout prix rechercher des combinaisons ?

Il s'agit en fait de LOGISTIQUE, avec une recherche d'optimisation si j'ai bien compris.

Je vous conseille donc de parcourir les livres spécialisés sur cette discipline.

A+
 

Discussions similaires

Réponses
29
Affichages
1 K

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 643
dernier inscrit
adriano22