TRAITEMENT élements de colonne avec dico

  • Initiateur de la discussion Initiateur de la discussion Leskwal
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 ... 😱.

Voir le fichier exemple.

Un grand merci d'avance

Cordialement

Pascal
 

Pièces jointes

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…
 
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 ... 😡

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

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

Merci d'avance

Pascal
 
Re : TRAITEMENT élements de colonne avec dico

Une pti'te question... 😱

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

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:
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:
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 😀

Pascal
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

N
Réponses
2
Affichages
2 K
Novice38
N
N
Réponses
4
Affichages
2 K
Novice38
N
A
Réponses
0
Affichages
8 K
Arpopa
A
Y
Réponses
5
Affichages
2 K
yasminajm
Y
S
Réponses
17
Affichages
35 K
Retour