Tableau a 3 dimension et Excel

Sintec16 Messages postés 7 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 17 janvier 2005 - 24 juin 2003 à 15:36
Sintec16 Messages postés 7 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 17 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...

Please help me :)

Because VB is a way of life

1 réponse

Sintec16 Messages postés 7 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 17 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...

a+

Because VB is a way of life
0
Rejoignez-nous