Bonjour à tous,

Après quelques heures de bricolages et de recherches, je me permets de solliciter votre aide sur un de mes fichiers. J'ai réalisé deux codes (un qui marche par la grace de l'enregistreur... pour balayer toutes les lignes et l'autre que j'ai tenté en freestyle qui ne marche pas) ==> Je les mets à la fin du post.

En gros, j'ai trois onglets, un "synthèse" avec les disponibilités des équipes A,B,C,D,E,F,G par dates (sachant que deux équipes peuvent être dispo le même jour), un "plan" qui définit les besoins de stages pour chaque personne à planifier et un "planning" où je souhaite ramener les disponibilités de chaque personne, en fonction de son roulement et de son équipe et qu'Excel me propose la meilleure répartition par stage en fonction du nombre maximum de participation par stage (ligne 2 de l'onglet planning)

Cela me parait être une montagne, avez vous une idée sur la meilleure manière de s'y prendre?

Merci de votre aide!
ci après le fichier sans macros:
Gestion des roulements_TEST - Copie.xlsx


Ci-dessous mes "bricolages"...:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Dim I As Integer
I = 0
 
Worksheets("SYNTHESE").Select
Worksheets("SYNTHESE").Range("A1048576").Select
Selection.End(xlUp).Select
 
 
 
If Range("B379").Value = Worksheets("PLAN").Range("C3").Value Then
Worksheets("PLAN").Range("E3").Value = "X"
End If
 
While ActiveCell <> Range("A3")
For I = 1 To 3
 
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
I = I + 1
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
I = I + 1
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
I = I + 1
Next
 
I = 0
 
ActiveCell.Offset(rowOffset:=-1, columnOffset:=-3).Activate
 
Wend
 
End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Option Explicit
 
Sub TEST()
 
'1 recherche du nombre de personne
Dim I As Long
Dim ligne As Long
Dim col As Long
 
I = 5
While Sheets("SYNTHESE").Cells(I, 1).Text <> ""
I = I + 1
Wend
 
ligne = 5
col = 2
 
 
While Sheets("SYNTHESE").Cells(5, col).Text <> "" 'balaye les lignes
        While ligne < I 'balaye les colonnes
 
        '**********************voir si partie du dessous fonctionne*******************************
            If Sheets("SYNTHESE").Cells(ligne, col).Value = Sheets("PLAN").Cells(col - 0, I) Then
                    Sheets("PLAN").Cells(col - 0, I) = Sheets("SYNTHESE").Cells(ligne, 3).Text
                End If
        '*****************************************************************************************
 
        ligne = ligne + 1
        Wend
        col = col + 1
        ligne = 4
Wend
 
End Sub
comment faire une fois que la boucle est créé pour que les infos contenues dans l'onglet synthèse alimente l'onglet planning?