XL 2013 Planning de surveillance examen

whatsupdoc

XLDnaute Nouveau
Bonjour,
J'ai un tableau avec des professeurs, un horaire et une salle de surveillance.
J'ai besoin de transformer ce tableau avec des lignes des salles, des horaires et savoir quels professeurs seront présents dans ces salles.
J'ai également des professeurs notés "soutien" dans le premier tableau. Cela signifie qu'ils sont prévus au cas où un des professeurs affecté en salle serait absent.
J'aimerais également avoir un récap de ces professeurs en soutient en face de l'horaire.
Je joins un tableau d'exemple.
Merci beaucoup!
 

Pièces jointes

  • planning test.xlsx
    187.1 KB · Affichages: 67

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @whatsupdoc,

Via deux formules matricielles à valider par la combinaison des trois touches Ctrl+Maj+Entrée :

la première en K2 à tirer/copier vers la droite et vers le bas
VB:
=SIERREUR(INDEX($B:$B;PETITE.VALEUR(SI(C$2:C$35=$J2;LIGNE(C$2:C$35));1+MOD(LIGNE();2)));"")

et la seconde en K23 à tirer/copier vers la droite et vers le bas

edit: Salut @zebanx :)
 

Pièces jointes

  • whatsupdoc- planning test- v1.xlsx
    191.7 KB · Affichages: 65
Dernière édition:

whatsupdoc

XLDnaute Nouveau
Bonjour @mapomme,
J'ai essayé de comprendre la formule et en tâtonnant, j'ai réussi à faire l'opération inverse : passer de la répartition des profs dans les jurys à la répartition des jurys par profs..
Ma question : est-ce possible d'inclure dans la formule la copie de la couleur des cellules des jurys? Par exemple le vert foncé pour jury A..
Merci...
 

Pièces jointes

  • whatsupdoc planning inverse.xlsx
    74.7 KB · Affichages: 28

whatsupdoc

XLDnaute Nouveau
Voilà mon VBA editor...

1032221
 

JBARBE

XLDnaute Barbatruc
Re,
on dirait que ma macro ne peux s'afficher entièrement dans ton module !
Voici mon code modifié :
une boucle >>For j = 1 To 35 pour les lignes :
If Cells(i + j, k) = "Jury salle A" Then Cells(i + j, k).Interior.ColorIndex = 10>>>>ici >Jury salle A
en remplacement de :
If Cells(i + 1, k) = "Jury salle A" Then Cells(i + 1, k).Interior.ColorIndex = 10
Ce qui évite de ne compter qu'une ligne en dessous!
pour >> les couleurs du tableau de droite semblent différentes de celles du tableau de gauche >>il ne devrait pas avoir de différence
tu dois avoir un problème avec Excel !
VB:
Option Explicit

Sub test()
Dim i As Long, k As Long, j As Long
Application.ScreenUpdating = False
Range("K2:N35").Interior.ColorIndex = xlNone
For i = 2 To 35
For k = 11 To 14
If Cells(i, k) = "Jury salle A" Then Cells(i, k).Interior.ColorIndex = 10
For j = 1 To 35
If Cells(i + j, k) = "Jury salle A" Then Cells(i + j, k).Interior.ColorIndex = 10
Next j
If Cells(i, k) = "Jury salle B" Then Cells(i, k).Interior.ColorIndex = 5
For j = 1 To 35
If Cells(i + j, k) = "Jury salle B" Then Cells(i + j, k).Interior.ColorIndex = 5
Next j
If Cells(i, k) = "Jury salle C" Then Cells(i, k).Interior.ColorIndex = 43
For j = 1 To 35
If Cells(i + j, k) = "Jury salle C" Then Cells(i + j, k).Interior.ColorIndex = 43
Next j
If Cells(i, k) = "Jury salle D" Then Cells(i, k).Interior.ColorIndex = 45
For j = 1 To 35
If Cells(i + j, k) = "Jury salle D" Then Cells(i + j, k).Interior.ColorIndex = 45
Next j
If Cells(i, k) = "Jury salle E" Then Cells(i, k).Interior.ColorIndex = 7
For j = 1 To 35
If Cells(i + j, k) = "Jury salle E" Then Cells(i + j, k).Interior.ColorIndex = 7
Next j
If Cells(i, k) = "Jury salle F" Then Cells(i, k).Interior.ColorIndex = 8
For j = 1 To 35
If Cells(i + j, k) = "Jury salle F" Then Cells(i + j, k).Interior.ColorIndex = 8
Next j
If Cells(i, k) = "Jury salle G" Then Cells(i, k).Interior.ColorIndex = 3
For j = 1 To 35
If Cells(i + j, k) = "Jury salle G" Then Cells(i + j, k).Interior.ColorIndex = 3
Next j
If Cells(i, k) = "Jury salle H" Then Cells(i, k).Interior.ColorIndex = 6
For j = 1 To 35
If Cells(i + j, k) = "Jury salle H" Then Cells(i + j, k).Interior.ColorIndex = 6
Next j
If Cells(i, k) = "Jury salle 5" Then Cells(i, k).Interior.ColorIndex = 15
For j = 1 To 35
If Cells(i + j, k) = "Jury salle 5" Then Cells(i + j, k).Interior.ColorIndex = 15
Next j
If Cells(i, k) = "Jury salle 6" Then Cells(i, k).Interior.ColorIndex = 17
For j = 1 To 35
If Cells(i + j, k) = "Jury salle 6" Then Cells(i + j, k).Interior.ColorIndex = 17
Next j
Next k
Next i
Application.ScreenUpdating = True
End Sub

Bonne soirée !
 

JBARBE

XLDnaute Barbatruc
Bonjour à tous, à toutes,
J'ai l'impression que notre ami whatsupdoc reste muet car les erreurs qu'il a constaté sont peut être dû au fait qu'il possède un Mac !
Dommage qu'il ne l'ai pas signalé plus tôt !
Néanmoins je tenais à modifier ma macro qui ne corresponds pas à la demande malgré son efficacité ( mais d'une durée trop longue )!
VB:
Option Explicit

Sub testA()
Dim vCellule As Range
Application.ScreenUpdating = False
Range("K2:N35").Interior.ColorIndex = xlNone
For Each vCellule In Range("K2:N35")
If vCellule = "Jury salle A" Then vCellule.Interior.ColorIndex = 10
If vCellule = "Jury salle B" Then vCellule.Interior.ColorIndex = 5
If vCellule = "Jury salle C" Then vCellule.Interior.ColorIndex = 43
If vCellule = "Jury salle D" Then vCellule.Interior.ColorIndex = 45
If vCellule = "Jury salle E" Then vCellule.Interior.ColorIndex = 7
If vCellule = "Jury salle F" Then vCellule.Interior.ColorIndex = 8
If vCellule = "Jury salle G" Then vCellule.Interior.ColorIndex = 3
If vCellule = "Jury salle H" Then vCellule.Interior.ColorIndex = 6
If vCellule = "Jury salle 5" Then vCellule.Interior.ColorIndex = 15
If vCellule = "Jury salle 6" Then vCellule.Interior.ColorIndex = 17
Next
Application.ScreenUpdating = True
End Sub

Bonne journée !
 

Pièces jointes

  • planning inverse.xlsm
    31.6 KB · Affichages: 44

Discussions similaires