Re : Automatisation d'une feuille de garde
bonjour Salsitawapa
code équipe1 g 24h et équipe2 j 12h
Private Sub FeuilJourEq124()
Dim Plg As Variant, EqG As Variant, EqD As Variant, LetC As String
Dim L As Byte, L1 As Byte, L2 As Byte, I As Byte, I1 As Byte, E As Byte
application.screenupdating=false
Plg = Range("P11:T38")
For L = 1 To UBound(Plg, 1)
If Plg(L, 1) <> "" Then I = I + 1 'compte
If Plg(L, 4) <> "" Then I1 = I1 + 1
Next L
ReDim EqG(1 To I, 1 To 4)
ReDim EqD(1 To I1, 1 To 4)
I = 0: I1 = 0
For L = 1 To UBound(Plg, 1)
If L = 1 Then Plg(L, 3) = 20 'sofae
If L = 11 Then Plg(L, 3) = 30 'sonfae
If L = 17 Then Plg(L, 3) = 36 'iiavsab
If L = 24 Then Plg(L, 3) = 43 'i
Next L
For L = 1 To UBound(Plg, 1)
If Plg(L, 1) <> "" Then
I = I + 1
EqG(I, 1) = Plg(L, 1)
EqG(I, 2) = Plg(L, 2)
If Plg(L, 3) > 0 Then EqG(I, 3) = Plg(L, 3)
End If
If Plg(L, 4) <> "" Then
I1 = I1 + 1
EqD(I1, 1) = Plg(L, 4)
EqD(I1, 2) = Plg(L, 5)
If Plg(L, 3) > 0 Then EqD(I1, 3) = Plg(L, 3)
End If
Next L
With Sheets("Garde")
Plg = .Range("N4:AS22")
'If E = 1 Then Plg = .Range("N4:AS22")
'If E = 2 Then Plg = .Range("N31:AS48")
'If E = 3 Then Plg = .Range("N41:AS74")
monjour = .Range("A1").Value
End With
For L = 1 To UBound(EqG, 1)
For L1 = 2 To UBound(Plg, 1)
If Plg(L1, UBound(Plg, 2)) = EqG(L, 2) Then 'compare noms
For I = 1 To UBound(Plg, 2)
If Plg(1, I) = monjour Then
EqG(L, 4) = Plg(L1, I) 'la garde
Exit For
End If
Next I
Exit For
End If
Next L1
Next L
'écrit dans jour cellules j,k
L1 = 0
For L = 1 To UBound(EqG, 1)
If EqG(L, 3) > 0 Then
I = EqG(L, 3)
LetC = "L"
Else: LetC = "J"
End If
If I = 20 Then L1 = Range(LetC & "28").End(xlUp).Row + 1
If I = 30 Then L1 = Range(LetC & "34").End(xlUp).Row + 1
If I = 36 Then L1 = Range(LetC & "41").End(xlUp).Row + 1
If I = 43 Then L1 = Range(LetC & "50").End(xlUp).Row + 1
Range("J" & L1) = EqG(L, 1)
Range("K" & L1) = EqG(L, 2)
Next L
For L = 1 To UBound(EqG, 1)
For L1 = 2 To UBound(Plg, 1)
If Plg(L1, UBound(Plg, 2)) = EqG(L, 2) Then 'compare noms
For I = 1 To UBound(Plg, 2)
If Plg(1, I) = monjour Then
EqG(L, 4) = Plg(L1, I) 'la garde
Exit For
End If
Next I
Exit For
End If
Next L1
Next L
'écrit dans jour cellules m,n
I = 0: I1 = 0
For L = 1 To UBound(EqD, 1)
If EqD(L, 3) > 0 Then
I = EqD(L, 3)
LetC = "L"
Else: LetC = "M"
End If
If I = 20 Then I1 = Range(LetC & "28").End(xlUp).Row + 1
If I = 30 Then I1 = Range(LetC & "34").End(xlUp).Row + 1
If I = 36 Then I1 = Range(LetC & "41").End(xlUp).Row + 1
If I = 43 Then I1 = Range(LetC & "50").End(xlUp).Row + 1
Range("M" & I1) = EqD(L, 1)
Range("N" & I1) = EqD(L, 2)
Next L
FeuilJourEq212
End Sub
Private Sub FeuilJourEq212()
Dim Plg As Variant, EqG As Variant, EqD As Variant, LetC As String
Dim L As Byte, L1 As Byte, L2 As Byte, I As Byte, I1 As Byte, E As Byte
Plg = Range("V40:Z57")
For L = 1 To UBound(Plg, 1)
If IsNumeric(Plg(L, 1)) And Plg(L, 1) <> "" Then I = I + 1 'compte
If Plg(L, 4) > 0 Then I1 = I1 + 1
Next L
ReDim EqG(1 To I, 1 To 4)
ReDim EqD(1 To I1, 1 To 4)
I = 0: I1 = 0
For L = 1 To UBound(Plg, 1)
If L = 1 Then Plg(L, 3) = 20 'sofae
If L = 6 Then Plg(L, 3) = 36 'sonfae
If L = 9 Then Plg(L, 3) = 43 'ccavsab
If L = 14 Then Plg(L, 3) = 52 'c
Next L
For L = 1 To UBound(Plg, 1)
If IsNumeric(Plg(L, 1)) And Plg(L, 1) <> "" Then
I = I + 1
EqG(I, 1) = Plg(L, 1)
EqG(I, 2) = Plg(L, 2)
If Plg(L, 3) > 0 Then EqG(I, 3) = Plg(L, 3)
End If
If IsNumeric(Plg(L, 4)) And Plg(L, 4) <> "" Then
I1 = I1 + 1
EqD(I1, 1) = Plg(L, 4)
EqD(I1, 2) = Plg(L, 5)
If Plg(L, 3) > 0 Then EqD(I1, 3) = Plg(L, 3)
End If
Next L
With Sheets("Garde")
Plg = .Range("N86:AS130")
monjour = .Range("A1").Value
End With
For L = 1 To UBound(EqG, 1)
For L1 = 16 To UBound(Plg, 1)
If Plg(L1, UBound(Plg, 2)) = EqG(L, 2) Then 'compare noms
For I = 1 To UBound(Plg, 2)
If Plg(1, I) = monjour Then
EqG(L, 4) = Plg(L1, I) 'la garde
Exit For
End If
Next I
Exit For
End If
Next L1
Next L
'écrit dans jour colonnes j,k
I = 0: I1 = 0
For L = 1 To UBound(EqG, 1)
If EqG(L, 3) > 0 Then I = EqG(L, 3)
If Range("J" & I) = "" Then
LetC = "L"
Else: LetC = "J"
End If
If I = 20 Then L1 = Range("J" & "28").End(xlUp).Row + 1
'If I = 30 Then L1 = Range("J" & "34").End(xlUp).Row + 1
If I = 36 Then L1 = Range(LetC & "41").End(xlUp).Row + 1
If I = 43 Then L1 = Range(LetC & "50").End(xlUp).Row + 1
If I = 52 Then L1 = Range(LetC & "57").End(xlUp).Row + 1
Range("J" & L1) = EqG(L, 1)
Range("K" & L1) = EqG(L, 2)
Next L
For L = 1 To UBound(EqD, 1)
For L1 = 16 To UBound(Plg, 1)
If Plg(L1, UBound(Plg, 2)) = EqD(L, 2) Then 'compare noms
For I = 1 To UBound(Plg, 2)
If Plg(1, I) = monjour Then
EqD(L, 4) = Plg(L1, I) 'la garde
Exit For
End If
Next I
Exit For
End If
Next L1
Next L
'écrit dans jour colonnes m,n
I = 0: I1 = 0
For L = 1 To UBound(EqD, 1)
If EqD(L, 3) > 0 Then I = EqD(L, 3)
If Range("M" & I) = "" Then
LetC = "L"
Else: LetC = "M"
End If
If I = 20 Then I1 = Range(LetC & "28").End(xlUp).Row + 1
If I = 36 Then I1 = Range(LetC & "34").End(xlUp).Row + 1
If I = 43 Then I1 = Range(LetC & "51").End(xlUp).Row + 1
If I = 52 Then I1 = Range(LetC & "57").End(xlUp).Row + 1
Range("M" & I1) = EqD(L, 1)
Range("N" & I1) = EqD(L, 2)
Next L
application.screenupdating=true
End Sub
à bientôt