TRAITEMENT élements de colonne avec dico

Leskwal

XLDnaute Occasionnel
Bonjour le forum

malgré plusieurs tentatives, je cale.

Je souhaite à partir d'un tableau faire une synthèse dans un autre petit tableau en utilisant un dico. Pourquoi un dico, car les éléments à traiter peuvent variés et donc je ne peux créer une liste fixe d'éléments à rechercher ?

J'espère ne pas avoir été trop confus... C'est Vendredi ... :eek:.

Voir le fichier exemple.

Un grand merci d'avance

Cordialement

Pascal
 

Pièces jointes

  • Classement_XLD_01.xlsx
    11 KB · Affichages: 24

Dranreb

XLDnaute Barbatruc
Re : TRAITEMENT élements de colonne avec dico

Bonjour.

Si la colonne Coordo peut être classée en mémoire, pas besoin de dico car ils se retrouveront ensembles.
La fonction GroupOrg du module MClassement de OutIdx pourraient rendre l'écriture de la macro très facile. Il y aurait besoin des modules de classe SsGroup, et bien sûr TableIndex. Utilit pourrait aussi rendre service.
Sinon ça devrait pouvoir se faire avec un TCD…
 

Leskwal

XLDnaute Occasionnel
Re : TRAITEMENT élements de colonne avec dico

Merci pour cette réponse rapide, mais je dois bien avouer que la solution à trouver dépasse de loin mes compétences en VBA.

Mise à part les quelques commandes de base : Do, for, While ,if then else goto ,select case ... :mad:

J'ai bien essayé d'ouvrir OutIdx : HEU !!! ..... :confused:

Peut-être un petit écrit sur le fichier lié de manière à décortiquer une solution ? :eek:

Merci d'avance

Pascal
 

Dranreb

XLDnaute Barbatruc
Re : TRAITEMENT élements de colonne avec dico

Ça tombe bien: il n'y a que des commandes de base dans la procédure synthèse.
Ah, Zut ! il trouve un pilote nommé Tableau de référence et un autre sans nom…
 

Pièces jointes

  • GrpOrgLeskwal.xls
    119.5 KB · Affichages: 31

Leskwal

XLDnaute Occasionnel
Re : TRAITEMENT élements de colonne avec dico

Une pti'te question... :eek:

Peut-on faire un "RESET" de la variable "pilote" ? (La mettre à 0) :confused:

En effet, je boucle la solution proposée avec une variable "Var_Pilote" permettant de créer des Onglets intitulés par le nom des Pilotes qui eux se trouvent dans une liste assez longue (Création d'un DICO) :

Code:
' ETAPE 3 ------------------------------------------------------------------------------------------------------
' UTILISATION DES MODULES DE CLASSE POUR VENTILER LES COORDO / PILOTES
Dim T(), Pilote As SsGroup, Coordo As SsGroup, Détail, Heures As Long, L As Long
ReDim T(1 To 50000, 1 To 8)

     For Each Var_Pilote In dico_PILOTE_DICO.keys
        Sheets(Var_Pilote).Activate
        
        For Each Pilote In GroupOrg(ColUti(Sheets(Var_Pilote).[A2:P2]), 1, 2)
 
            For Each Coordo In Pilote.Contenu
                Heures = 0
                    For Each Détail In Coordo.Contenu
                        Heures = Heures + Détail(6)
                    Next Détail
                                    L = L + 1
                                    T(L, 1) = Pilote.Id
                                    T(L, 2) = Coordo.Id
                                    T(L, 3) = Coordo.Contenu.Count
                                    T(L, 4) = Heures
            Next Coordo

       Next Pilote

Sheets(Var_Pilote).[R3:Y5002].ClearContents
Sheets(Var_Pilote).[R3:Y3].Resize(L).Value = T
    
'
'          J'AIMERAI POUVOIR FAIRE, A CE NIVEAU, UN RESET DES DONNÉES CONTENUES DANS "PILOTE"
'          EST-CE POSSIBLE ? 

    Next Var_Pilote

Pourquoi le "reset" ?
Pour le Premier onglet (sélection avec la variable "Var_Pilote") cela fonctionne parfaitement, mais dès qu'on passe au deuxième onglet (toujours avec la boucle Var_Pilote) , "PILOTE" cumule les données du nouvel onglet avec ceux du précédent etc .....

Certains pointages diffèrent du fichier exemple car je l'ai adapté au fichier réel...

Merci d'avance pour votre réponse.

Cordialement

Pascal
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : TRAITEMENT élements de colonne avec dico

Comprends pas bien ce que vous avez fait ou voulu faire. Si vos données sont bien dans une seule feuille, je n'ai pas l'impression que vous avez besoin d'un dictionnaire. Juste après le 1er For Each Pilote vous pourriez utiliser Pilote.Id comme nom de feuille il me semble. Par contre il faut remettre L à 0 à chaque feuille, donc pour chaque pilote.
J'ai la vague impression que vous refaites en amont ce que GroupOrg fait déjà, sauf qu'au lieu de le mettre dans un dictionnaire il le met dans une collection d'objets SsGroup, lesquels ont une propriété Id qui est bien une clé unique.
 
Dernière édition:

Leskwal

XLDnaute Occasionnel
Re : TRAITEMENT élements de colonne avec dico

PARFAIT CELA FONCTIONNE.

Je remets L = 0 ICI :

Code:
     For Each Var_Pilote In dico_PILOTE_DICO.keys
        Sheets(Var_Pilote).Activate
        
===== >      L = 0

        For Each Pilote In GroupOrg(ColUti(Sheets(Var_Pilote).[A2:P2]), 1, 2)

NICKEL...

ENCORE UN GRAND MERCI :D

Pascal
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 088
Membres
103 461
dernier inscrit
dams94