Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

déclarer un tableau au niveau module

2 réponses
Avatar
Thierry
Bonsoir à tous.
Dans un module standard, je déclare un tableau dynamique de type particulier
de la façon suivante :
Private Type TaillesChamps
Nom_Champ As String
taille_maxi As Integer
End Type
Private MonTableau() As TaillesChamps

Dans la procédure 1, je remplis ce tableau (je peux d'ailleurs suivre son
évolution dans la fenêtre des variables locales en exécutant le code pas à
pas). Jusque là pas de problème.

Dans une procédure 2 du même module lancée par la procédure 1, je ne peux
pas faire référence à ce tableau. Dans la fenêtre Exécution, j'ai essayé
?Ubound(MonTableau), ?MonTableau(0,0).Nom_Champ. J'ai toujours l'erreur n°9
: l'indice n'appartient pas à la sélection. Pourtant, ces mêmes instructions
sont acceptées quand je suis dans la procédure 1.

Alors quoi ? Une déclaration d'une variable au niveau module qui ne peut
être utilisée n'importe où dans le module ? Quelque chose m'échappe et je ne
vois pas où est l'erreur. Merci à qui pourra me mettre sur la bonne voie.

2 réponses

Avatar
Eric
Bonjour Thierry,

Un truc du genre:
Private Type TaillesChamps
Nom_Champ As String
taille_maxi As Integer
End Type
Private MonTableau() As TaillesChamps

Sub zz()
ReDim MonTableau(9)'borne pour l'exemple
Dim i As Integer
For i = 0 To 9
MonTableau(i).Nom_Champ = "Champ" & i
MonTableau(i).taille_maxi = i + 10
Next i
Call zz2 'Appel affichage dans la fenêtre Exécution
Erase MonTableau ' si plus besoin par la suite
End Sub

Sub zz2()
For i = 0 To UBound(MonTableau)
With MonTableau(i)
Debug.Print " Nom du champ : "; .Nom_Champ _
& " - Taille : " & .taille_maxi
End With
Next i
End Sub

Bonsoir à tous.
Dans un module standard, je déclare un tableau dynamique de type particulier
de la façon suivante :
Private Type TaillesChamps
Nom_Champ As String
taille_maxi As Integer
End Type
Private MonTableau() As TaillesChamps

Dans la procédure 1, je remplis ce tableau (je peux d'ailleurs suivre son
évolution dans la fenêtre des variables locales en exécutant le code pas à
pas). Jusque là pas de problème.

Dans une procédure 2 du même module lancée par la procédure 1, je ne peux
pas faire référence à ce tableau. Dans la fenêtre Exécution, j'ai essayé
?Ubound(MonTableau), ?MonTableau(0,0).Nom_Champ. J'ai toujours l'erreur n°9
: l'indice n'appartient pas à la sélection. Pourtant, ces mêmes instructions
sont acceptées quand je suis dans la procédure 1.

Alors quoi ? Une déclaration d'une variable au niveau module qui ne peut
être utilisée n'importe où dans le module ? Quelque chose m'échappe et je ne
vois pas où est l'erreur. Merci à qui pourra me mettre sur la bonne voie.




--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Thierry
Ton exemple fonctionne et m'a permis de découvrir l'erreur que j'ai commise.
En effet, je déclare MonTableau au niveau module, mais je le déclare aussi
dans la procédure 1. Le dernier est apparemment prioritaire et on ne peut
pas y faire référence à partir de la procédure 2.
L'erreur me crevait les yeux et je ne la voyais pas. Merci à Eric pour son
aide.