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 :

Type variable VBA variant en VB.NET [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 73
    Par défaut Type variable VBA variant en VB.NET
    Bonjour,

    Je cherche l'équivalent du type de variable Variant de VBA en VB.Net.

    ex VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim maVar as variant
     
    maVar = 1236                'Type variable Variant/Integer
    maVar = "HJKI"               'Type variable Variant/String
    maVar = true                 'Type variable Variant/Boolean
    J'ai essayé le type VariantType de VB.Net, mais cela ne fonctionne pas.

    Déjà est-ce possible en VB.Net ?
    et si oui que choisir comme type de variable ?

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    L'équivalent c'est le type Object.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2012
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 337
    Par défaut
    Bonjour,

    Déjà est-ce possible en VB.Net ?
    et si oui que choisir comme type de variable ?
    Oui c'est possible.
    Le type Object est fait pour ça. Vous serrez peut être amené à le caster pour pouvoir vous en servir pour éviter des conversions implicites foireuses.

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    L'équivalent c'est le type Object.
    Pas tout à fait.

    Le Variant est un type spécifique COM, qui en interne conserve une indication du type de l'objet contenu, indépendamment de ce type; aucune notion d'héritage ici, au contraire de Object.

    Object est un type racine de tous les objets de .Net.

    Ceci dit, dans son contexte, il peut peut être utiliser le type Object.
    Mais il faudrait savoir un peu plus ce qu'il compte faire.

  5. #5
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Oui effectivement ce n'est pas un équivalent dans le sens strict du terme au niveau de la mécanique, mais je ne vois pas d'autre solution... A quoi penses-tu ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 73
    Par défaut Remerciements
    Bonsoir,

    Merci à tous.

    Apparemment ça fonctionne dans le cadre de mon application.

    Il semble que le type de la variable source soit bien mémorisé dans la variable destination. En mettant dans un espion la variable objet, on visualise le type en déployant.

    J'ai essayer de récupérer cette information avec GetType mais cela ne fonctionne pas. Peu être y à t'il une autre méthode ?

    Si cela n'est pas possible, mais j'en serais étonné, si j'ai besoin de connaître le type de variable source, je le mémoriserais dans mon tableau.

    Pour l'instant je ne clos pas le sujet. Si je n'ai pas de réponse, je cocherai résolu.

    Cordialement

  7. #7
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Bonsoir,

    la FAQ nous donnes : Comment vérifier qu'un objet est bien d'un certain type ?

    Donc :
    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 Class Form1
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim col As New Collection
            col.Add(New class1)
            col.Add(New class2)
            For Each elem As Object In col
                If TypeOf (elem) Is class1 Then
                    Trace.WriteLine("class1")
     
                ElseIf TypeOf (elem) Is class2 Then
                    Trace.WriteLine("class2")
                End If
            Next
        End Sub
     
        Public Class class1
     
        End Class
     
        Public Class class2
     
        End Class
    End Class
    Donne :
    class1
    class2

  8. #8
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour rlapt
    GetType() helas se contente d'examiner la declaration pour retourner le type...
    Mais avec les types "boxed et unboxed"...,au secours ,ce bon vieux VarType qui ,lui fouine dans le "managed heap car c'est le managed qui store cet information" ,examine la valeur boxe pointe par Objet et nous retourne son type correct....
    Y compris quand tu fais les mutations habituelles des variables propre aux veterans vb6.....
    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
    25
    26
    27
    28
    29
    30
    31
     
     
    Public Class Form1
     
     
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim i As Integer = 123
            Dim o1 As Object = i
            Dim o2 As Object = "tartarin de tarascon et les lions"
            Dim o3 As Object = 245.74
     
            Dim b As Boolean = False
            Dim o4 As Object = b
     
            ListBox1.Items.Add(VarType(o1).ToString)
            ListBox1.Items.Add(VarType(o2).ToString)
            ListBox1.Items.Add(VarType(o3).ToString)
            ListBox1.Items.Add(VarType(o4).ToString)
        End Sub
        'les mutations des habitues  vb6 
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim o1 As Object = 145.12
            ListBox2.Items.Add(VarType(o1).ToString)
            Dim i As Integer = o1
            ListBox2.Items.Add(VarType(i).ToString)
            Dim o2 As Object = i * 124.12
     
            ListBox2.Items.Add(VarType(o2).ToString)
        End Sub
    End Class
    bon code.............

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/02/2009, 15h40
  2. Quels types de projets réalisez vous avec .NET
    Par Louis-Guillaume Morand dans le forum Général Dotnet
    Réponses: 106
    Dernier message: 03/12/2007, 18h44
  3. [VBA-E] comment faire net send en VBA
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 11/04/2006, 16h49
  4. [TP] Constantes typées et non typées, variables
    Par poppels dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 26/10/2005, 23h00
  5. Tableau d'éléments de type variable
    Par Drooxy dans le forum Langage
    Réponses: 4
    Dernier message: 16/03/2003, 15h20

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