IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Fonction VB, retour de deux valeurs


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Janvier 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 28
    Points : 29
    Points
    29
    Par défaut Fonction VB, retour de deux valeurs
    Je souhaite créer une fonction qui retourne deux valeurs, ci-dessous j'ai développé cette fonction qui ne retourne que la valeur Min et je souhaite également retourner la valeur Recurmin, comment procéder? Merci de votre aide .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
        Public Function MinimumTableau(ByVal Tableau() As Integer, ByVal nbvaleurs As Integer) As Integer
            Dim i, Min, Recurmin As Integer
            i = 0
            Min = Tableau(i)
     
                For i = 0 To nbvaleurs - 1
                If Tableau(i) < Min Then
                    Min = Tableau(i)
                End If
            Next
     
            For i = 0 To nbvaleurs - 1
                If Tableau(i) = Min Then
                    Recurmin = Recurmin + 1
                End If
            Next
     
            MsgBox(Title:="Résultat", Prompt:="Le minimum est de : " & Min & " - Récurrence : " & Recurmin)
     
     
            MinimumTableau = Min
     
        End Function

  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Tu peux :
    • passer un paramètre par référence et y affecter la valeur que tu veux récupérer
    • changer le type de retour de la fonction en un autre type plus approprié comme un tableau, une liste, un dictionnaire, etc.


    Il est probable qu'il y ait encore d'autres méthodes.
    Kropernic

  3. #3
    Invité
    Invité(e)
    Par défaut
    Vu que les deux valeurs a retourner sont des integer.
    Il te suffit de changer le type de variable que retourne ta fonction par Point.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Return New Point(Valeur 1, Valeur2)
    Puis les récupérer de cette manière.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Valeur1 = MyPoint.X
    Valeur2 = MyPoint.Y
    Ce n'est pas la manière la plus propre, mais selon moi, la plus simple.
    Après tu peux faire une liste.

  4. #4
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    D'un point de vue pratique (fonctionnel), pas de souci, ça va fonctionner parfaitement (à condition de bien savoir à quoi correspond x et y).

    D'un point de vue sémantique par contre, je n'aime pas trop. Un point, ce n'est pas un couple d'entiers. Mais bon, c'est mon côté perfectionniste qui parle.
    Kropernic

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    Pour compléter le 1er post de Kropernic, tu peux faire une classe qui représente tes valeurs, et définir ta fonction étant de ce type.
    Je déconseille la proposition d'alexandre1004

    La classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Public Class Minimum
        Private mMin As Integer
        Public Property Min() As Integer
            Get
                Return mMin
            End Get
            Set(ByVal value As Integer)
                mMin = value
            End Set
        End Property
        Private mRecurMin As Integer
        Public Property RecurMin() As Integer
            Get
                Return mRecurMin
            End Get
            Set(ByVal value As Integer)
                mRecurMin = value
            End Set
        End Property
    End Class
    La fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
        Public Function MinimumTableau(ByVal Tableau() As Integer) As Minimum
            Dim valmin As Minimum = New Minimum
            Dim i As Integer = 0
            valmin.Min = Tableau(i)
     
            For i = 0 To Tableau.Count - 1
                If Tableau(i) < valmin.Min Then
                    valmin.Min = Tableau(i)
                End If
            Next
     
            For i = 0 To Tableau.Count - 1
                If Tableau(i) = valmin.Min Then
                    valmin.RecurMin = valmin.RecurMin + 1
                End If
            Next
     
            MsgBox(Title:="Résultat", Prompt:="Le minimum est de : " & valmin.Min & " - Récurrence : " & valmin.RecurMin)
     
            Return valmin
        End Function
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Janvier 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 28
    Points : 29
    Points
    29
    Par défaut
    Merci pour vos réponses, l'utilisation d'une classe me semble un peu complexe pour le débutant que je suis

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Là c'est tout prêt, il ne reste plus qu'a l'utiliser.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            Dim tab As Integer() = {1, 2, 3, 1, 4, 8}
            Dim mini As Minimum = MinimumTableau(tab)
            MessageBox.Show(String.Format("Le mini est {0}, il est présent {1} fois.", mini.Min, mini.RecurMin))
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Janvier 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 28
    Points : 29
    Points
    29
    Par défaut
    Désolé, je ne comprends pas cette réponse..a quel niveau ce code est il inséré???

  9. #9
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par PATDRO Voir le message
    Désolé, je ne comprends pas cette réponse..a quel niveau ce code est il inséré???

    La définition du tableau n'est là que pour le test. Il faudra utiliser votre tableau.

    Ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim mini As Minimum = MinimumTableau(votreTableau)
    est inséré là ou vous appelez votre fonction avec votre tableau.

    Vous pouvez décomposer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            ' votre zone de définition
            Dim mini As Minimum
            ' suite de votre code
            ' ...
            mini = MinimumTableau(votreTableau)
            ' utilisation des valeurs
            ' ...
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Janvier 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 28
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    Tu peux :
    • passer un paramètre par référence et y affecter la valeur que tu veux récupérer
    • changer le type de retour de la fonction en un autre type plus approprié comme un tableau, une liste, un dictionnaire, etc.


    Il est probable qu'il y ait encore d'autres méthodes.
    J'essaye de définir le type de retour par un type tableau dans lequel je mettrai les deux valeurs "min" et "recurmin", mais je ne trouve pas la syntaxe appropriée

  11. #11
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Points : 151
    Points
    151
    Par défaut
    Bonjour

    Une autre proposition (n'est pas forcement la milleur), mais il me semble qu'elle est plus simple


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Public Structure Valeures
            Public min As Integer
            Public recurmin As Integer
        End Structure
    et ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function TaFonction() as Valeures
    .....
    end Function

    A+

  12. #12
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Les tableaux s'était avec vb6, maintenant on utilise des collections, des classes. Il faut appréhender les concepts POO.
    Utilisez un dictionnaire.
    Vous avez le Cours VB.NET de Philippe Lasserre est une mine d'information, très bien pour apprendre.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Janvier 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 28
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par rv26t Voir le message
    Les tableaux s'était avec vb6, maintenant on utilise des collections, des classes. Il faut appréhender les concepts POO.
    Utilisez un dictionnaire.
    Vous avez le Cours VB.NET de Philippe Lasserre est une mine d'information, très bien pour apprendre.
    OK merci du conseil je regarderai ce cours mais je suis actuellement un cours d'initiation au CNED je verra ensuite en complément

Discussions similaires

  1. Concaténer deux valeur issue d'une fonction vba en sql
    Par bobosh dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/08/2008, 13h47
  2. Fonction qui renvoie deux valeurs
    Par Fractal LLG dans le forum Caml
    Réponses: 4
    Dernier message: 22/03/2008, 17h45
  3. Réponses: 3
    Dernier message: 19/03/2008, 22h11
  4. fonction return () avec retour de plusieurs valeurs
    Par nuphius dans le forum Langage
    Réponses: 4
    Dernier message: 06/01/2007, 17h44
  5. Réponses: 5
    Dernier message: 25/11/2003, 10h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo