Fixer les valeurs d'un tableau

Résolu
Signaler
Messages postés
17
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
7 août 2007
-
Messages postés
17
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
7 août 2007
-
Je suis nouveaux et j'ai un petit problème,  j'ai un tableau de base ou j'ai entré des infos que je ne veux plus modifier. Je ne sais pas pkoi mais, quand il a fini de faire d'addition suivante, il modifie mon tableau de base et je ne veux pas ca. J'espère que qu’une âme charitable voudrait bien me répondre !!!!




test = tblBase


a = tblbase2(position)


b = test(position)


tblbase2(position) = a + b

'a la suite de cette ligne mon tableau de base est modifié


valeurMin = tblbase2(0)

merci lvl

14 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
"Je ne sais pas pkoi mais, quand il a fini de faire d'addition suivante, il modifie mon tableau de base et je ne veux pas ca

tblbase2(position) = a + b

'a la suite de cette ligne mon tableau de base est modifié"


Or c'est exactement la signification de ton code : passer la valeur a + b à l'indice du tavleau qui contenait la valeur a !
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Non ce n'est pas vraiment plus clair.
Peu etre devrais tu effectuer des copies de ton tableau de base.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
On ne voit pas ton tableau tblbase ni a quoi il correspond, ni si l'un ou l'autre de ces deux tableaux est ou non lié à quoi que ce soit (qui, étant alors modifié, entraînerait forcément la même modification dans le tableau) !
Sans ton code, il faudrait être devin !
Messages postés
17
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
7 août 2007

Désolé pour cette complexité de ma part




<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 






J’ai un tableau tblbase donc je ne veux rien modifier.



J’ai par la suite copié tblbase dans test (qui lui aussi est un tableau), pour ne pas que mon tableau de base soit modifié.




 






Par la suite ‘’a ‘’prend la bonne valeur (0,25) et ‘’ b’’(0,25) aussi jusque la tout va bien.




 






Ensuite tblbase2 prend bien la valeur (0,50) mais je ne sais pas pkoi la valeur de ‘’b’’ passe elle aussi a (0,50) en même temps.




 






Pourtant il n’a pas d’autre opération en même temps




 






Merci pour votre persévérance




 






lvl
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Non vraiment on avancera pas... désolé mais dans ce que tu dis c'est b qui change de valeur et Non ton TblBase qui est modifier.
Alors si on veux avancer.
Montre nous les valeur de TblBase et TblBase2 (en espérant qu'il n'y en ai pas 5000)

Car sinon on va perdre du temps pour rien.
@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Vraiment désolé,

Mais ces "précisions" n'en sont pas ... et ne nous apportent à vrai dire rien .


Nous ne pourrons t'aider que si l'on voit tout le code qui fait (à ton insu peut-être ou pare maladresse) interagir tes deux tableaux
Messages postés
17
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
7 août 2007

Voici j’ai une form qui contient 4 textboxs et deux boutons, je n’ai pas changé le nb des textbox mais celui des boutons sont btCalculer et btQuitter.





<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

 







Si vous assayez avec les simples valeurs  4 2 1,  le messagebox devrait donner 0,25 0,50, 0,50 0,75 1 1 1  mais il saute le 0,75 car le tableau test se modifie au cour de l’exécution, je ne comprend pas pkoi






 







Voici le code complet ce n’est pas vraiment long





merci lv











Public
Class Form1

Dim tblOrdre(2)
As
Integer
Dim tblOrdre2(2)
As
Integer
Dim tblbase2(2)
As
Double
Dim position
As
Integer
Dim i
As
Integer
Dim x
As
Integer








Private



Sub
btCalculer_Click(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles
btCalculer.Click


Dim
tblBase(2)

As



Double

tblBase(0) = TextBox1.Text
tblBase(1) = TextBox2.Text
tblBase(2) = TextBox3.Text


'trouver le plus grand dénominateur commun






Dim
fin

As



Integer
= UBound(tblBase)

'trouver le nb d'élément maximun du tableau

Dim
valeurMax

As



Integer
= tblBase(0)


For
i = 0

To
fin

'comparer les valeurs du tableau pour obtenir la plus grande

If
tblBase(i) > valeurMax

Then
valeurMax = tblBase(i)


Next
i


Dim
PGCD

As



Integer
= 1


Dim
j

As



Integer

Dim
k

As



Integer

Dim
z

As



Integer
= 0


For
j = 1

To
valeurMax

'divise chaque nombre a partir de 1 jusqua la plus grande valeur

   For
k = 0

To
fin

''vérifie si il est possible de la deviser en obtenant un entier
   
If
Val(tblBase(k) / j) =

CInt
(tblBase(k) / j)

Then
   
z = z + 1


   End



If
   
Next
k
   

If
z = (fin + 1)

Then



'vérifie si tout les nombres du tableau on été divisé 
   
PGCD = j
   

End



If
   
z = 0


Next


'one to one

Dim
nbCycle

As



Integer

Dim
valeurMin

As



Double

Dim
g

As



Integer

Dim
Y

As



Integer


For
i = 0

To
fin

' trouver le nb de cycle a effectuer

nbCycle = nbCycle + (tblBase(i) / PGCD)


Next






Dim
tblsequence(nbCycle)

As



Integer

For
i = 0

To
fin

'trouve la grosseur des lots optimuns

tblBase(i) = PGCD / tblBase(i)


Next






Dim
test(2)

As



Double


' trouver l'ordre de séquence pour utilisé le plus ancien

For
x = 0

To
fin

' remplir le tableau ordre

tblOrdre(x) = (x)


Next
x
tblbase2 = tblBase

'remplir le tableau base 2

valeurMin = tblbase2(0)


For
Y = 0

To
nbCycle


For
g = 0

To
fin

' trouver la valeur min

If
(tblbase2(tblOrdre(g))) <= valeurMin

Then
tblsequence(Y) = (tblOrdre(g))


If
(tblbase2(tblOrdre(g))) <= valeurMin

Then
position = tblOrdre(g)


Next
gMessageBox.Show(valeurMin)


Dim
a

As



Double

Dim
b

As



Double

test = tblBase
a = tblbase2(position)
b = test(position)
tblbase2(position) = a + b
valeurMin = tblbase2(0)


If
position = 0

Then



GoTo
Saut

'si la valeur de position est déja au début du tableau ordre

tblOrdre2(0) = tblOrdre(position)


For
i = 0

To
(position - 1)
tblOrdre2(i + 1) = tblOrdre(i)


Next

For
i = (position + 1)

To
fin
tblOrdre2(i) = tblOrdre(i)


Next

tblOrdre = tblOrdre2
Saut:







Next
Y


Dim
reponse

As



String

reponse =

"reponse"

For
i = 0

To
nbCycle - 1
reponse = reponse +

" "
+

"p"
+ (

CStr
(tblsequence(i) + 1))


Next

TextBox5.Text = reponse


End



Sub






Private



Sub
btQuitter_Click(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles
btQuitter.Click


End

End



SubEnd





Class
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
test = tblBase

a = tblbase2(position)



b = test(position)



tblbase2(position) = a + b


Cherche où et sous quelle forme (isolément ou dans une boucle), tu aurais pu écrire que

soit  tblBase = tblbase2
soit
test = tblbase2
soit encore
test(position) = tblbase2(position)
soit enfin
tblbase(position) = tblbase2.position

La gébnération spontanée n'existe pas .... même en développement informatique
Messages postés
17
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
7 août 2007

Merci de  ton aide 615490 jmfmarques 




<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 






Mon problème est la j’avais bien regardé cela et j'ai encore vérifié. Je ne retrouve pas ca dans mon code et de plus quand je le fait rouler étape par étape quand la ligne tblBase2(position) = a +b est en jaune soit juste avant d’être exécuter tout est ok mais quand il passe a  la ligne suivant et bien il change ma valeur de test. Je ne comprends pas pkoi ?




 






Merci encore



lvl
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Je viens de transposer pour VB6 (mon langage de développement) la partie concernant les manipulations, ainsi :

Dim tblOrdre(2) As Integer
Dim tblOrdre2(2) As Integer




Private Sub Command1_Click()
  Dim tblbase(2) As Double
  tblbase(0) = 1
  tblbase(1) = 2
  tblbase(2) = 3
  Let tblbase2 = tblbase 'remplir le tableau base 2
  position = 1
  Dim a As Double
  Dim b As Double
  test = tblbase
  a = tblbase2(position)
  MsgBox a ' et j'obtiens biens 2
  b = test(position)
  MsgBox b ' et j'obtiens bien b (normal car copie)
  tblbase2(position) = a + b
  MsgBox test(position) ' et j'obtiens bien 2 et non 2+2 = 4
  MsgBox tblbase(position) ' et j'obtiens bien 2 et non 2+2 = 4
End Sub

Conclusions possibles :
1) tblbase2 = tblBase 'remplir le tableau base 2
aurait une autre signification sous VB.Net ?
Dans ce cas : générer plutôt le tableau tblbase2 par une boucle sur tblbase
et kif kif pour la table test
2) tu as un code qui interviendrait ailleurs !




 
Messages postés
17
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
7 août 2007

Finalement tu as raison !!!!   Tu  as trouvé mon problème, en passant par des boucles tout s’arrange et tout fonctionne comme sur des roulettes. Je te remercie énormément du temps et des efforts consacré à ma question. Félicitation et merci mille fois




<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 






Très bonne continuité




 






lvl
Messages postés
17
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
7 août 2007

ps j'utilise vb 2005

merci
Messages postés
17
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
7 août 2007

désolé je vais etre un petit peu plus clair

je veux que mon tblbase2 soit modifier mais je veux que mon tblbase reste intact

J'espere être plus clair

merci

lvl
Messages postés
17
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
7 août 2007

Désolé pour cette complexité de ma part




<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 






J’ai un tableau tblbase donc je ne veux rien modifier.



J’ai par la suite copié tblbase dans test (qui lui aussi est un tableau), pour ne pas que mon tableau de base soit modifié.




 






Par la suite ‘’a ‘’prend la bonne valeur (0,25) et ‘’ b’’(0,25) aussi jusque la tout va bien.




 






Ensuite tblbase2 prend bien la valeur (0,50) mais je ne sais pas pkoi la valeur de ‘’b’’ passe elle aussi a (0,50) en même temps.




 






Pourtant il n’a pas d’autre opération en même temps




 






Merci pour votre persévérance




 






lvl