Sintec16
Messages postés7Date d'inscriptionjeudi 17 avril 2003StatutMembreDernière intervention17 janvier 2005
-
24 juin 2003 à 15:36
Sintec16
Messages postés7Date d'inscriptionjeudi 17 avril 2003StatutMembreDernière intervention17 janvier 2005
-
24 juin 2003 à 17:14
Bonjour,
Voilà je cherche a stocker tous le contenu d'un fichier Excel dans un tableau dynamique... (c'est vraiment plus rapide que de parcourir les lignes une à une dans Excel 2sec contre 4min pour 12000 lignes)
Voici mon source (je pense que les variables sont suffisament parlantes...) :
While wI <= lsClasseur.Worksheets.Count
Set wFeuille = lsClasseur.Worksheets(wI)
Set wPlage = wFeuille.UsedRange
ReDim Preserve lsTableauXLS(1 To (lsClasseur.Worksheets.Count), 1 To wPlage.Rows.Count, 1 To wPlage.Columns.Count)
'cette ligne ne marche pas trop...
lsTableauXLS(wI) = wPlage.Value
'Recherche du nb max de lignes sur une page
If (lsNbLignes < wPlage.Rows.Count) Then
lsNbLignes = wPlage.Rows.Count
End If
Set wFeuille = Nothing
Set wPlage = Nothing
wI = wI + 1
Wend
Ma question c'est comment faire pour accéder uniquement a la première dimension du tableau...
Si vous connaissez une doc bien faite sur les tableaux dynamiques je suis preneur...
Sintec16
Messages postés7Date d'inscriptionjeudi 17 avril 2003StatutMembreDernière intervention17 janvier 2005 24 juin 2003 à 17:14
C'est re-moi...
Ma question reste valable quant à la gestion de la troisième dimension d'un tableau dynamique, MAIS !
J'ai une solution de contournement pour résoudre le pb si jamais ça interresse qqun un jour...
'Déclarer un type avec un tabdyn dedans
Private Type tPlageXLS
pXLS() As Variant
End Type
' et déclarer un tabdyn de type tPlageXLS
Private lsTableauXLS() As tPlageXLS
'Et donc voici le code qui va bien pour charger le tableau
wI = 1
lsNbLignes = 0
Erase lsTableauXLS
ReDim Preserve lsTableauXLS(lsClasseur.Worksheets.Count - 1)
While wI <= lsClasseur.Worksheets.Count
Set wFeuille = lsClasseur.Worksheets(wI)
Set wPlage = wFeuille.UsedRange
ReDim Preserve lsTableauXLS(wI - 1).pXLS(1 To wPlage.Rows.Count, 1 To wPlage.Columns.Count)
lsTableauXLS(wI - 1).pXLS = wPlage.Value
'Recherche du nb max de lignes
If (lsNbLignes < wPlage.Rows.Count) Then
lsNbLignes = wPlage.Rows.Count
End If
Set wFeuille = Nothing
Set wPlage = Nothing
wI = wI + 1
Wend 'lsLigneCourante ChargerFichier True
une fois chargé on l'utilise comme ça le tableau
lsTableauXLS(numFeuille).pXLS(wLigne, wColonne)
Et voilà... je sais j'ai un peu l'air de parler tout seul, mais c'est vraiment plus rapide comme fonctionnement...