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

Macros et VBA Excel Discussion :

Gestion du type tableau (au sens de VB) [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de horemheb
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2010
    Messages : 122
    Par défaut Gestion du type tableau (au sens de VB)
    Bonjour à tous,
    Je recherche quelques informations sur les tableaux (au sens informatique VB , pas au sens tableau Excel).

    Je gère plusieurs tableaux de 1000 éléments, actuellement j'utilise une déclaration qui ressemble à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Tab1(1000) as Single, Tab2(1000) as Single, Tab3(1000) as Single
    . . .
    Peut-on définir (créer) un type générique pour ces tableaux sous la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Type Tableau(1000) as Single
    Dim Tab1 as Tableau, Tab2 as Tableau, Tab3 as Tableau
    . . .
    Apparemment l'instruction Type ne peut pas servir directement à ça mais pour une structure contenant elle-même plusieurs éléments de types différents.

    Pourrais-je ensuite m'en servir comme type entrant dans une déclaration de fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Function MaFonction(ByRef LeTab as Tableau) as Single
    . . .
    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Je ne vois pas ce que tu cherches, à part utiliser "Type" à tout prix. Tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Type Tableaux
        Tab1(1000) As Single
        Tab2(1000) As Single
    End Type
    Sub test()
    Dim Tabl As Tableaux
        Tabl.Tab1(1) = 1
    End Sub
    ou j'ai mal compris...

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    je suis un peu comme Daniel je vois pas ce que tu veux faire avec type ... si c'est pour pouvoir modifier le nombre d'éléments des tableaux de façon plus aisée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Const NB_INFOS = 1000
     
    Dim Tab1(NB_INFOS) As Single
    Dim Tab2(NB_INFOS) As Single
    Dim Tab3(NB_INFOS) As Single
     
    MsgBox "Tab1 : " & UBound(Tab1) & vbCrLf & _
           "Tab2 : " & UBound(Tab2) & vbCrLf & _
           "Tab3 : " & UBound(Tab3)

  4. #4
    Membre confirmé Avatar de horemheb
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2010
    Messages : 122
    Par défaut
    Merci pour vos réponses, je vais essayer de clarifier mon attente.
    Mon souci se porte à deux niveaux.

    Le premier est de créer un nouveau type de données. Je ne cherche pas à utiliser "Type" à tout prix. L'utilisation de "Type" impose des notations telles que l'indique Daniel c'est à dire tabl.tab1(i), tabl.tab2(i) . . . et a pour but de créer des structures non homogènes, ce qui n'est pas du tout ce que je cherche.

    Je souhaiterais créer une structure de tableau à 1000 entrées (par exemple), ce qui permettrait ensuite de définir des variables-tableaux selon ce type, ça se pratiquait en Pascal (il y a très longtemps), peut-être aussi en C. Est-ce que c'est possible avec VBA ?
    Ca rendrait l'écriture que j'utilise actuellement plus "élégante" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Tab1(1000) As Single, Tab2(1000) As Single, Tab3(1000) As Single
    deviendrait
    Dim Tab1 As Tableau, Tab2 As Tableau, Tab3 As Tableau
    Plutôt que de déclarer 3 variables ayant des structures identiques, je déclare une structure et j'y associe ensuite les 3 variables. Je reconnais que la notion d'"élégance" est très subjective.

    Si je laisse tomber cet aspect, je suis alors confronté à un autre problème qui est de passer un tel tableau en référence à une fonction. Quel type vais-je indiquer en entrée dans la définition de ma fonction?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Function MaFonction(ByRef LeTab As ?????) As Single
    . . .
    En espérant être plus clair cette fois-ci.

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Utilise un tableau à deux dimensions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Tabl(1000, 5) As Integer
    Tabl(0, 0) = 1
    Tabl(0, 1) = 2
    Tabl(1000, 5) = 3

  6. #6
    Membre confirmé Avatar de horemheb
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2010
    Messages : 122
    Par défaut
    Ok Daniel, mais ça ne répond ni à la question : peut-on créer une nouvelle structure de données (autrement que par "Type") ? ni à : comment passer un tableau en référence dans une déclaration de fonction ?

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

Discussions similaires

  1. [CR XI] export vers word d'un crystal de type tableau
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 26/07/2005, 22h52
  2. Gestion d'un tableau dynamique
    Par almisuifre dans le forum C++Builder
    Réponses: 5
    Dernier message: 17/02/2005, 19h07
  3. GEstion des types! Besoin d'aide il me manque quelques trucs
    Par popogendarme dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 03/02/2005, 18h56
  4. Réponses: 6
    Dernier message: 12/10/2003, 14h57
  5. Fonction de type tableau
    Par Charles f dans le forum Langage
    Réponses: 5
    Dernier message: 04/08/2002, 14h04

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