Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/10/2007, 15h29   #1
Nouveau Membre du Club
 
Inscription : février 2007
Messages : 121
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 121
Points : 34
Points : 34
Par défaut Problème tableau ?

J'ai besoin de récuppérer une liste de fichiers dans un répertoire pour effectuer des traitements dessus.
Je les stoque dans un taleau avec redim, et redim preserve car le nombre de fichiers n'est pas connu à l'avance.

Lorsque je redimensionne mon tableau je dois savoir si il a été initialisé, et là j'ai un sérieux problème ...
Code :
1
2
3
4
5
6
7
If (Not t_Type_Fic) = True Then 'Test si tableau est initialisé
                'Tableau n'était pas initialisé
                ReDim t_Type_Fic(0)
            Else
                'Tableau initialisé
                ReDim Preserve t_Type_Fic(UBound(t_Type_Fic()) + 1)
            End If
car lors de la première exécution il passe bien dans le redim puis dans le redim preserve, mais dès que je relance une deuxième fois le traitement il ne passe plus du tout dans le Redim, comme si le tableau était déjà initialisé ...
J'ai trouvé le test If (Not t_Type_Fic) = True sur un forum mais ça n'est pas fiable.
Je me demande si une collection de type ne serait pas préférable, bien que je n'en ai encore jamais utilisé .... ?

MErci pour vos lumières.

S
sauceaupistou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2007, 22h15   #2
Membre Expert
 
Inscription : avril 2006
Messages : 1 318
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 318
Points : 1 591
Points : 1 591
bonjour,

une solution :
Code :
1
2
3
4
5
6
7
8
9
10
 
Dim l As Long
On Error Resume Next
l = UBound(t_Type_Fic)
If err Then 'Tableau n'était pas initialisé
  err.Clear
  ReDim t_Type_Fic(0)
Else 'Tableau initialisé
  ReDim Preserve t_Type_Fic(l + 1)
End If
Philippe
philben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2007, 04h15   #3
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 922
Points : 30 922
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Une lecture de cet article de silkyroad http://silkyroad.developpez.com/vba/tableaux/ est indispensable.

Starec
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h58.


 
 
 
 
Partenaires

Hébergement Web