begin process at 2008 08 22 01:58:41
1 229 745 membres
17 nouveaux aujourd'hui
14 267 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : indice tableau [ Divers / Débutants ] (jeanjeandada)

indice tableau le 17/05/2008 18:12:32

jeanjeandada
Slt !

Voila j'ai un tableau qui contient des valeurs ^^.
Ces valeurs sont obtenue par la fonction DateDiff. De plus ces valeurs sont peuvent êtrepositifs comme négatifs.
Le probléme c'est que j'aimerai récupérer l'indice du le tableau de la valeur qui est le plus proche de ZéRo.
Exemple :
si le tableau contient comme valeur : 3 ; 2,5 ; 2 ; 1,9 ; 1; 0,5 ; -0,1 ; -1 ; -3 il faudrai que j'obtienne l'indice de la valeur -0,1 du tableau.

J'ai juste une petite idée : il faut faire une boucle for
Dim w as integer
For w = LBound(tableau) to Ubound(tableau)
if tableau(w)
......

Next w


En espérant que se soit rélisable.
Merci pour votre précieuse aide !

Re : indice tableau le 17/05/2008 18:17:03

mortalino
Membre Club
salut,

http://www.codyx.org/snippet_trier-donnees-tableau-liste-as-string_278.aspx

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA

Re : indice tableau le 17/05/2008 18:37:04

Jijudu
Merci pour le lien. jvais en prendre connaissance tranquillement.


Tchao

Re : indice tableau le 17/05/2008 19:15:45

casy
Membre Club
"...J'ai juste une petite idée : il faut faire une boucle for..."

C'est quoi ? un exercice scolaire ???

Tu peux effectivement faire une boucle, passer en revue l'ensemble du tableau à la recherche du minimum.
Mais puisque tu peux avoir aussi bien des valeurs positives comme négatives, c'est le minimum de la valeur absolue qu'il te faut rechercher.

En gros, t'initialise une variable à une valeur très grande positive avant la boucle.
Tu lis chaque entrée du tableau. Si la valeur absolue de l'entrée du tabeau est inférieure à ta variable, tu mémorise cette entrée dans la variable, et tu mémorise l'index correspondant dans le tableau et tu continue la boucle. Sinon, tu ne fais rien et tu continue la boucle.

A la fin de la boucle normalement, tu récupère l'index de l'élément le plus petit en valeur absolue, c'est à dire le plus proche de 0

---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #    [ Lien ]

Re : indice tableau le 18/05/2008 15:38:59

jeanjeandada

C'est quoi ? un exercice scolaire ???
xD non mais c'est gentil de s'inquiéter pour moi ^^.

Dim w as integer
Dim nombre as integer
Dim memorise as integer

nombre = 9999999
For w = LBound(tableau) to Ubound(tableau)
      If tableau(w)  < 0 Then 
            tableau(w*-1)   ' pour la valeur absolue
      end if
      If tableau(w) < nombre Then
            nombre = tableau(w)
            memorise = w
      End if
Next w



Comme cela le code ?

Merci de ton aide casy !!!


Re : indice tableau le 18/05/2008 16:31:28

casy
Membre Club
Réponse acceptée !

Ah, c'était pas loin, l'idée est là.

dans tableau(w), w n'est qu'un index, il ne représente pas la valeur de la case dans le tableau.
Donc tableau(w*-1) ne représente pas la valeur absolue de tableau(w), au pire ça ne te donnera que la valeur présente dans une autre case du tableau (à supposé qu'elle existe) et en l'ocurence en tableau(-w)

Mais pour ce qui est de la valeur absolue, autant utiliser la fonction déjà existante.

Le code exact sera plutot ceci :

    Dim w As Integer
    Dim nombre As Integer
    Dim memorise As Integer

    nombre = 9999999
    For w = LBound(tableau) To UBound(tableau)
      If Math.Abs(tableau(w)) < nombre Then
        nombre = Math.Abs(tableau(w))
        memorise = w
      End If
    Next w


A noter que ce code est pour VB2005, rubrique ou tu as posté. Si tu es en VB6, remplace Math.Abs par Abs

A noter aussi qu'en VB2005, l'index inférieur d'un tableau (LBound) est toujours =0, ce n'est pas forcément le cas en VB6.
Donc en VB2005, tu pourrais sans crainte remplacer LBound(tableau) par 0

ATTENTION, ton tableau semble contenir des décimaux, c'est donc un tableau de Single ou de Double. nombre doit absolument etre du même type que les données dans ton tableau, donc pas un Integer mais un Single ou un Double

---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #    [ Lien ]

Re : indice tableau le 19/05/2008 12:06:55

jeanjeandada
Oupss.. probléme de vocabulaire:/

VB2005= Excel 2005 ?? :p

Moi j'ai Excel 2003, donc comme 2003<2005 ; ) je pense que ca va poser un probléme .....


Merci de tes conseils  casy !!

Re : indice tableau le 19/05/2008 12:13:03

mortalino
Membre Club
nop

vb 2005 = dot net

avec excel, quelle que soit la version (pour le moment) c'est du VBA.
Casy connait un peu plus ORCAS ? Peut-être !
moi perso, pas encore trop regardé mais me semble que les prochaines versions vb de la suite office seront en dot net (et tourne donc autour du framework dot net)
Ah si, je crois que InfoPath tourne déjà en dot net.

Bref, tout ça pour dire que tu es en VBA

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA

Re : indice tableau le 19/05/2008 12:26:30

casy
Membre Club
Excel = VBA = VB6.3, une version modifiée et adaptée de VB6
Pour toi, c'est donc le code VB6 qui marchera.

"...Casy connait un peu plus ORCAS ? Peut-être !..."
Après plusieurs années de codage en VB5/6, c'est vrai que depuis que je fais du .Net, j'ai un peu perdu, mais bon. Par contre, que c'est dur de revenir à VB6 qu'en on est à l'aise avec VB2005

"...mais me semble que les prochaines versions vb de la suite office seront en dot net..."
Je n'ai pas vu une telle info, mais pourquoi pas (je ne me tiens pas forcément au courant sur ce point).
On peut l'espérer puisque tous les nouveaux produits qui avance chez M$ (Sharepoint, Dynamics CRM, ....) sont sur le framework, Office y viendra peut-etre.
En tous cas Office 2007 (dernière version en date) inclue toujours VBA (VB6.3). Mais une rumeur avait quand même circulée comme quoi VBA ne serait pas inclue dans Office2007. Donc on peut craindre aussi que VBA soit abandonné pour autre chose à terme.


---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #    [ Lien ]

Re : indice tableau le 19/05/2008 21:19:47

jeanjeandada
Bonjour,

Merci pour la solutipon et les conseils qui me seront utiles.
+
et Bonne Réponse !: )


Classé sous : valeur, tableau, valeurs, contient, indice

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS