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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| Sub chef_de_salle()
Dim n°col As Integer ' N° de la colonne établie en fonction de la date et de la periode
Dim zone_recherche As Range 'Plage de cellule (incluant "n°col" )ou je vais chercher "J" ou "N"
Dim Cellule_cible As Range ' Cellule contenant "J" ou "N"
Dim x As Integer 'pour cibler la colonne 1
Dim firstAddress As String, ligne As Long '### ajout des variables
'récupération de la donnée saisie en "G6"
periode = Worksheets("Feuille_garde").Range("G6").Value
'Si periode contient Jour ou Jour Nuit....
If periode = "Jour" Or periode = "Jour Nuit" Then
n°col = Day([Date_planning]) * 2
MsgBox "le n° est : " & n°col
x = n°col - 1
'....alors on recherche J ou JN dans la plage de cellule "Zone_recherche....
With Worksheets("Planning")
'initialisation de "Zone_recherhce" et "Cellule_cible"
Set zone_recherche = .Range(.Cells(3, n°col), .Cells(9, n°col))
Set Cellule_cible = zone_recherche.Find("J", LookIn:=xlValues, lookat:=xlWhole)
If Not Cellule_cible Is Nothing Then
firstAddress = Cellule_cible.Address '### ajout : 1er adresse trouvé
ligne = 8 ' ### écriture à partir de la ligne 8
Do '### Ajout : on lance la boucle
'... et on donne la valeur contenenue en colonne A sur la même ligne que J ou JN...
'### Modif : modification de l'écriture de range("C8") en cells(ligne, 3)
Worksheets("Feuille_garde").Cells(ligne, 3) = .Range(Cellule_cible.Address).Offset(0, columnoffset:=-x).Value
'### Ajout : lance la recherche du suivant
Set Cellule_cible = zone_recherche.FindNext(Cellule_cible)
'### incrément de la ligne
ligne = ligne + 1
'### Ajout : boucle tant qu'il y a un résultat et qu'on est pas revenu au premier
Loop While Not Cellule_cible Is Nothing And Cellule_cible.Address <> firstAddress
Else
'....msgbox si on ne trouve pas j ou JN dans cette plage de cellule
MsgBox "la recherche est infructueuse"
End If
End With
'...même chose si periode = Nuit
ElseIf periode = "Nuit" Then
n°col = Day([Date_planning]) * 2 + 1
MsgBox "le n° est : " & n°col
x = n°col - 1
With Worksheets("Planning")
Set zone_recherche = .Range(.Cells(3, n°col), .Cells(9, n°col))
'...on recherche "N" dans la plage de cellule "Zone_recherche"...
Set Cellule_cible = zone_recherche.Find("N", LookIn:=xlValues, lookat:=xlWhole)
If Not Cellule_cible Is Nothing Then
firstAddress = Cellule_cible.Address '### ajout : 1er adresse trouvé
ligne = 8 ' ### écriture à partir de la ligne 8
Do '### Ajout : on lance la boucle
'.... et on donne la valeur contenenue en colonne A sur la même ligne que "N"
'### Modif : modification de l'écriture de range("C8") en cells(ligne, 3)
Worksheets("Feuille_garde").Range("c8") = .Range(Cellule_cible.Address).Offset(0, columnoffset:=-x).Value
'### Ajout : lance la recherche du suivant
Set Cellule_cible = zone_recherche.FindNext(Cellule_cible)
'### incrément de la ligne
ligne = ligne + 1
'### Ajout : boucle tant qu'il y a un résultat et qu'on est pas revenu au premier
Loop While Not Cellule_cible Is Nothing And Cellule_cible.Address <> firstAddress
Else
MsgBox "la recherche est infructueuse"
End If
End With
Else
'si la periode est differente de "Jour", "Jour Nuit" ou "Nuit"
MsgBox "Le type de periode n'est pas valide "
End If
'pour ré-initialiser les variables...
Set zone_recherche = Nothing: Set Cellule_cible = Nothing
End Sub |
Partager