Tableau sous VBA(Dim Tablo ?)

Bonjour,

Pour vérifier les données d'un autre fichier Excel, j'aurais besoin de comparer à postériori avec le fichier joint ( cet exemple est simplifié au maximum).

Je n'arrive pas à comparer une séquence ( séquence exacte dans le même ordre) inscrite dans la macro (abcde) avec les valeurs successives dans la cellule C4 ( car il ne doit rien y avoir en Feuil1, hormis C4), c'est ce résultat en C4 qui me permettra de faire ma vérification à postériori.

le code à modifier svp est dans le fichier joint.

Merci

Bonjour

Sans être convaincu de ce que tu recherches

Sub Tableau()
Dim Sequence
Dim I As Integer, Indice As Integer

  Sequence = Array(3, 1, 8, 4, 1)
  For I = 1 To 5000
    [C4] = Int(10 * Rnd) + 1
    If [C4] = Sequence(Indice) Then
      Indice = Indice + 1
      If Indice > UBound(Sequence) Then
        MsgBox "Séquence trouvée : " & I
        Exit Sub
      End If
    Else
      Indice = 0
    End If
  Next I
End Sub

Bonjour Banzai64,

Je te remercie de ton code qui me fait avancer.

je n'ai pas compris le Indice = Indice + 1 ?

(pour vérifier c'est difficile, ça défile vite !!!)

Quand la séquence 3 1 8 4 1 est trouvée, la macro stoppe, pas au dernier chiffre de la séquence donc ici le 1 , mais au nombre suivant du RND.

Est ce cela le Indice = Indice + 1 ?

merci

Bonjour

Indice indique avec quel élément du tableau (Sequence) il faut comparer C4

Pour que le message s'affiche il faut que 5 tirages successifs correspondent aux 5 chiffres de la séquence voulue

Tirage I --> Compare avec l'élément 1 ( Indice=0 ) si oui Indice = Indice + 1 sinon Indice = 0

Tirage I +1 --> Compare avec l'élément 2 (indice=1) si oui Indice = Indice + 1 sinon Indice = 0

Tirage I +2 --> Compare avec l'élément 3 (indice=2) si oui Indice = Indice + 1 sinon Indice = 0

Tirage I +3 --> Compare avec l'élément 4 (indice=3) si oui Indice = Indice + 1 sinon Indice = 0

Tirage I +4 --> Compare avec l'élément 5 (indice=4) si oui Indice = Indice + 1 et message sinon Indice = 0

J'ai fait plusieurs essais et à chaque fois que le message est apparu j'avais bien le 1 d'affiché

Re,

J'ai moi aussi fait des essais, le principe est bon mais le code a stoppé plusieurs fois aussi sur le 1, d'où mon message.

En fait, avec ton explication, il stopperait à I+5 et non I+4

Exemple:

1 3 6 4 2 8 4 3 6 9 1 ..........3 1 8 4 1 6 la séquence est trouvée mais stoppe au 6. (I+5)

Si tu as un moment pour me dire comment dois-je modifier pour cela?

merci

Bonjour

Tu dis que tu as fait plusieurs essais et que le chiffre affiché est le 1 : C'est ce que tu cherches non ?

JJ1 a écrit :

En fait, avec ton explication, il stopperait à I+5 et non I+4

Expliques moi comment tu en arrives à cette conclusion ?

Re,

Regarde svp mon exemple au dessus, après la séquence trouvée le prochain nombre ( ici le 6) juste qui suit la séquence.

je cherche l'affichage du tirage de plus dans la continuité de la séquence, donc I+5 (mais comparé à rien).

Dans mon exemple au dessus, la macro stopperait sur 6

Est ce plus précis?

Merci

Bonjour

Donc une fois la séquence trouvée il t'affiche le tirage du chiffre suivant ?

Modifies le code

Sub Tableau()
Dim Sequence
Dim I As Integer, Indice As Integer

  Sequence = Array(3, 1, 8, 4, 1)
  For I = 1 To 5000
    [C4] = Int(10 * Rnd) + 1
      If Indice > UBound(Sequence) Then
        MsgBox "Séquence trouvée : " & I
        Exit Sub
      End If
    If [C4] = Sequence(Indice) Then
      Indice = Indice + 1
    Else
      Indice = 0
    End If
  Next I
End Sub

Re,

Merci pour ta réponse rapide. Parfait ! C'est bien le but pour mon contrôle.

PS: Comment être sûr que le T+1 (ici le 6) soit bien dans la continuité de tous les T précédents (et pas un tirage supplémentaire à part) ?

merci à toi.

Bonne soirée

Bonjour

Je ne sais pas si je te comprends bien

JJ1 a écrit :

Comment être sûr que le T+1 (ici le 6) soit bien dans la continuité de tous les T précédents (et pas un tirage supplémentaire à part) ?

C'est à la fois dans la continuité et c'est aussi un tirage supplémentaire

Bonjour,

Ton code fonctionne bien. Ce matin j'ai voulu le simplifier avec un "joker" dans ton premier code de 14:29 (où il s'arrête à T et non T+1)

comme ça:

(pour tester, je n'ai mis que 3 valeurs + le "joker" et uniquement jusqu'à 5), le code devant stopper à y

mais il ne trouve plus la séquence ?

Sub Tableau()

Dim Sequence

Dim I As Integer, Indice As Integer

y = 1 Or y = 2 Or y = 3 Or y = 4 Or y = 5

Sequence = Array(3, 1, 2, y)

For I = 1 To 500

[C4] = Int(5 * Rnd) + 1

If [C4] = Sequence(Indice) Then

Indice = Indice + 1

If Indice > UBound(Sequence) Then

MsgBox "Séquence trouvée : " & I

Exit Sub

End If

Else

Indice = 0

End If

Next I

End Sub

Je reste sur le 2ème code (T+1).

Bonne journée et merci

Bonjour

Quelle est la question ?

Bizarre ce code

y = 1 Or y = 2 Or y = 3 Or y = 4 Or y = 5

y sera toujours à 1

Et la séquence est trouvée

Bonsoir,

Il n'y avait pas de question car ton code à T+1 fonctionne.

J'avais l'idée, pour éviter le T+1, de stopper à T mais en agrandissant la plage du tableau d'une valeur qui pouvant prendre une des valeurs de 1 à 5 (d'où mon y= 1 OR...),

ex: Sequence = Array(3, 1, 2, y) donc le code devait stopper après avoir trouvé à T: 3 1 2 et un nombre de 1 à 5 (ici y)

mais je n'ai pas ta connaissance en vba et je me suis planté!!!

Merci et bonne soirée

Rechercher des sujets similaires à "tableau vba dim tablo"