OVH Cloud OVH Cloud

PB logique, mathématique, intellectuel ;-)

18 réponses
Avatar
\(\( Olivier \)\)
Bonjour,

J'ai un problème que je n'arrive pas a résoudre.

J'ai un tableau de String, par exemple:

Montableau(0) = "AAA"
Montableau(1) = "AAA"
Montableau(2) = "BBB"
Montableau(3) = "BBB"
Montableau(4) = "CCC"
Montableau(5) = "CCC"

Je voudrais faire une boucle sur chaque items et lorsque la valeur change
effectuer un traitement.
Bon, la boucle j'y arive, mais il me saute toujours le dernier items ?


Merci
Olivier

10 réponses

1 2
Avatar
John Fuss
c quoi ta boucle ???

ce sera surement plus instuctif de la corriger que d'en ressortir une.

John

"(( Olivier ))" a écrit dans le message de news:
#
Bonjour,

J'ai un problème que je n'arrive pas a résoudre.

J'ai un tableau de String, par exemple:

Montableau(0) = "AAA"
Montableau(1) = "AAA"
Montableau(2) = "BBB"
Montableau(3) = "BBB"
Montableau(4) = "CCC"
Montableau(5) = "CCC"

Je voudrais faire une boucle sur chaque items et lorsque la valeur change
effectuer un traitement.
Bon, la boucle j'y arive, mais il me saute toujours le dernier items ?


Merci
Olivier




Avatar
\(\( Olivier \)\)
Dim Value As String
Dim OldValue As String

Value = ""
OldValue = ""

For i = 0 To nMax

Value = Montableau(i)

If (Value <> OldValue Then
' traitement
End if

next i











"John Fuss" a écrit dans le message de
news:
c quoi ta boucle ???

ce sera surement plus instuctif de la corriger que d'en ressortir une.

John

"(( Olivier ))" a écrit dans le message de news:
#
> Bonjour,
>
> J'ai un problème que je n'arrive pas a résoudre.
>
> J'ai un tableau de String, par exemple:
>
> Montableau(0) = "AAA"
> Montableau(1) = "AAA"
> Montableau(2) = "BBB"
> Montableau(3) = "BBB"
> Montableau(4) = "CCC"
> Montableau(5) = "CCC"
>
> Je voudrais faire une boucle sur chaque items et lorsque la valeur


change
> effectuer un traitement.
> Bon, la boucle j'y arive, mais il me saute toujours le dernier items ?
>
>
> Merci
> Olivier
>
>




Avatar
Crevecoeur Jérôme
Faites votre boucle comme suit:

For i= montableau.Lbound to Montableau.Ubound
If Oldvalue<>Montableau(i) Then
'Traitrement
End if
oldvalue=Montableau(i)
Next i


Mais le mieux est de montrer votre code

Cordialement
--
----------------------------------------------------------------------------
--------------------
Crévecoeur Jérôme

ACS INFORMATIQUE
122,rue du Château d'orgemont
49000 ANGERS
Tel: 02 41 68 42 36 Fax: 02 41 68 42 48
----------------------------------------------------------------------------
---------------------
"John Fuss" a écrit dans le message de
news:
c quoi ta boucle ???

ce sera surement plus instuctif de la corriger que d'en ressortir une.

John

"(( Olivier ))" a écrit dans le message de news:
#
> Bonjour,
>
> J'ai un problème que je n'arrive pas a résoudre.
>
> J'ai un tableau de String, par exemple:
>
> Montableau(0) = "AAA"
> Montableau(1) = "AAA"
> Montableau(2) = "BBB"
> Montableau(3) = "BBB"
> Montableau(4) = "CCC"
> Montableau(5) = "CCC"
>
> Je voudrais faire une boucle sur chaque items et lorsque la valeur


change
> effectuer un traitement.
> Bon, la boucle j'y arive, mais il me saute toujours le dernier items ?
>
>
> Merci
> Olivier
>
>




Avatar
André Joubert
Bonjour/soir,
le code publié ici me semble bon.
Il y aura un traitement pour les items 0, 2 et 4.
Alors regarde ton vrai code et compare avec celui que tu as soumis.
Il y a surement un bug dans le code que tu n'as pas publié.
Ça arrive souvent, on pense soumettre du code qui est le même que celui
qu'on utilise, mais ce n,est pas le cas. Si tu veux faire débugger ton vrai
code
il faudra le soumettre.
André


"(( Olivier ))" wrote in message
news:


Dim Value As String
Dim OldValue As String

Value = ""
OldValue = ""

For i = 0 To nMax

Value = Montableau(i)

If (Value <> OldValue Then
' traitement
End if

next i











"John Fuss" a écrit dans le message de
news:
> c quoi ta boucle ???
>
> ce sera surement plus instuctif de la corriger que d'en ressortir une.
>
> John
>
> "(( Olivier ))" a écrit dans le message de news:
> #
> > Bonjour,
> >
> > J'ai un problème que je n'arrive pas a résoudre.
> >
> > J'ai un tableau de String, par exemple:
> >
> > Montableau(0) = "AAA"
> > Montableau(1) = "AAA"
> > Montableau(2) = "BBB"
> > Montableau(3) = "BBB"
> > Montableau(4) = "CCC"
> > Montableau(5) = "CCC"
> >
> > Je voudrais faire une boucle sur chaque items et lorsque la valeur
change
> > effectuer un traitement.
> > Bon, la boucle j'y arive, mais il me saute toujours le dernier items ?
> >
> >
> > Merci
> > Olivier
> >
> >
>
>




Avatar
\(\( Olivier \)\)
Merci, merci pour tout ces efforts, mais, car il y a un mais:
(PS: J'ai mis le code VB5 en bas, pour que vous compreniez mieux, j'espère)

Cela ne résout pas le problème du dernier item.
Dans ce cas et uniquement dans le cas du dernier item du tableau,
If (Value <> OldValue) ne vaudra jamais False donc, le dernier item ne sera
pas pris en compte.

J'explique ce que je veux faire.
A chaque rupture, je veux envoyer les valeurs vers un SubRoutine.

Par exemple, quand je vois arriver "BBB", cela veut dire que les "AAA" sont
terminés alors j'envoie tous les "AAA" vers ma SubRoutine. Ensuite quand je
vois arriver "CCC", cela veut dire que les "BBB" sont terminés alors
j'envoie tous les "BBB" vers ma SubRoutine, etc, etc...

Dans tous les cas, sauf le dernier, ma subroutine aura deux éléments :
Montableau(0), Montableau(1) ' "AAA"
Montableau(2), Montableau(3) ' "BBB"

Seulement dans le dernier cas, il n'yaura qu'un seul item :
Montableau(10) ' "FFF" ' il manque le dernier !

J'espère avoir été assez explicite ;-)

Merci
Olivier

'///////////////////////////////////////////////////////////////////////////
////////////////////////////////
Dim OldValue As String
Dim Chaine As String
Dim MonTableau(11) As String

Private Sub FillArray()
MonTableau(0) = "AAA"
MonTableau(1) = "AAA"

MonTableau(2) = "BBB"
MonTableau(3) = "BBB"

MonTableau(4) = "CCC"
MonTableau(5) = "CCC"

MonTableau(6) = "DDD"
MonTableau(7) = "DDD"

MonTableau(8) = "EEE"
MonTableau(9) = "EEE"

MonTableau(10) = "FFF"
MonTableau(11) = "FFF"

End Sub

Private Sub Command1_Click()

Call FillArray

For i = 0 To 11

If OldValue <> MonTableau(i) And i > 0 Then
' ON NE PASSE JAMAIS ICI AVEC LES VALEURS "FFFFFF" ? Pourquoi ?
Call Traitement(Chaine)
Chaine = ""

End If

Chaine = Chaine & MonTableau(i)
OldValue = MonTableau(i)
Next i

End Sub

Private Sub Traitement(Value As String)
' Içi, dans le dernier cas, Value ne vaut jamais "FFFFFF" ???
MsgBox Value
End Sub

'///////////////////////////////////////////////////////////////////////////
////////////////////////////////



"Bruno" a écrit dans le message de
news:bj2hhs$iob$

"(( Olivier ))" a écrit dans le message de
news:%
> Bonjour,
>
> J'ai un problème que je n'arrive pas a résoudre.
>
> J'ai un tableau de String, par exemple:
>
> Montableau(0) = "AAA"
> Montableau(1) = "AAA"
> Montableau(2) = "BBB"
> Montableau(3) = "BBB"
> Montableau(4) = "CCC"
> Montableau(5) = "CCC"
>
> Je voudrais faire une boucle sur chaque items et lorsque la valeur


change
> effectuer un traitement.
> Bon, la boucle j'y arive, mais il me saute toujours le dernier items ?
>
>
> Merci
> Olivier
>
Bonjour,

Faire une comparaison entre deux tableaux, le second est le reflet du
premier. Si le second est identique (par son contenu) au premier, les
valeurs n'ont pas changée ...

Cdlt,




Avatar
Bismark Prods
Private Sub Command1_Click()
Dim OldValue As String
Dim I As Long

Call FillArray
OldValue = ""

For I = LBound(MonTableau) To UBound(MonTableau)
If MonTableau(I) <> OldValue Then
Debug.Print MonTableau(I)
OldValue = MonTableau(I)
End If
Next I

End Sub

Pas besoin de se couper les cheveux en 4 !

"(( Olivier ))" a écrit dans le message de
news:%
Merci, merci pour tout ces efforts, mais, car il y a un mais:
(PS: J'ai mis le code VB5 en bas, pour que vous compreniez mieux,


j'espère)

Cela ne résout pas le problème du dernier item.
Dans ce cas et uniquement dans le cas du dernier item du tableau,
If (Value <> OldValue) ne vaudra jamais False donc, le dernier item ne


sera
pas pris en compte.

J'explique ce que je veux faire.
A chaque rupture, je veux envoyer les valeurs vers un SubRoutine.

Par exemple, quand je vois arriver "BBB", cela veut dire que les "AAA"


sont
terminés alors j'envoie tous les "AAA" vers ma SubRoutine. Ensuite quand


je
vois arriver "CCC", cela veut dire que les "BBB" sont terminés alors
j'envoie tous les "BBB" vers ma SubRoutine, etc, etc...

Dans tous les cas, sauf le dernier, ma subroutine aura deux éléments :
Montableau(0), Montableau(1) ' "AAA"
Montableau(2), Montableau(3) ' "BBB"

Seulement dans le dernier cas, il n'yaura qu'un seul item :
Montableau(10) ' "FFF" ' il manque le dernier !

J'espère avoir été assez explicite ;-)

Merci
Olivier




'///////////////////////////////////////////////////////////////////////////
////////////////////////////////
Dim OldValue As String
Dim Chaine As String
Dim MonTableau(11) As String

Private Sub FillArray()
MonTableau(0) = "AAA"
MonTableau(1) = "AAA"

MonTableau(2) = "BBB"
MonTableau(3) = "BBB"

MonTableau(4) = "CCC"
MonTableau(5) = "CCC"

MonTableau(6) = "DDD"
MonTableau(7) = "DDD"

MonTableau(8) = "EEE"
MonTableau(9) = "EEE"

MonTableau(10) = "FFF"
MonTableau(11) = "FFF"

End Sub

Private Sub Command1_Click()

Call FillArray

For i = 0 To 11

If OldValue <> MonTableau(i) And i > 0 Then
' ON NE PASSE JAMAIS ICI AVEC LES VALEURS "FFFFFF" ? Pourquoi


?
Call Traitement(Chaine)
Chaine = ""

End If

Chaine = Chaine & MonTableau(i)
OldValue = MonTableau(i)
Next i

End Sub

Private Sub Traitement(Value As String)
' Içi, dans le dernier cas, Value ne vaut jamais "FFFFFF" ???
MsgBox Value
End Sub




'///////////////////////////////////////////////////////////////////////////
////////////////////////////////



"Bruno" a écrit dans le message de
news:bj2hhs$iob$
>
> "(( Olivier ))" a écrit dans le message de
> news:%
> > Bonjour,
> >
> > J'ai un problème que je n'arrive pas a résoudre.
> >
> > J'ai un tableau de String, par exemple:
> >
> > Montableau(0) = "AAA"
> > Montableau(1) = "AAA"
> > Montableau(2) = "BBB"
> > Montableau(3) = "BBB"
> > Montableau(4) = "CCC"
> > Montableau(5) = "CCC"
> >
> > Je voudrais faire une boucle sur chaque items et lorsque la valeur
change
> > effectuer un traitement.
> > Bon, la boucle j'y arive, mais il me saute toujours le dernier items ?
> >
> >
> > Merci
> > Olivier
> >
> Bonjour,
>
> Faire une comparaison entre deux tableaux, le second est le reflet du
> premier. Si le second est identique (par son contenu) au premier, les
> valeurs n'ont pas changée ...
>
> Cdlt,
>
>




Avatar
\(\( Olivier \)\)
Heu... merci , mais je crois pas que vous avez lu le message.
Le code que vous m'avez donné, ne fonctionne pas mieux.

S'il vous plait, essayer le mien et dites moi ce qui ne marche pas ?
Faite une form + un command, un copier coller de mon code et vous verrez que
cela ne marche pas.



"Bismark Prods" a écrit dans le message de
news:%
Private Sub Command1_Click()
Dim OldValue As String
Dim I As Long

Call FillArray
OldValue = ""

For I = LBound(MonTableau) To UBound(MonTableau)
If MonTableau(I) <> OldValue Then
Debug.Print MonTableau(I)
OldValue = MonTableau(I)
End If
Next I

End Sub

Pas besoin de se couper les cheveux en 4 !

"(( Olivier ))" a écrit dans le message de
news:%
> Merci, merci pour tout ces efforts, mais, car il y a un mais:
> (PS: J'ai mis le code VB5 en bas, pour que vous compreniez mieux,
j'espère)
>
> Cela ne résout pas le problème du dernier item.
> Dans ce cas et uniquement dans le cas du dernier item du tableau,
> If (Value <> OldValue) ne vaudra jamais False donc, le dernier item ne
sera
> pas pris en compte.
>
> J'explique ce que je veux faire.
> A chaque rupture, je veux envoyer les valeurs vers un SubRoutine.
>
> Par exemple, quand je vois arriver "BBB", cela veut dire que les "AAA"
sont
> terminés alors j'envoie tous les "AAA" vers ma SubRoutine. Ensuite quand
je
> vois arriver "CCC", cela veut dire que les "BBB" sont terminés alors
> j'envoie tous les "BBB" vers ma SubRoutine, etc, etc...
>
> Dans tous les cas, sauf le dernier, ma subroutine aura deux éléments :
> Montableau(0), Montableau(1) ' "AAA"
> Montableau(2), Montableau(3) ' "BBB"
>
> Seulement dans le dernier cas, il n'yaura qu'un seul item :
> Montableau(10) ' "FFF" ' il manque le dernier !
>
> J'espère avoir été assez explicite ;-)
>
> Merci
> Olivier
>
>



'///////////////////////////////////////////////////////////////////////////
> ////////////////////////////////
> Dim OldValue As String
> Dim Chaine As String
> Dim MonTableau(11) As String
>
> Private Sub FillArray()
> MonTableau(0) = "AAA"
> MonTableau(1) = "AAA"
>
> MonTableau(2) = "BBB"
> MonTableau(3) = "BBB"
>
> MonTableau(4) = "CCC"
> MonTableau(5) = "CCC"
>
> MonTableau(6) = "DDD"
> MonTableau(7) = "DDD"
>
> MonTableau(8) = "EEE"
> MonTableau(9) = "EEE"
>
> MonTableau(10) = "FFF"
> MonTableau(11) = "FFF"
>
> End Sub
>
> Private Sub Command1_Click()
>
> Call FillArray
>
> For i = 0 To 11
>
> If OldValue <> MonTableau(i) And i > 0 Then
> ' ON NE PASSE JAMAIS ICI AVEC LES VALEURS "FFFFFF" ?


Pourquoi
?
> Call Traitement(Chaine)
> Chaine = ""
>
> End If
>
> Chaine = Chaine & MonTableau(i)
> OldValue = MonTableau(i)
> Next i
>
> End Sub
>
> Private Sub Traitement(Value As String)
> ' Içi, dans le dernier cas, Value ne vaut jamais "FFFFFF" ???
> MsgBox Value
> End Sub
>
>



'///////////////////////////////////////////////////////////////////////////
> ////////////////////////////////
>
>
>
> "Bruno" a écrit dans le message de
> news:bj2hhs$iob$
> >
> > "(( Olivier ))" a écrit dans le message de
> > news:%
> > > Bonjour,
> > >
> > > J'ai un problème que je n'arrive pas a résoudre.
> > >
> > > J'ai un tableau de String, par exemple:
> > >
> > > Montableau(0) = "AAA"
> > > Montableau(1) = "AAA"
> > > Montableau(2) = "BBB"
> > > Montableau(3) = "BBB"
> > > Montableau(4) = "CCC"
> > > Montableau(5) = "CCC"
> > >
> > > Je voudrais faire une boucle sur chaque items et lorsque la valeur
> change
> > > effectuer un traitement.
> > > Bon, la boucle j'y arive, mais il me saute toujours le dernier items


?
> > >
> > >
> > > Merci
> > > Olivier
> > >
> > Bonjour,
> >
> > Faire une comparaison entre deux tableaux, le second est le reflet du
> > premier. Si le second est identique (par son contenu) au premier, les
> > valeurs n'ont pas changée ...
> >
> > Cdlt,
> >
> >
>
>




Avatar
Crevecoeur Jérôme
Faites votre traitement également à la sortie de la boucle sur le dernier
élément comem ça vous êtes sur de ne pas le louper !

--
----------------------------------------------------------------------------
--------------------
Crévecoeur Jérôme

ACS INFORMATIQUE
122,rue du Château d'orgemont
49000 ANGERS
Tel: 02 41 68 42 36 Fax: 02 41 68 42 48
----------------------------------------------------------------------------
---------------------
"(( Olivier ))" a écrit dans le message de
news:
Heu... merci , mais je crois pas que vous avez lu le message.
Le code que vous m'avez donné, ne fonctionne pas mieux.

S'il vous plait, essayer le mien et dites moi ce qui ne marche pas ?
Faite une form + un command, un copier coller de mon code et vous verrez


que
cela ne marche pas.



"Bismark Prods" a écrit dans le message de
news:%
> Private Sub Command1_Click()
> Dim OldValue As String
> Dim I As Long
>
> Call FillArray
> OldValue = ""
>
> For I = LBound(MonTableau) To UBound(MonTableau)
> If MonTableau(I) <> OldValue Then
> Debug.Print MonTableau(I)
> OldValue = MonTableau(I)
> End If
> Next I
>
> End Sub
>
> Pas besoin de se couper les cheveux en 4 !
>
> "(( Olivier ))" a écrit dans le message de
> news:%
> > Merci, merci pour tout ces efforts, mais, car il y a un mais:
> > (PS: J'ai mis le code VB5 en bas, pour que vous compreniez mieux,
> j'espère)
> >
> > Cela ne résout pas le problème du dernier item.
> > Dans ce cas et uniquement dans le cas du dernier item du tableau,
> > If (Value <> OldValue) ne vaudra jamais False donc, le dernier item ne
> sera
> > pas pris en compte.
> >
> > J'explique ce que je veux faire.
> > A chaque rupture, je veux envoyer les valeurs vers un SubRoutine.
> >
> > Par exemple, quand je vois arriver "BBB", cela veut dire que les "AAA"
> sont
> > terminés alors j'envoie tous les "AAA" vers ma SubRoutine. Ensuite


quand
> je
> > vois arriver "CCC", cela veut dire que les "BBB" sont terminés alors
> > j'envoie tous les "BBB" vers ma SubRoutine, etc, etc...
> >
> > Dans tous les cas, sauf le dernier, ma subroutine aura deux éléments :
> > Montableau(0), Montableau(1) ' "AAA"
> > Montableau(2), Montableau(3) ' "BBB"
> >
> > Seulement dans le dernier cas, il n'yaura qu'un seul item :
> > Montableau(10) ' "FFF" ' il manque le dernier !
> >
> > J'espère avoir été assez explicite ;-)
> >
> > Merci
> > Olivier
> >
> >
>



'///////////////////////////////////////////////////////////////////////////
> > ////////////////////////////////
> > Dim OldValue As String
> > Dim Chaine As String
> > Dim MonTableau(11) As String
> >
> > Private Sub FillArray()
> > MonTableau(0) = "AAA"
> > MonTableau(1) = "AAA"
> >
> > MonTableau(2) = "BBB"
> > MonTableau(3) = "BBB"
> >
> > MonTableau(4) = "CCC"
> > MonTableau(5) = "CCC"
> >
> > MonTableau(6) = "DDD"
> > MonTableau(7) = "DDD"
> >
> > MonTableau(8) = "EEE"
> > MonTableau(9) = "EEE"
> >
> > MonTableau(10) = "FFF"
> > MonTableau(11) = "FFF"
> >
> > End Sub
> >
> > Private Sub Command1_Click()
> >
> > Call FillArray
> >
> > For i = 0 To 11
> >
> > If OldValue <> MonTableau(i) And i > 0 Then
> > ' ON NE PASSE JAMAIS ICI AVEC LES VALEURS "FFFFFF" ?
Pourquoi
> ?
> > Call Traitement(Chaine)
> > Chaine = ""
> >
> > End If
> >
> > Chaine = Chaine & MonTableau(i)
> > OldValue = MonTableau(i)
> > Next i
> >
> > End Sub
> >
> > Private Sub Traitement(Value As String)
> > ' Içi, dans le dernier cas, Value ne vaut jamais "FFFFFF" ???
> > MsgBox Value
> > End Sub
> >
> >
>



'///////////////////////////////////////////////////////////////////////////
> > ////////////////////////////////
> >
> >
> >
> > "Bruno" a écrit dans le message de
> > news:bj2hhs$iob$
> > >
> > > "(( Olivier ))" a écrit dans le message de
> > > news:%
> > > > Bonjour,
> > > >
> > > > J'ai un problème que je n'arrive pas a résoudre.
> > > >
> > > > J'ai un tableau de String, par exemple:
> > > >
> > > > Montableau(0) = "AAA"
> > > > Montableau(1) = "AAA"
> > > > Montableau(2) = "BBB"
> > > > Montableau(3) = "BBB"
> > > > Montableau(4) = "CCC"
> > > > Montableau(5) = "CCC"
> > > >
> > > > Je voudrais faire une boucle sur chaque items et lorsque la valeur
> > change
> > > > effectuer un traitement.
> > > > Bon, la boucle j'y arive, mais il me saute toujours le dernier


items
?
> > > >
> > > >
> > > > Merci
> > > > Olivier
> > > >
> > > Bonjour,
> > >
> > > Faire une comparaison entre deux tableaux, le second est le reflet


du
> > > premier. Si le second est identique (par son contenu) au premier,


les
> > > valeurs n'ont pas changée ...
> > >
> > > Cdlt,
> > >
> > >
> >
> >
>
>




Avatar
Bismark Prods
Jusqu'a preuve du contraire je ne poste jamais un code qui ne fonctionne pas
! Et j'ai précisément fait le copier-coller puis j'ai corrigé et cela donne
le resultat escompté !

Mais si votre intéret c'est de poster pour faire joli alors ok !

"(( Olivier ))" a écrit dans le message de
news:
Heu... merci , mais je crois pas que vous avez lu le message.
Le code que vous m'avez donné, ne fonctionne pas mieux.

S'il vous plait, essayer le mien et dites moi ce qui ne marche pas ?
Faite une form + un command, un copier coller de mon code et vous verrez


que
cela ne marche pas.



"Bismark Prods" a écrit dans le message de
news:%
> Private Sub Command1_Click()
> Dim OldValue As String
> Dim I As Long
>
> Call FillArray
> OldValue = ""
>
> For I = LBound(MonTableau) To UBound(MonTableau)
> If MonTableau(I) <> OldValue Then
> Debug.Print MonTableau(I)
> OldValue = MonTableau(I)
> End If
> Next I
>
> End Sub
>
> Pas besoin de se couper les cheveux en 4 !
>
> "(( Olivier ))" a écrit dans le message de
> news:%
> > Merci, merci pour tout ces efforts, mais, car il y a un mais:
> > (PS: J'ai mis le code VB5 en bas, pour que vous compreniez mieux,
> j'espère)
> >
> > Cela ne résout pas le problème du dernier item.
> > Dans ce cas et uniquement dans le cas du dernier item du tableau,
> > If (Value <> OldValue) ne vaudra jamais False donc, le dernier item ne
> sera
> > pas pris en compte.
> >
> > J'explique ce que je veux faire.
> > A chaque rupture, je veux envoyer les valeurs vers un SubRoutine.
> >
> > Par exemple, quand je vois arriver "BBB", cela veut dire que les "AAA"
> sont
> > terminés alors j'envoie tous les "AAA" vers ma SubRoutine. Ensuite


quand
> je
> > vois arriver "CCC", cela veut dire que les "BBB" sont terminés alors
> > j'envoie tous les "BBB" vers ma SubRoutine, etc, etc...
> >
> > Dans tous les cas, sauf le dernier, ma subroutine aura deux éléments :
> > Montableau(0), Montableau(1) ' "AAA"
> > Montableau(2), Montableau(3) ' "BBB"
> >
> > Seulement dans le dernier cas, il n'yaura qu'un seul item :
> > Montableau(10) ' "FFF" ' il manque le dernier !
> >
> > J'espère avoir été assez explicite ;-)
> >
> > Merci
> > Olivier
> >
> >
>



'///////////////////////////////////////////////////////////////////////////
> > ////////////////////////////////
> > Dim OldValue As String
> > Dim Chaine As String
> > Dim MonTableau(11) As String
> >
> > Private Sub FillArray()
> > MonTableau(0) = "AAA"
> > MonTableau(1) = "AAA"
> >
> > MonTableau(2) = "BBB"
> > MonTableau(3) = "BBB"
> >
> > MonTableau(4) = "CCC"
> > MonTableau(5) = "CCC"
> >
> > MonTableau(6) = "DDD"
> > MonTableau(7) = "DDD"
> >
> > MonTableau(8) = "EEE"
> > MonTableau(9) = "EEE"
> >
> > MonTableau(10) = "FFF"
> > MonTableau(11) = "FFF"
> >
> > End Sub
> >
> > Private Sub Command1_Click()
> >
> > Call FillArray
> >
> > For i = 0 To 11
> >
> > If OldValue <> MonTableau(i) And i > 0 Then
> > ' ON NE PASSE JAMAIS ICI AVEC LES VALEURS "FFFFFF" ?
Pourquoi
> ?
> > Call Traitement(Chaine)
> > Chaine = ""
> >
> > End If
> >
> > Chaine = Chaine & MonTableau(i)
> > OldValue = MonTableau(i)
> > Next i
> >
> > End Sub
> >
> > Private Sub Traitement(Value As String)
> > ' Içi, dans le dernier cas, Value ne vaut jamais "FFFFFF" ???
> > MsgBox Value
> > End Sub
> >
> >
>



'///////////////////////////////////////////////////////////////////////////
> > ////////////////////////////////
> >
> >
> >
> > "Bruno" a écrit dans le message de
> > news:bj2hhs$iob$
> > >
> > > "(( Olivier ))" a écrit dans le message de
> > > news:%
> > > > Bonjour,
> > > >
> > > > J'ai un problème que je n'arrive pas a résoudre.
> > > >
> > > > J'ai un tableau de String, par exemple:
> > > >
> > > > Montableau(0) = "AAA"
> > > > Montableau(1) = "AAA"
> > > > Montableau(2) = "BBB"
> > > > Montableau(3) = "BBB"
> > > > Montableau(4) = "CCC"
> > > > Montableau(5) = "CCC"
> > > >
> > > > Je voudrais faire une boucle sur chaque items et lorsque la valeur
> > change
> > > > effectuer un traitement.
> > > > Bon, la boucle j'y arive, mais il me saute toujours le dernier


items
?
> > > >
> > > >
> > > > Merci
> > > > Olivier
> > > >
> > > Bonjour,
> > >
> > > Faire une comparaison entre deux tableaux, le second est le reflet


du
> > > premier. Si le second est identique (par son contenu) au premier,


les
> > > valeurs n'ont pas changée ...
> > >
> > > Cdlt,
> > >
> > >
> >
> >
>
>




Avatar
\(\( Olivier \)\)
Rien de ne sert de s'énerver ;-)
J'ai utilisé votre code et il ne fonctionne pas en ce qui concerne le
dernier item.
Mais bon, je crois que je vais arreter la discussion car je pense que je ne
suis pas fait bien comprendre.
C'est pas grave, je vais continuer mes recherches et surtout continuer a
rajouter un item.add en dernier pour pouvoir faire la rupture du dernier
item.

Merci à tous pour vos réponses
Olivier


"Bismark Prods" a écrit dans le message de
news:
Jusqu'a preuve du contraire je ne poste jamais un code qui ne fonctionne


pas
! Et j'ai précisément fait le copier-coller puis j'ai corrigé et cela


donne
le resultat escompté !

Mais si votre intéret c'est de poster pour faire joli alors ok !

"(( Olivier ))" a écrit dans le message de
news:
> Heu... merci , mais je crois pas que vous avez lu le message.
> Le code que vous m'avez donné, ne fonctionne pas mieux.
>
> S'il vous plait, essayer le mien et dites moi ce qui ne marche pas ?
> Faite une form + un command, un copier coller de mon code et vous verrez
que
> cela ne marche pas.
>
>
>
> "Bismark Prods" a écrit dans le message de
> news:%
> > Private Sub Command1_Click()
> > Dim OldValue As String
> > Dim I As Long
> >
> > Call FillArray
> > OldValue = ""
> >
> > For I = LBound(MonTableau) To UBound(MonTableau)
> > If MonTableau(I) <> OldValue Then
> > Debug.Print MonTableau(I)
> > OldValue = MonTableau(I)
> > End If
> > Next I
> >
> > End Sub
> >
> > Pas besoin de se couper les cheveux en 4 !
> >
> > "(( Olivier ))" a écrit dans le message de
> > news:%
> > > Merci, merci pour tout ces efforts, mais, car il y a un mais:
> > > (PS: J'ai mis le code VB5 en bas, pour que vous compreniez mieux,
> > j'espère)
> > >
> > > Cela ne résout pas le problème du dernier item.
> > > Dans ce cas et uniquement dans le cas du dernier item du tableau,
> > > If (Value <> OldValue) ne vaudra jamais False donc, le dernier item


ne
> > sera
> > > pas pris en compte.
> > >
> > > J'explique ce que je veux faire.
> > > A chaque rupture, je veux envoyer les valeurs vers un SubRoutine.
> > >
> > > Par exemple, quand je vois arriver "BBB", cela veut dire que les


"AAA"
> > sont
> > > terminés alors j'envoie tous les "AAA" vers ma SubRoutine. Ensuite
quand
> > je
> > > vois arriver "CCC", cela veut dire que les "BBB" sont terminés alors
> > > j'envoie tous les "BBB" vers ma SubRoutine, etc, etc...
> > >
> > > Dans tous les cas, sauf le dernier, ma subroutine aura deux éléments


:
> > > Montableau(0), Montableau(1) ' "AAA"
> > > Montableau(2), Montableau(3) ' "BBB"
> > >
> > > Seulement dans le dernier cas, il n'yaura qu'un seul item :
> > > Montableau(10) ' "FFF" ' il manque le dernier !
> > >
> > > J'espère avoir été assez explicite ;-)
> > >
> > > Merci
> > > Olivier
> > >
> > >
> >
>



'///////////////////////////////////////////////////////////////////////////
> > > ////////////////////////////////
> > > Dim OldValue As String
> > > Dim Chaine As String
> > > Dim MonTableau(11) As String
> > >
> > > Private Sub FillArray()
> > > MonTableau(0) = "AAA"
> > > MonTableau(1) = "AAA"
> > >
> > > MonTableau(2) = "BBB"
> > > MonTableau(3) = "BBB"
> > >
> > > MonTableau(4) = "CCC"
> > > MonTableau(5) = "CCC"
> > >
> > > MonTableau(6) = "DDD"
> > > MonTableau(7) = "DDD"
> > >
> > > MonTableau(8) = "EEE"
> > > MonTableau(9) = "EEE"
> > >
> > > MonTableau(10) = "FFF"
> > > MonTableau(11) = "FFF"
> > >
> > > End Sub
> > >
> > > Private Sub Command1_Click()
> > >
> > > Call FillArray
> > >
> > > For i = 0 To 11
> > >
> > > If OldValue <> MonTableau(i) And i > 0 Then
> > > ' ON NE PASSE JAMAIS ICI AVEC LES VALEURS "FFFFFF" ?
> Pourquoi
> > ?
> > > Call Traitement(Chaine)
> > > Chaine = ""
> > >
> > > End If
> > >
> > > Chaine = Chaine & MonTableau(i)
> > > OldValue = MonTableau(i)
> > > Next i
> > >
> > > End Sub
> > >
> > > Private Sub Traitement(Value As String)
> > > ' Içi, dans le dernier cas, Value ne vaut jamais "FFFFFF" ???
> > > MsgBox Value
> > > End Sub
> > >
> > >
> >
>



'///////////////////////////////////////////////////////////////////////////
> > > ////////////////////////////////
> > >
> > >
> > >
> > > "Bruno" a écrit dans le message de
> > > news:bj2hhs$iob$
> > > >
> > > > "(( Olivier ))" a écrit dans le message de
> > > > news:%
> > > > > Bonjour,
> > > > >
> > > > > J'ai un problème que je n'arrive pas a résoudre.
> > > > >
> > > > > J'ai un tableau de String, par exemple:
> > > > >
> > > > > Montableau(0) = "AAA"
> > > > > Montableau(1) = "AAA"
> > > > > Montableau(2) = "BBB"
> > > > > Montableau(3) = "BBB"
> > > > > Montableau(4) = "CCC"
> > > > > Montableau(5) = "CCC"
> > > > >
> > > > > Je voudrais faire une boucle sur chaque items et lorsque la


valeur
> > > change
> > > > > effectuer un traitement.
> > > > > Bon, la boucle j'y arive, mais il me saute toujours le dernier
items
> ?
> > > > >
> > > > >
> > > > > Merci
> > > > > Olivier
> > > > >
> > > > Bonjour,
> > > >
> > > > Faire une comparaison entre deux tableaux, le second est le reflet
du
> > > > premier. Si le second est identique (par son contenu) au premier,
les
> > > > valeurs n'ont pas changée ...
> > > >
> > > > Cdlt,
> > > >
> > > >
> > >
> > >
> >
> >
>
>




1 2