begin process at 2010 02 10 15:45:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

Tableau d'integer et valeur max


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tableau d'integer et valeur max

samedi 17 février 2007 à 17:02:38 | Tableau d'integer et valeur max

olivier857

Membre Club
Bonjour à tous,

Je cherche à créer un tableau d'integer, a y stocker des données dans une boucle puis récupérer la valeur max du tableau de données.

Mais je ne sais pas comment écrire ce code.

Si quelqu'un pouvait me donner un exemple ca serait sympa.

Merci d'avance

samedi 17 février 2007 à 17:47:39 | Re : Tableau d'integer et valeur max

jmfmarques

Membre Club
A quel étape rencontres-tu une difficulté ?


- pour créer un tableau ?
- pour alimenter le tableau ?
- pour le redimensionner en cas de besoin ?
- pour lire dans le tableau la valeur la plus grande ?

Je voudrais déjà te faire remarquer qu'il serait adroit, pour déterminer la valeur la plus grande, de ne pas attendre d'avoir rempli ton tableau pour y relire dans une boucle !

Il te suffit d'une variable dont la valeur ne change que si la nouvelle donnée lue (avant même de mettre dans un tableau) est d'une valeur supérieure à celle déjà donnée à la variable !

samedi 17 février 2007 à 18:03:08 | Re : Tableau d'integer et valeur max

mortalino

Membre Club


Salut, voici une fonction, t'as qu'à juste modifier la Sub Exemple :


Sub Exemple()
    Dim As Long
    Dim MyList(To 10As String
   
    MyList(1) = "1"
    MyList(2) = "2"
    MyList(3) = "4"
    MyList(4) = "8"
    MyList(5) = "7"
    MyList(6) = "3"
    MyList(7) = "9"
    MyList(8) = "5"
    MyList(9) = "0"
    MyList(10) = "6"
   
    MsgBox ValMax(MyList)  'retourne 9
End Sub


Function ValMax(ByRef Liste() As StringAs Long
    Dim i           As Long, j As Long
    Dim Temp        As String
    Dim ListeTemp() As String: ListeTemp = Liste
   
        For i = LBound(ListeTemp) To UBound(ListeTemp) - 1
            For j = i + To UBound(Liste)
                If ListeTemp(i) > ListeTemp(j) Then
                    Temp = ListeTemp(j)
                    ListeTemp(j) = ListeTemp(i)
                    ListeTemp(i) = Temp
                End If
            Next j
        Next i
        ValMax = ListeTemp(UBound(ListeTemp))
End Function

~ Mortalino ~ Colorisation automatique

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
samedi 17 février 2007 à 18:16:15 | Re : Tableau d'integer et valeur max

casy

Membre Club
Je ne comprend pas ta double boucle Mortalino ???

Pour cherche le max, une seule boucle suffit :

ValMax = ListeTemp(LBound(ListeTemp))
For i = LBound(ListeTemp) +1 to UBound(ListeTemp)
    if ListeTemp(i) > ValMax then ValMax = ListeTemp(i)
Next


---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #
samedi 17 février 2007 à 18:27:18 | Re : Tableau d'integer et valeur max

mortalino

Membre Club


et non Casy, double boucle obligatoire.
Une boucle pour prendre la première valeur, et l'autre boucle pour faire le test avec le restant, ensuite, la première boucle passe à la deuxième valeur, puis le seconde boucle effectue à nouveau une comparaison avec le restant, et ainsi de suite..

Fait le test avec ta boucle, concours de circonstances je pense pour le 0 (en tant que plus petite valeur), mais 6 en tant que plus grande valeur, ça le fait pas trop  ;)

Pour info, il n'apparait pas encore, mais j'en ai fait un snippet (déposé), avec la plus grande ou la plus petite valeur :


Function ExtremValue(ByRef Liste() As String, bValMax As Boolean) As String
' Si bValMax est à True, c'est la plus grande valeur de la liste
' qui est donnée, à false c'est donc la plus petite valeur
    Dim i           As Long, j As Long
    Dim Temp        As String
    Dim ListeTemp() As String: ListeTemp = Liste
    ' ici je double le tableau pour ne pas affecter le tableau d'origine
    
        For i = LBound(ListeTemp) To UBound(ListeTemp) - 1
            For j = i + To UBound(Liste)
                If ListeTemp(i) > ListeTemp(j) Then
                    Temp = ListeTemp(j)
                    ListeTemp(j) = ListeTemp(i)
                    ListeTemp(i) = Temp
                End If
            Next j
        Next i
        If bValMax = True Then ExtremValue = ListeTemp(UBound(ListeTemp)) Else ExtremValue = ListeTemp(LBound(ListeTemp))
End Function

Sub Exemple()
    Dim MyList(To 10As String
    
    MyList(1) = "1"
    MyList(2) = "2"
    MyList(3) = "4"
    MyList(4) = "8"
    MyList(5) = "7"
    MyList(6) = "3"
    MyList(7) = "9"
    MyList(8) = "5"
    MyList(9) = "0"
    MyList(10) = "6"
    
    MsgBox ExtremValue(MyList, True)   'retourne 9
    MsgBox ExtremValue(MyList, False)    'retourne 0
End Sub

~ Mortalino ~ Colorisation automatique

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
samedi 17 février 2007 à 18:35:43 | Re : Tableau d'integer et valeur max

casy

Membre Club

Ben chez moi, ma fonction marche nickel, à la différence que je travaille sur des nombres et non pas sur des chaines de caractères

Pour déterminer une valeur max, c'est quand même mieux des nombres. Travaillez sur des chaines ça pervertie le système . Déjà qu'il est assez pervert comme ça......


Ta double boucle est valable si tu veux trier un tableau. Pour récupérer uniquement la (première) valeur max, la double boucle n'est pas utile.

---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #
samedi 17 février 2007 à 18:41:00 | Re : Tableau d'integer et valeur max

jmfmarques

Membre Club

Ouais...

Attendons qu'Olivier revienne ...
Si ça se trouve, il n'a même pas besoin d'un tableau ...
A moins que ce tableau ne doive lui servir à d'autres choses (bien évidemment), il n'est nul besoin d'en dresser un pour aller chercher la plus grande valeur de données qu'il serait bien forcé de lire quelque part pour alimenter son tableau.
Une autre fois : si tableau destiuné à d'autres fins, oui, sinon : NON ...

Maintenant, tableau pour tableau, je suis d'accord avec Casy, : une seulz boucle suffit, accompagnée d'une variable..

 

samedi 17 février 2007 à 18:41:41 | Re : Tableau d'integer et valeur max

mortalino

Membre Club


Désolé mais j'ai remplacé mon tableau String en Long, c'est pareil, 6 est le gagnant avec ta simple boucle.
As tu bien mélangé les nombres ?
C'est mathématique, il en faut deux.

Voici ce que j'avais avec ta proposition :


Function ExtremValue(ByRef Liste() As Long, bValMax As Boolean) As Long
' Si bValMax est à True, c'est la plus grande valeur de la liste
' qui est donnée, à false c'est donc la plus petite valeur
    Dim i           As Long, j As Long
    Dim Temp        As String
    Dim ListeTemp() As Long: ListeTemp = Liste
    ' ici je double le tableau pour ne pas affecter le tableau d'origine
    
'---------------------
' juste ta boucle :
For i = LBound(ListeTemp) + To UBound(ListeTemp)
    If ListeTemp(i) > ValMax Then ValMax = ListeTemp(i)
Next
'---------------------
        If bValMax = True Then ExtremValue = ListeTemp(UBound(ListeTemp)) Else ExtremValue = ListeTemp(LBound(ListeTemp))
End Function

Sub Exemple()
    Dim As Long
    Dim MyList(To 10As Long
    
    MyList(1) = 1
    MyList(2) = 2
    MyList(3) = 4
    MyList(4) = 8
    MyList(5) = 7
    MyList(6) = 3
    MyList(7) = 9
    MyList(8) = 5
    MyList(9) = 0
    MyList(10) = 6
    '                                  ---------------------
    MsgBox ExtremValue(MyList, True)   'retourne 6 ?????????
    '                                  ---------------------
    MsgBox ExtremValue(MyList, False)    'retourne 0
End Sub

~ Mortalino ~ Colorisation automatique

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
samedi 17 février 2007 à 18:47:34 | Re : Tableau d'integer et valeur max

casy

Membre Club
Réponse acceptée !

Voila mon code, et j'ai revérifier chez moi il marche

Pour t'en persuader, prend une feuille de papier, oublie completement vb et tout autre langage, et pose sur le papier l'algorithme de recherche d'un max. Tu verra qu'il est nul besoin de plusieurs boucle.

Subtilité supplémentaire, dans la même boucle, tu peut rajouter la recherche du min ;)


Private Function ValMax(ByRef Liste() As Long) As Long
Dim As Integer

ValMax = Liste(LBound(Liste))
For i = LBound(Liste) + To UBound(Liste)
    If Liste(i) > ValMax Then ValMax = Liste(i)
Next

End Function

Private Sub Form_Load()
    Dim As Long
    Dim MyList(To 10As Long
   
    MyList(1) = "1"
    MyList(2) = "2"
    MyList(3) = "4"
    MyList(4) = "8"
    MyList(5) = "7"
    MyList(6) = "3"
    MyList(7) = "9"
    MyList(8) = "5"
    MyList(9) = "0"
    MyList(10) = "6"
   
    MsgBox ValMax(MyList)  'retourne 9
End Sub



---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #
samedi 17 février 2007 à 18:53:30 | Re : Tableau d'integer et valeur max

mortalino

Membre Club


je reconnais que je suis à côté de la plaque, ton code fonctionne nickel, et tu as raison sur la simple boucle.
Je suis resté ancré sur un code que j'avais, les deux boucles sont obligatoires pour trier les valeurs de la plus petite à la plus grande, et je suis parti de là en cherchant le plus grand ou plus petit indice de cette fameuse liste triée, mais là, pour la ValMax (ou ValMin), ta boucle fait le nécessaire.

Mille excuses !
(pas dormi depuis hier, promis, je sors..)

Ps : bien vu le coup du papier et du calcul à la main  ;)
@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"

1 2

Cette discussion est classée dans : données, valeur, tableau, max, integer


Répondre à ce message

Sujets en rapport avec ce message

Comment peut on savoir quel est la valeur max dans un tableau de valeurs ? [ par Moi ] Comment peut on savoir quel est la valeur max dans un tableau de valeurs ? comment trouver la valeur MIN et la valeur MAX dans un tableau [ par Jeronimo ] J'ai un tableau intNombre(1 to 25). Premièrement, les valeurs du tableau sont initiées par un combobox. Ensuite, je dois afficher la valeur la plus é tableau [ par Bugs ] salut a tousvoila je suis débutant et je voudrai stocker des données fixe dans mon code vb sous forme de tableau, enfin de pouvoire y accéder de manie Excel - Gestion de tableau [ par Groargreugro ] D'un logiciel du boulot, on extrait tout les jours des données relatif a tous les services de ma boite sous forme d'un fichier texte totallement illis trouver valeur max [ par boursicotteur ] Je cherche une façon ultra rapide de trouver la valeur maximale d'une grande liste de nombres. Il n'est donc pas question ici de commencer à comparer coller un tableau supérieur à 256 colonnes dans Excel [ par Relax62 ] Bonjour,Me voici aujourd'hui confronté à un sérieux problème.Je dois récupérer des données venant d'une application hôte d'Excel. J'arrive à récupér tableau est fichier INI [ par waspy59 ] bonjourpour un petit prog j'utilise les fichier INI pour la sauvegarde de parametres ect...il a la structure suivante[info]...[Parametres]....la secti Regrouper des données de plusieurs classeurs [ par Douhme ] Bonjour,Dans un dossier, j'ai un classeur se nommant tableau.xls, il est composé d'un tableau regroupant des données provenant de plusieurs autres cla remplir un tableau à partir d'un fichier csv [ par debutantvba ] Bonjour à tous,je vous expose mon problème et vous remercie à l'avance de vos éventuelles réponses qui seront les bienvenues je vous assure !j'ai un f bgColor et transmission de données [ par Lyche ] Bonjour à tous.Voilà mon problème. J'ai un tableau que je cré dynamiquement, et mon code me permet de changer le bgColor de mes cellules. Lorsque je v


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales