Appliquer une macro sur des tableaux de tailles différentes

AlexandreM

XLDnaute Nouveau
Bonjour à tous,

Je cherche à faire appliquer une macro sur différents tableaux de même structure, mais de taille différentes. L'objectif est in fine de produire un algorythme basé sur des "si", mais je préfère commencer des questions sous-questions précises.

Imaginons un tableau à 2 variables (colonnes), dont la première renseigne sur un lieu et la deuxième sur l'identité des individus rencontrés dans ce lieu. Le nombre d'individus rencontrés dans ce lieu varie et modifie donc le nombre de lignes pour chaque lieu.

Quel doit être le code macro pour indiquer dans un deuxième tableau le nombre d'individus rencontrés dans le dernier lieu d'étude?

Merci beaucoup pour votre aide.


Alexandre
 

Theze

XLDnaute Occasionnel
Re : Appliquer une macro sur des tableaux de tailles différentes

Bonjour,

Il y a maintes façons de faire. Un exemple avec les "Type And Type" ce qui permet d'avoir des tableaux dans un tableau tout en ayant les propriétés "Lieu" et "Nom" accessible avec l'intellisense. Le tableau principal qui représente les différents lieux d'étude et le tableau secondaire qui comprend le nom du lieu ainsi que le nom des individus. Les lieux d'étude dans le tableau principal sont représentés par les indices du tableau (1, 2, etc...), à toi de savoir à quel lieu d'étude correspond l'index (le nom du lieu est stocké dans le sous tableau). C'est une piste, à voir si elle te convient :
Code:
Type LieuEtude

    Lieu As String
    Nom As String

End Type

Type Etude

    TblEtude() As LieuEtude

End Type

Sub Test()

    Dim TabloEtude() As Etude
    Dim I As Integer

    'redimensionne le tableau du lieu de l'étude
    'ici, le lieu de l'étude 1
    ReDim TabloEtude(1 To 1)

    'dimensionne le tableau contenant les lieux et noms
    ReDim TabloEtude(1).TblEtude(1 To 1)

    'inscrit le premier
    TabloEtude(1).TblEtude(1).Lieu = "Paris"
    TabloEtude(1).TblEtude(1).Nom = "Dupond Pierre"

    'redimensionne le tableau contenant les lieux et noms pour un second enregistrement
    ReDim Preserve TabloEtude(1).TblEtude(1 To 2)

    'inscrit le second
    TabloEtude(1).TblEtude(2).Lieu = "Paris"
    TabloEtude(1).TblEtude(2).Nom = "Durant Philippe"

    'petite boucle pour lire
    For I = 1 To UBound(TabloEtude(1).TblEtude)

        MsgBox "Lieu : " & TabloEtude(1).TblEtude(I).Lieu & vbCrLf & "Nom : " & TabloEtude(1).TblEtude(I).Nom

    Next I

    'indique le nombre d'individus rencontrés dans le dernier lieu d'étude
    MsgBox UBound(TabloEtude(UBound(TabloEtude)).TblEtude)

End Sub

Hervé.
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 033
Messages
2 104 851
Membres
109 192
dernier inscrit
Matvei