XL 2016 Répartition des profs sur salles pour surveillance

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 !

Seddiki_adz

XLDnaute Impliqué
Bonjour
j'ai un fichier pour la répartition de 75 profs sur 25 salles pour surveillance
qui peut m'aider de modifier le code de module pour avoir pour chaque classe trois surveillants au lieu de deux surveillants et un remplaçant
Merci d'avance
 

Pièces jointes

Bonjour sabri186, Bernard,
Quelqu'un peut m'aider à le modifier de manière à ce que si on place un surveillant sur le tableau au préalable la case ne soit pas ecrasée.
Sur le fichier du post #59 j'ai modifié la macro du bouton :
VB:
Option Compare Text 'la casse est ignorée

Private Sub CBnTirage_Click()
   Dim cible, Lcible, Ccible, ntir, TNoms(), LOt As ListObject, TRésu(), M As Long, L As Long, J As Long, C As Long, flag As Boolean
   cible = [D30]: Lcible = Range([D31]).Row - 3: Ccible = Range([D31]).Column - 1
For ntir = 1 To 100
   On Error Resume Next
   TNoms = [TbProfs[Professeur]].Value
   If Err Then MsgBox "Table des professeurs indisponible", vbCritical, "Tirage": Exit Sub
   On Error GoTo 0
   If UBound(TNoms, 1) Mod 3 > 0 Then MsgBox "Le nombre de professeurs doit être un multiple de 3", vbCritical, "Tirage": End
   Set LOt = Me.ListObjects(1): M = (LOt.ListColumns.Count - 1) \ 3
   If TiragePSimOK(NbJrs:=UBound(TNoms, 1), MMax:=M, RClubs:=[TbProfs[Etablissement]]) Then
      ReDim TRésu(1 To UBound(Tirage, 2), 1 To UBound(Tirage, 1) * 3)
      For L = 1 To UBound(Tirage, 2)
         C = 0
         For M = 1 To UBound(Tirage, 1): For J = 1 To 3
            C = C + 1
            TRésu(L, C) = TNoms(Tirage(M, L, J), 1)
            If TRésu(L, C) = cible Then If L = Lcible And C = Ccible Then flag = True
            Next J, M, L
1       With Me.ListObjects(1).DataBodyRange
         L = .Rows.Count - UBound(TRésu, 1)
         Select Case Sgn(L)
            Case 1: .Rows(2).Resize(L).Delete xlShiftUp
            Case -1: .Rows(2).Resize(-L).Insert xlShiftDown
            End Select
         .Columns(2).Resize(, UBound(TRésu, 2)).Value = TRésu: End With
      End If
      If flag Then Range([D31]) = cible: Exit For
Next ntir
MsgBox IIf(flag, "Cible trouvée", "Cible NON trouvée")
End Sub
Le texte cible est en D30, l'adresse de la cellule cible en D31.

J'ai fait quelques essais : la cible a toujours été trouvée mais ça prend un certain temps 😀

A+
 

Pièces jointes

un autre essai.
on a un tableau "préalable" dans la feuille "prealable". Il y a un menu déroulant pour les professeurs et si un professeur devient rouge (MFC), il n'est pas disponible et s'il devient orange, il esten doublon dans cette séance.
poussez le bouton vert "BSALV" ou lancer la macro "M_BSALV"
 

Pièces jointes

- 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

Réponses
40
Affichages
2 K
Retour