Alimenter Array vba avec ligne tableau Excel

Vorens

XLDnaute Occasionnel
Bonjour à tous,


Je bloquer sur un truc bête mais je m'en sorts pas ! J'essais d'alimenter un tableau à deux dimensions avec des données contenue dans un tableau excel.

L’astuce est que je le fais ligne par ligne car dans mon objectif final, je désire placer dans mon Array que certaine ligne d'un énorme tableau sous condition,

Le code que j'ai imaginer ci-dessous fonctionne très bien pour la première ligne mais je n'arrive pas à redimensionner mon tableau correctement pour y introduire la ligne suivante.

Code:
Sub test()


Dim tableau()
y = Range("A1").End(xlToRight).Column
g = LetCol(y)

For i = 0 To 3

ReDim Preserve tableau(i, y)

tableau = Sheets("Feuil1").Range("A" & i + 1 & ":" & g & i + 1).Value
h = h + 1

Next

End Sub
Function LetCol(NoCol)
LetCol = Split(Cells(1, NoCol).Address, "$")(1)
End Function

Mon problème vient certainement du redim du tableau. Donc voila si quelque sait pourquoi cela ne fonctionne pas je suis toute ouille :)

Meilleures salutations

Vorens
 

Misange

XLDnaute Barbatruc
Re : Alimenter Array vba avec ligne tableau Excel

Bonjour
On ne peut redimensionner que la 2° dimension d'un tableau, or là tu essaies de redimensionner la première
Ce lien n'existe plus
il faut dans ce cas transposer tes données

Cela dit, il est BEAUCOUP plus rapide
1) de remplir l'array avec toutes les données de ton tableau d'un coup
2) de recopier dans un nouvel array les données du premier en testant la condition intéressante à ce moment là seulement
3) de renvoyer en une seule opération le tout dans ta feuille

tu en as un exemple ici
Ce lien n'existe plus
 

Vorens

XLDnaute Occasionnel
Re : Alimenter Array vba avec ligne tableau Excel

Hello Misange,


Merci pour ta réponse. De ces indications j'ai réalisé ce code.

Code:
Sub test()

Dim tableau1()
Dim tableau()
y = Sheets("Feuil1").Range("A1").End(xlToRight).Column
g = LetCol(y)
h = Sheets("Feuil1").Range("A" & "65535").End(xlUp).Row




tableau = Sheets("Feuil1").Range("A" & "1" & ":" & g & h).Value
f = 0
For i = 0 To UBound(tableau)


If tableau(1, i + 1) = "A" Then

For j = 0 To UBound(tableau, 2)

If Not j = 0 Then

f = j - 1

Else

f = 0
End If


ReDim Preserve tableau1(i To i, f To j)

tableau1(i, j) = tableau(i + 1, j + 1)

Next
End If

Next

End Sub
Function LetCol(NoCol)
LetCol = Split(Cells(1, NoCol).Address, "$")(1)
End Function

Le problème est que les deux premier REdim passe sans problèmes, mais au troisième sa plante. Je ne comprend pas pourquoi. :/
 

Discussions similaires

Réponses
1
Affichages
176
Réponses
0
Affichages
155
Réponses
12
Affichages
253

Statistiques des forums

Discussions
312 322
Messages
2 087 270
Membres
103 503
dernier inscrit
maison