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 :

Tableau à plusieurs dimension avec type défini par l'utilisateur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Par défaut Tableau à plusieurs dimension avec type défini par l'utilisateur
    Bonjour,
    j'en arrive à mes limites de capacité d'abstraction, à l'aide!
    Jusqu'à présent, je gérais les tableaux multidimensionnels ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim tablo(25,3,2,2) as string
    La lisibilité du code : catastrophique!

    Et les types définis par l'utilisateurs sont arrivés à mes yeux.
    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
     
    Type Informations_Eleves
       Nom as String
       Prenom as String
       PresenceHebdo(53) as String
    End Type
     
    Sub toto
     
    Dim Infos_Eleves as Informations_Eleves
     
    Infos_Eleves(0).Nom="Pion"
    Infos_Eleves(0).Prenom="Tartan"
    Infos_Eleves(0).PresenceHebdo(1)="NON"
    Infos_Eleves(0).PresenceHebdo(2)="OUI"
    'Etc...
    end sub
    C'est beaucoup plus simple à reprendre à froid.

    Comment faire :
    Tartan Pion Jour1 Cours1 Sem1 = "OUI"
    Tartan Pion Jour1 Cours2 Sem1 = "OUI"
    ...
    Jour allant de 1 à 5, Cours de 1 à 3 par ex.

    Je galère avec :
    le concept de Type dans le Type : Type A B as integer C as integer En Type Puis Type C D as String E as A(qqchose)
    le concept de multidimensionnalité dans le Type : nomType(1, 2).Choix= "Choix1,2"

    Mais loin s'en faut pour que ma matière grise me donne les clefs pour coomprendre!
    Je suis même preneur juste de la doc. appropriée si vous n'avez pas le temps.

    A vous lire,
    Anthony.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Par défaut
    Le tuto de Sylriroad m'a plusieurs fois été d'un grand secours. Les tableaux de type sont toutefois peu mentionnés (même si on suit le lien vers l'autre tuto car les tableaux de type sont basiques).
    Le tuto de Didier Gonard est un monstre de pédagogie mais ne m'a pas été utile, comme dit en 1ère ligne de mon poste, j'ai l'habitude d'utiliser tableaux à pleins de dimensions.
    Ma question portait sur une documentation détaillée des types définis par l'utilisateur utilisés à des fins de tableaux multi-dimensions (les 2 livres que je possède sur vba sont très succins).

    La réponse au pb posé est très simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Infos_Eleves(0).jour(0).cours(0)="OUI" 
    Infos_Eleves(0).jour(0).cours(1)="OUI" 'etc
    Ce qui me "gênais" c'est que je repars sur des indices numériques qui ne signifient rien.
    Y-a-t'il moyen de faire qqchose dutype tableaux associatif : Infos_Eleves(x).Lundi.Francais="OUI" ou Infos_Eleves(x).Jour("Lundi").Cours("Francais")="OUI"?

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne sais pas si j'ai saisi ta dimande mais si tu veux indicer les bornes de tes variables tableaux, personnellement, j'utiliserais les constantes énumérées

    Détail dans le tutoriel Utiliser les variables en VBA Excel et particulièrement le chapitre VI-B. Enum

    Petit exemple rapide

    En tête de module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
    Enum Mois
      Janvier = 1
      Février = 2
      Mars = 3
      Aril = 4
    End Enum
    Enum Semaine
      Lundi = 1
      Mardi = 2
    End Enum
    Une procédure test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub tt()
      Dim CA(1 To 12, 1 To 7)
      CA(Mois.Février, Semaine.Lundi) = 1000
      MsgBox CA(2, 1)
      ' ou bien évidemment
      MsgBox  CA(Mois.Février, Semaine.Lundi)
    End Sub
    Sinon, il existe un tutoriel de Pierre Fauconnier sur les modules de classe ou il aborde les types des données Création et utilisation de classes personnalisées en VB 6.0 et VBA (partie 1)

    [EDIT]
    le type de données est également évoqué dans le chapitre IX. Les types de données définis par l'utilisateur du tutoriel référencé en début de ce fil
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Par défaut
    Exactement ce qu'il me fallait ( je connaissais, ai testé sur qqes outils puis ai arrêt, me disant que ça ne servait pas énormément ces énumérations.
    Comme souvent, bien m'a pris de penser ainsi.
    Merci!

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Merci pour ton retour.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Tableau 2 dimensions avec types différents ?
    Par NicCo dans le forum Débuter
    Réponses: 7
    Dernier message: 29/05/2016, 22h06
  2. [LibreOffice] [Visual Basic]Comment retourner plusieurs arguments d'un type défini par l'utilisateur
    Par Obulle dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 06/01/2016, 14h14
  3. Réponses: 4
    Dernier message: 12/12/2015, 16h25
  4. Trier un tableau de type défini par l'utilisateur
    Par nonaparus dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 24/10/2005, 21h11
  5. Modifier un type défini par l'utilisateur
    Par soazig dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/08/2004, 12h47

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