Inverser 2 éléments d'un tableau

[Résolu]
Signaler
Messages postés
4
Date d'inscription
vendredi 23 novembre 2007
Statut
Membre
Dernière intervention
28 janvier 2008
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
Bonjour, je début en VB.net, et la procédure suivante devrait inverser les 2 élément du tableau, mais elle ne fonction pas. Exemple, elle prend l'élément 2 et le place dans 3, mais elle ne place pas 3 dans 2?

Private



Sub
cmdInver_Click(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles
cmdInver.ClickEcrEmpl((RangEmpl))


'On vérifie pour ne pas être sur le premier enregistrement ensuite on inverse les rangs






If
RangEmpl > 1

Then

gEmployes(RangEmpl) = gEmployes(RangEmpl - 1)


gEmployes(RangEmpl - 1) = gEmployes(RangEmpl)


LireEmpl((RangEmpl))







End



If






End



Sub

4 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
salut

beh oui... tu fais
b= a
a=b 'qui a déjà changé..., donc b=a pour le a d'origine, soit gEmployes(RangEmpl - 1)

donc forcément çà ne risque pas de fonctionner, il te faut passer par uen variable temporaire
temp=gEmployes(RangEmpl - 1)

gEmployes(RangEmpl - 1) = gEmployes(RangEmpl)

gEmployes(RangEmpl)
=temp

ps : c'est sensé fait quoi çà :  EcrEmpl((RangEmpl))
?
++
<hr size ="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
389
Date d'inscription
dimanche 7 avril 2002
Statut
Membre
Dernière intervention
23 septembre 2016
2
Salut PCPT
juste pour rire, si gEmployes est un tableau de nombres, on peut faire

gEmployes(RangEmpl - 1)+=gEmployes(RangEmpl)
gEmployes(RangEmpl)=gEmployes(RangEmpl - 1)-gEmployes(RangEmpl)
gEmployes(RangEmpl - 1)-=gEmployes(RangEmpl)

donc sans employer de variable temporaire !
Mais c'est juste pour rire, car inutile et super pas lisible....
@+
Megafan
Messages postés
4
Date d'inscription
vendredi 23 novembre 2007
Statut
Membre
Dernière intervention
28 janvier 2008

Merci beaucoup PCPT pour ta réponse rapide, cela fonctionne.




Pour EcrEmpl((RangEmpl))
c'est une procédure pour enregistrer les informations du formulaire si il y a eu des modifications.

Private

Sub EcrEmpl( _
ByVal RgEmpl
As
Short)



'Transfert des données de la feuille vers le tableau

' Écriture des données








If
RgEmpl >= 1

And
RgEmpl <= NbEmpl

Then



'Simple précaution ...






With
gEmployes(RgEmpl)
.Nom = txtNom.Text
.Numero = txtNum.Text
.Telephone = txtTelephone.Text
.Poste = cboPoste.Text
.DateEmbauche =

CDate
(txtDateEmb.Text)
.NumDepartement =

CShort
(lstDept.Text)
.Salaire =

CShort
(txtSalaire.Text)
.SiComm = optComm.Checked
.MtCommission =

CShort
(txtComm.Text)


End



With



' ... jusqu'ici
.

End



If

End



Sub


Mario
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
ok

peut-être pas besoin de double parenthèses alors ;)
EcrEmpl(<strike>(</strike>RangEmpl<strike>)</strike>)