Tableau pour transposer des données

Bonjour à toutes et tous,

Je rencontre un problème de compréhension sur une ligne d’une macro que j'ai adaptée. (Je ne suis pas un spécialiste macro)

Pour info, je récupère des infos d'un gros fichier (35'000 lignes et 84 colonnes) pour en récupérer que celles qui sont pertinentes dans une autre feuille de 20 colonnes.

Mon problème vient (je pense) de cette ligne: Sheets("Gros_Prod").Range("A2").Resize(UBound(tablo2, 2), 20) = Application.Transpose(tablo2)

A quoi sont attribué ces informations: Resize(UBound(tablo2, 2), 20)

Je voudrais comprendre à quoi correspond la valeur 2 et la valeur qui suit. J'ai mis 20 car mon tableau qui reçoit les données comportent 20 lignes. Sur la macro où j'ai récupéré cette valeur il est indiqué Resize(UBound(tablo2, 2), 3)

Pour essayer de me faire mieux comprendre j'ai mis la macro en entier ci-dessous... Je ne peux pas attacher le fichier car il fait 36'981 Ko.

Je vous remercie pour votre aide car je sèche depuis un long moment. Merci d'avance car votre forum m'a déjà bien aidé sur certaine problématique et je suis toujours impressionné par votre expertise.

Avec mes plus cordiales salutations

Fabrice

Sub Import_Données_Gros()

Dim i As Long, k As Long, DerLig As Long

Application.Calculation = xlCalculationManual

Sheets("Gros_Prod").Range("A2:D" & Sheets("Gros_Prod").Range("A" & Sheets("Gros_Prod").Rows.Count).End(xlUp)(2).Row).ClearContents

With Sheets("BD_REG")

tablo1 = .Range("A2:CF" & .Range("A" & .Rows.Count).End(xlUp).Row)

ReDim tablo2(20, 1)

k = 0

For i = 1 To UBound(tablo1, 1)

If tablo1(i, 84) = "Gros_Prod" Then

ReDim Preserve tablo2(20, k + 1)

tablo2(0, k) = tablo1(i, 1)

tablo2(1, k) = tablo1(i, 10)

tablo2(2, k) = tablo1(i, 41)

tablo2(3, k) = tablo1(i, 77)

tablo2(4, k) = tablo1(i, 78)

tablo2(5, k) = tablo1(i, 3)

tablo2(6, k) = tablo1(i, 84)

tablo2(7, k) = tablo1(i, 20)

tablo2(8, k) = tablo1(i, 25)

tablo2(9, k) = tablo1(i, 27)

tablo2(10, k) = tablo1(i, 28)

tablo2(11, k) = tablo1(i, 29)

tablo2(12, k) = tablo1(i, 31)

tablo2(13, k) = tablo1(i, 23)

tablo2(14, k) = tablo1(i, 24)

tablo2(15, k) = tablo1(i, 13)

tablo2(16, k) = tablo1(i, 14)

tablo2(17, k) = tablo1(i, 15)

tablo2(18, k) = tablo1(i, 81)

tablo2(19, k) = tablo1(i, 80)

k = k + 1

End If

Next i

End With

Sheets("Gros_Prod").Range("A2").Resize(UBound(tablo2, 2), 20) = Application.Transpose(tablo2)

MsgBox "MàJ terminée", vbExclamation

'Application.Calculation = xlCalculationAutomatic

End Sub

bonjour,

Pour nous qui sommes de l'extérieur c'est pas trop lisible ton code :

Tablo1, Tablo2 c'est pas très explicite

je préférerai TabloS (Source), TabloC (Cible)

Mébon...

UBound(tablo2) c'est Ubound la 1ère dimension de ton Tablo (lignes)

UBound(tablo2, 2) c'est Ubound la 2ème dimension de ton Tablo... (colonnes)

Dans cet exemple :

Sub test()
Dim i, Arr(20, 5)
i = UBound(Arr, 2) 'i= 5 et Nb Colonnes = 6 !
End Sub

Pour une réponse plus complète, fournir Feuille Source (100 lignes Maxi) et Feuille Cible

A+

Bonjour Galopin01,

Tout d'abord je voulais te remercier de te pencher sur mon problème.

Tablo1 est effectivement la source et Tablo2 celui de destination (cible)

A quoi servirait alors la valeur 3 (ou 20 dans mon fichier)que j'ai mise en gras et italique?Ce n'est pas le nombre de colonnes à remplir?

Sheets("Gros_Prod").Range("A2").Resize(UBound(tablo2, 2), 3) = Application.Transpose(tablo2)

Je peux mettre le fichier sur un lien Dropbox, si cela aide...

3 ou 20 : C'est le nombre de colonnes de ton resize

Utilise plutôt cjoint

A+

Bonjour Galopin,

Je ne peux pas utiliser cjoint car mon doc fait plus de 15 Ko.

Je te remercie encore pour ton aide

Belle journée.

Bonjour Galopin,

J'ai trouvé... La condition pour renvoyer les données était dans la mauvaise colonne. 84 au lieu de 83.

If tablo1(i, 84) = "Gros_Prod" Then

Merci pour ton aide. et excellente journée.

Si de passage sur Genève n'hésite pas à me contacter je t'invite pour un verre. Je mets mon adresse en MP

A l'avenir dans ces conditions au lieu de mettre les 35000 lignes, tu fais une copie ou tu en laisses une centaine, ( ou juste assez pour faire des test crédibles) et ton fichier il va retrouver sa taille de guêpe...

Effectivement... j'aurai dû y penser...

Le problème quand on a trop la tête dans le guidon...

En tout cas merci pour tout

Rechercher des sujets similaires à "tableau transposer donnees"