Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres extraire les classe de chaque prof d'un emploie du temps

afartatou

XLDnaute Nouveau
Bonjour
je vous envoie une partie réel d'un emploie du temps dont je veux extraire les classes de chaque prof et aussi le nombre d'heur de chacune de ces classe.
Merci D'avance
(excel 2007)
 

Pièces jointes

  • EMP1.xlsx
    14.9 KB · Affichages: 23

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour le fil, bonjour le forum,

Je n'ai pas aimé ce que dis Paf ! Je regrette un peu de m'être penché sur ton problème. Mais puisque c'est fait, j'envoie quand même à contrecœur...
Ton fichier a été modifié car il manquait des colonnes, un comble !
Le code :

VB:
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la varable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim PAE As Range 'déclare la variable PAE (Plage À Effacer)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim CL As Variant 'déclare la variable CL (Classe)
Dim NH As Variant 'déclare la variable NH (Nombre d'Heures)

Set O = Worksheets("Feuil1") 'définit l'onglet O
DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet O
Set PL = O.Range("A4:AQ" & DL) 'définit la plage PL
Set PAE = O.Range("AR4:BG" & DL) 'définit la plage PAE
PAE.ClearContents 'efface le contenu de la plage PAE
For I = 4 To DL 'boucle 1 : des lignes 4 à DL
    Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
    For J = 4 To 43 'boucle 2 : des colonne 4 à 43
        If O.Cells(I, J).Value <> "" Then 'condition : si la cellule ligne I colonne J de l'onglet O n'est pas vide
            D(O.Cells(I, J).Value) = D(O.Cells(I, J).Value) + 1 'alimente le dictionaire D
        End If 'fin de la condition
    Next J 'prochaine ligne de la boucle
    CL = D.Keys 'récupère dans le tabkeau CH la liste des éléments du dictionnaire D sans doublon
    NH = D.items 'récupère dans le tabkeau NH le nombre de fois qu'apparaît chaque élément unique
    O.Cells(I + 1, "AR").Resize(1, D.Count) = CL 'renvoie dans la cellule ligne I colonne AR redimensionnée le tableau CL
    O.Cells(I + 1, "AZ").Resize(1, D.Count) = NH 'renvoie dans la cellule ligne I colonne AZ redimensionnée le tableau NH
Next I 'prochaine ligne de la boucle
End Sub

Le fichier :
 

Pièces jointes

  • Afartatou_ED_.xlsm
    24.7 KB · Affichages: 27

Robert

XLDnaute Barbatruc
Repose en paix
Re,

En regardant l'unique réponse du Sieur Afartatou je regrette amèrement de lui être venu en aide... Il fait désormais partie de ma longue liste des TdC et je l'ai même renommé Pretatou car ça me semblait mieux correspondre...
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…