XL 2016 Transformer un nouveau Tableau à double entrée en liste en VBA - impossibilité d'adapter le code

Jerome-lost

XLDnaute Nouveau
Bonjour à tous,

C'est vraiment une chance de pouvoir faire appel à une communauté d'amateurs compétents, cela fait maintenant un jour que je n'arrive à rien et je commence à desespérer.

Voilà, Je dispose d'un tableau à double entrée qu'un code VBA transforme en liste . Le script fonctionne tres bien (placé dans la fenetre ci dessous)... en gras ce que je ne comprends pas . Ou cela se complique , c'est que j'ai un nouveau tableau à double entrée que je dois convertir en liste. J'ai essayé d'adapter le code mais je n'abouti à rien. J'aurai aimé partir de ce code pour commencer à comprendre les arcanes des tableaux dynamiques VBA. Je vous transmets le nouveau tableau à double entree que je dois convertir en liste (fichier joint).

Je vous remercie pour l'attention que vous voudrez bien accorder à ma demande

Sub TRANSPOSE_RHPM()
Dim a, b(), i As Long, j As Long, n As Long, x
With Sheets("RHPM SOURCE").Range("a4").CurrentRegion
a = .Value
End With
ReDim b(1 To (((UBound(a, 2) - 3) / 2) * (UBound(a, 1) - 1)), 1 To 6)
For i = 2 To UBound(a, 1)
For j = 4 To UBound(a, 2) Step 2
n = n + 1
x = Split(a(1, j), "-")

b(n, 1) = a(i, 1): b(n, 2) = a(i, 2): b(n, 3) = a(i, 3)
b(n, 4) = x(0): b(n, 5) = a(i, j)
b(n, 5) = a(i, j): b(n, 6) = a(i, j + 1)

Next
Next
With Sheets("RHPM RESULTAT").Cells(1).Resize(, 6)
.CurrentRegion.Clear
.Value = [{"Unité","Code Statut","Libellé Statut","Mois","Eff Prév","Etp Rém"}]
.Offset(1).Resize(n).Value = b
With .CurrentRegion
.Font.Name = "calibri"
.Font.Size = 10
.VerticalAlignment = xlCenter
.BorderAround Weight:=xlThin
.Borders(xlInsideVertical).Weight = xlThin
With .Rows(1)
.BorderAround Weight:=xlThin
.HorizontalAlignment = xlCenter
.Interior.ColorIndex = 36
.Font.Size = 11
End With
.Columns.ColumnWidth = 14
End With
.Parent.Activate
End With
End Sub
 

Pièces jointes

  • Tableau double entree à convertir en liste.xlsx
    193.2 KB · Affichages: 9

Jerome-lost

XLDnaute Nouveau
MDR! en tout cas merci pour cet éclairage précieux
Je vous joints le tableau en question.
Les 16 premières colonnes devaient rester inchangées
la 17 eme colonne devait contenir les mois
la 18 colonne devait contenir les montants
Le nouveau tableau devrait apparaitre sur un nouvel onglet
 

Pièces jointes

  • Tableau double entree à convertir en liste.xlsx
    193.2 KB · Affichages: 2

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Sur la base du fichier du post #16 et de son énoncé, voici une proposition par power query en seulement 4 étapes.

Obligé de zipper le fichier pour le charger ici après traitement.

P.S. : Les noms de mois ne sont pas normalisés (manquent les accents) ce qui peut être une gêne ultérieure
 

Pièces jointes

  • Tableau double entree à convertir en liste.zip
    925.5 KB · Affichages: 2
Dernière édition:

ChTi160

XLDnaute Barbatruc
Bonsoir Jerome
Bonsoir le Fil
Je suis ce fil et je n'ai pas encore compris le But
j'ai cherché un exemple de ce que doit être le résultat et pas trouvé ou compris
Pouvez-vous me mettre un exemple du Format de ce qui doit être récupéré ?
Entre les 28 colonnes du fichier du post 1 et Les doubles Colonne pour chaque mois (Eff Prév(1) et JANVIER- Etp Rém (4)) etc etc
il faudrait quelques Ligne du résultat attendu en fonction du tableau Source (lequel d'ailleurs Lol)
je ne comprends pas
Merci par avance
Jean marie
 

Jerome-lost

XLDnaute Nouveau
Merci à tous pour vous etre penchés sur mon problème de tableau à double entrée à convertir en liste. Hasco , je ne pensais pas que l'on pouvait obtenir un resultat aussi rapidement avec un tableau aussi lourd à partir de cette methode. Je tenais à remercie particulierement Sylvanu qui a fait preuve d'une patience angelique à mon egard en decorticant ligne par ligne le script VBA. Grace à lui , j'ai pu reecrire la macro pour ce nouveau tableau.
 

patricktoulon

XLDnaute Barbatruc
bonsoir à tous
perso je démarre le post
et quand je vois ça
VB:
With Sheets("RHPM RESULTAT").Cells(1).Resize(, 6)
.CurrentRegion.Clear
je me dis qu'il faudrait expliquer ce que c'est que currentregion veut dire à notre ami
ou au moins le renvoyer vers les bases
cells(1)resize (, sur 6 colones) donc( rows.count) lignes ( il y a un gouffre)
 

Discussions similaires

Réponses
4
Affichages
425

Statistiques des forums

Discussions
314 698
Messages
2 112 016
Membres
111 396
dernier inscrit
Baax