Fixer les valeurs d'un tableau

Résolu
cs_lvl Messages postés 17 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 7 août 2007 - 28 juin 2007 à 08:16
cs_lvl Messages postés 17 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 7 août 2007 - 28 juin 2007 à 12:57
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

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
28 juin 2007 à 08: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 !
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
28 juin 2007 à 08:39
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
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
28 juin 2007 à 08:42
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 !
3
cs_lvl Messages postés 17 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 7 août 2007
28 juin 2007 à 08:58
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
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
28 juin 2007 à 08: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
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
28 juin 2007 à 08:59
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
3
cs_lvl Messages postés 17 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 7 août 2007
28 juin 2007 à 09:21
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
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
28 juin 2007 à 09:24
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
3
cs_lvl Messages postés 17 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 7 août 2007
28 juin 2007 à 09:46
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
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
28 juin 2007 à 12:14
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 !




 
3
cs_lvl Messages postés 17 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 7 août 2007
28 juin 2007 à 12:57
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
3
cs_lvl Messages postés 17 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 7 août 2007
28 juin 2007 à 08:17
ps j'utilise vb 2005

merci
0
cs_lvl Messages postés 17 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 7 août 2007
28 juin 2007 à 08:34
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
0
cs_lvl Messages postés 17 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 7 août 2007
28 juin 2007 à 08:56
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
0
Rejoignez-nous