Fixer les valeurs d'un tableau [Résolu]

cs_lvl 17 Messages postés jeudi 28 juin 2007Date d'inscription 7 août 2007 Dernière intervention - 28 juin 2007 à 08:16 - Dernière réponse : cs_lvl 17 Messages postés jeudi 28 juin 2007Date d'inscription 7 août 2007 Dernière intervention
- 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
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 28 juin 2007 à 08:27
3
Merci
"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 !

Merci jmfmarques 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de jmfmarques
Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 28 juin 2007 à 08:39
3
Merci
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

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de jrivet
Meilleure réponse
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 28 juin 2007 à 08:42
3
Merci
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 !

Merci jmfmarques 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de jmfmarques
Meilleure réponse
cs_lvl 17 Messages postés jeudi 28 juin 2007Date d'inscription 7 août 2007 Dernière intervention - 28 juin 2007 à 08:58
3
Merci
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

Merci cs_lvl 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de cs_lvl
Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 28 juin 2007 à 08:58
3
Merci
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

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de jrivet
Meilleure réponse
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 28 juin 2007 à 08:59
3
Merci
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

Merci jmfmarques 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de jmfmarques
Meilleure réponse
cs_lvl 17 Messages postés jeudi 28 juin 2007Date d'inscription 7 août 2007 Dernière intervention - 28 juin 2007 à 09:21
3
Merci
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

Merci cs_lvl 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de cs_lvl
Meilleure réponse
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 28 juin 2007 à 09:24
3
Merci
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

Merci jmfmarques 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de jmfmarques
Meilleure réponse
cs_lvl 17 Messages postés jeudi 28 juin 2007Date d'inscription 7 août 2007 Dernière intervention - 28 juin 2007 à 09:46
3
Merci
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

Merci cs_lvl 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de cs_lvl
Meilleure réponse
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 28 juin 2007 à 12:14
3
Merci
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 !




 

Merci jmfmarques 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de jmfmarques
Meilleure réponse
cs_lvl 17 Messages postés jeudi 28 juin 2007Date d'inscription 7 août 2007 Dernière intervention - 28 juin 2007 à 12:57
3
Merci
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

Merci cs_lvl 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 82 internautes ce mois-ci

Commenter la réponse de cs_lvl
cs_lvl 17 Messages postés jeudi 28 juin 2007Date d'inscription 7 août 2007 Dernière intervention - 28 juin 2007 à 08:17
0
Merci
ps j'utilise vb 2005

merci
Commenter la réponse de cs_lvl
cs_lvl 17 Messages postés jeudi 28 juin 2007Date d'inscription 7 août 2007 Dernière intervention - 28 juin 2007 à 08:34
0
Merci
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
Commenter la réponse de cs_lvl
cs_lvl 17 Messages postés jeudi 28 juin 2007Date d'inscription 7 août 2007 Dernière intervention - 28 juin 2007 à 08:56
0
Merci
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
Commenter la réponse de cs_lvl

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.