XL 2013 TCD - Afficher valeur en colonne

rudymagny

XLDnaute Occasionnel
Bonjour à tous,
Avant de vous solliciter, j'ai cherché un peu sur le net et je n'ai pas trouvé de réponse ou plutôt je penses que je n'ai pas compris :-(

J'ai un TCD avec en colonne des champs...
Je voudrais que dans les cellules de ces colonnes soient affichées le contenu d'un autre paramètre de ma colonne ... Je ne suis pas clair donc je met un fichier en pj.

Merci d'avance pour l'aide que vous pourriez m'apporter.
 

Pièces jointes

  • exemple TCD.xlsx
    12.1 KB · Affichages: 55

Dranreb

XLDnaute Barbatruc
Bonjour.
Le plus simple serait peut être de décomposer le Next Détail, Tranche, Site, Maille, Doss en :
VB:
    Next Détail
If IsEmpty(TRés(L, DicTit("E5"))) Then L = L - 1
Next Tranche, Site, Maille, Doss
Ou un équivalent avec une variable de plus qui n'oblige pas à reconsulter DicTit("E5") à chaque fois.
 

Dranreb

XLDnaute Barbatruc
Il pourrait être plus simple ou plus souple de traiter les titre dans un tableau à part d'une seule ligne nommé TTit, récupéré de Feuil1.[A30:AN30].Value et y étant reversé à la fin, le TRés n'étant déchargé qu'à partir de Feuil1.[A31]
 

rudymagny

XLDnaute Occasionnel
Dranereb, je ne comprends pas bien comment fonctionne le :
Code:
GigIdx.Gigogne(Null, 1, 2, 3, 4)

Les données de mon exemple avaient été "simplifiées" pour le forum j'avais placé les bonnes colonnes les unes à côté des autres directement MAIS du coup il faut que je l'adapte car les colonnes sont séparées dans mes vraies données et il faut que je comprenne comment récupérer les bonnes données...
 

Dranreb

XLDnaute Barbatruc
Tout est expliqué dans la feuille AideGigIdx
GigIdx.Gigogne(Null, 1, 2, 3, 4) récupère, classe et organise en Collection des données déjà spécifiées plus haut à la fonction DicInvent selon les colonnes 1,2,3,4
 

rudymagny

XLDnaute Occasionnel
Je galère mais ce n'est pas de ta faute mais plutôt mon manque d'exp...

J'ai modifié le début de code afin de rendre automatique la détection de la dernière ligne des données sources :
Code:
Dim DicTit As Dictionary, L As Long, C As Long, TRés(1 To 1000, 1 To 47), Doss As SsGr, Maille As SsGr, Site As SsGr, Tranche As SsGr, Détail
Dim DernLigne As Long

'Détermine la dernière ligne du tableau de données sources
DernLigne = Feuil2.Range("A" & Rows.Count).End(xlUp).Row


'Set DicTit = GigIdx.DicInvent(Feuil1.[A5:G11], 6, 6)
Set DicTit = GigIdx.DicInvent(Feuil2.[A2:AU & DernLigne], 35, 6)

et j'ai un erreur à la ligne Set DicTit du type = Source de type "Error" non supportée

Est ce à cause de ma variable DernLigne ou bien les paramètres ColOrd1 et ColDép que je n'ai pas tout à fait bien cernés :-(


Merci
 

Dranreb

XLDnaute Barbatruc
C'est à cause de l'expression [A2:AU & DernLigne], que Excel ne sait interpréter autrement que comme une valeur d'erreur.
Pour l'appliquer il aurait fallu spécifier [A2:AU2].Resize(DernLigne - 1), mais :
Dans les cas ordinaires vous n'avez pas à vous occuper de chercher la dernière ligne: spécifiez seulement la 1ère, ça suffit :
VB:
Set DicTit = GigIdx.DicInvent(Feuil2.[A2:AU2], 35, 6)
Voire seulement la 1ère cellule :
VB:
Set DicTit = GigIdx.DicInvent(Feuil2.[A2], 35, 6)
Dans l'exemple j'avais dû spécifier la plage complète parce qu'il y avait du bazar derrière.

Si la plage de données a fait l'objet d'une mise sous forme de tableau vous pouvez spécifier le nom du tableau, entre apostrophes ou crochets droit, les deux devraient marcher.
 
Dernière édition:

rudymagny

XLDnaute Occasionnel
Finalement j'opte pour la proposition de Dugenou qui me demande moins de temps de mise en œuvre même si c'est une "bidouille" . Je fais le ratio entre le temps à adapter le code et le temps d'utilisation du truc ...

Je tiens à te remercier pour ton aide Dranreb et le temps que tu as pris à me répondre et à m'aider, j'espère ne pas te décevoir :)

@ bientôt