Petit problème de macro dans un planning

biquet13

XLDnaute Nouveau
Coucou le forum...

voila.. je me permet de vous soliciter encore une fois car j'ai un petit soucis avec les macros...

en fait ce que la macro doit faire..

dans la feuille "tournée" lorsqu'ont a choisit la date dans la cellule C3
en cliquant sur le bouton tournée...:

cela doit allé récupérer dans la feuille "Mois" (le mois de la date donc) tout les soignant travaillant ce jour ci (avec le nombre d'heure) pour le matin et l'apm
et les placer dans la feuille tournée...
(matin et apm)

puis,
faire la liste des patients ayant besoin de soins ce jour la...
et les mettre dans les colonnes F et G de la feuille Param (2 listes sont créées)

une fois ceci réalisé..

dans la feuille Tournée dans les cellules en dessous des noms des soignants ont doit pouvoir avec une liste de validation (avec les patients du matin et en bas ce du soir)

ce qui fonctionne :

ben c tout ce ci..
ca focntionne a moitié..

pour les patients j'ai que les nombres d'heure des patients du matin qui s'affiche dans la feuille "tournée" et encore pas tous...

et dans les listes de validation, si je place un patients dans une cellule et que je veux l'effacer, il ne réapparait pas dans la liste..;

voili voilou..

j'espère que vous pourrez une fois de plus venir à mon secour..

amicalement...
byzz
 

Pièces jointes

  • tournée.zip
    32.9 KB · Affichages: 46
  • tournée.zip
    32.9 KB · Affichages: 45
  • tournée.zip
    32.9 KB · Affichages: 48

Bebere

XLDnaute Barbatruc
Re : Petit problème de macro dans un planning

bonjour Biquet
allez en voilà une d'idée
une bonne habitude à prendre,déclarer les variables
à bientôt

Sub Manuel()
Dim MaDate As Date, Jour As Variant, Jr As Byte, Lm As Integer, Ls As Integer
Dim Cell As Range
'Détermination des soignants disponibles / jour considéré
Application.ScreenUpdating = False
With Sheets("Tournée")
.Range("B8:F49", "B60:F101").ClearContents
MaDate = .Range("ChoixJr")
End With
Jour = Day(MaDate)
Lm = 10: Ls = 62
With Sheets(Format(MaDate, "mmmm")) '.Activate
Jr = .Cells(12, (Jour * 2) + 1).Column
For Each Cell In .Range(.Cells(14, Jr), .Cells(.Cells(65536, 1).End(xlUp)(2).Row, Jr))
If Cell > 0 Then
Sheets("Tournée").Cells(Lm, "B") = .Cells(Cell.Row, 1).Value
Sheets("Tournée").Cells(Lm, "C") = Cell.Value
Lm = Lm + 1
End If
If Cell.Offset(0, 1) > 0 Then
Sheets("Tournée").Cells(Ls, "B") = .Cells(Cell.Row, 1).Value
Sheets("Tournée").Cells(Ls, "C") = Cell.Offset(0, 1).Value
Ls = Ls + 1
End If
Next Cell



End With

'Elaboration des 2 listes des patients dans la feuille liste
Nomjr = Application.Weekday(MaDate, 2)
Sheets("Param").Range("F:G").ClearContents
Sheets("Base_Patients").Activate
Set matin = Cells(6, 2 + ((Nomjr * 2) - 1)): Set Soir = matin.Offset(0, 1)
'filtre matin
matin.Select
Selection.AutoFilter Field:=ActiveCell.Column, Criteria1:="X"
Range(Cells(65536, 1).End(xlUp), Cells(3, 1)).Copy Destination:=Sheets("Param").Range("F1")
matin.AutoFilter
'filtre soir
Soir.Select
Selection.AutoFilter Field:=ActiveCell.Column, Criteria1:="X"
Range(Cells(65536, 1).End(xlUp), Cells(3, 1)).Copy Destination:=Sheets("Param").Range("G1")
Soir.AutoFilter
Sheets("Tournée").Activate
Range("F1") = 1
Application.ScreenUpdating = True
MsgBox "FINI"

End Sub
 

biquet13

XLDnaute Nouveau
Re : Petit problème de macro dans un planning

bonsoir le forum.. bebere..

merci pour ta réponse mais en fait ca ne se remplit pas comme je souhaitais que ca se fasse..
les noms des soignants devraient apparaitres dans les cellules B8:F8,B22:F22,B36:F36 (pour le matin)
et B60:F60,B74:F74,B86:F86 (pour le soir)
et les heure corresponds juste sur al ligne du dessous..

je vais essayer comme tu as dit en déclarant les variables correctement (mais ca n'a pas l'air de donner grand chose : enfin quand c'est moi qui le fait..lol)

sinon aurais tu une idée pour pourvoir faire revenir le nom du patient dans les liste F:G de la feuille "Param" si j'enleve son nom dans la feuille Tournée?

merci de votre aide..

cordialement
++
 

biquet13

XLDnaute Nouveau
Re : Petit problème de macro dans un planning

petite rectification..
je viens de remettre correctement ce que tu m'avais dit en chageant quelques lignes

Dim MaDate As Date, Jour As Variant, Jr As Byte, Lm As Integer, Ls As Integer
Dim Cell As Range
'Détermination des soignants disponibles / jour considéré
Application.ScreenUpdating = False
With Sheets("Tournée")
.Range("B8:F49", "B60:F101").ClearContents
MaDate = .Range("ChoixJr")
End With
Jour = Day(MaDate)
vm = 9: hm = 2
vs = 61: hs = 2
With Sheets(Format(MaDate, "mmmm")) '.Activate
Jr = .Cells(12, (Jour * 2) + 1).Column
For Each Cell In .Range(.Cells(14, Jr), .Cells(.Cells(65536, 1).End(xlUp)(2).Row, Jr))
If Cell > 0 Then
Sheets("Tournée").Cells(vm, hm) = Cell.Value
Sheets("Tournée").Cells(vm - 1, hm) = .Cells(Cell.Row, 1).Value
hm = hm + 1
If hm = 7 Then hm = 2: vm = vm + 14
End If
If Cell.Offset(0, 1) > 0 Then
Sheets("Tournée").Cells(vs, hs) = Cell.Offset(0, 1).Value
Sheets("Tournée").Cells(vs - 1, hs) = .Cells(Cell.Row, 1).Value
hs = hs + 1
If hs = 7 Then hs = 2: vs = vs + 14

End If
Next Cell

cela fonctionne bien pour le remplissage des soignants et les heures dans la feuille tournée..
merci..

reste plus qu'a trouver le moyen de remplir les cellules de validations en dessous..
c'est à dire pouvoir choisir le patients que je veux placer pour al tournée..
s'il est placé il disparait de la liste
mais si je l'enlève de la feuille tournée, il revient dans la liste...
(pour pouvoir le placer ailleur par exemple)

voili voilou..
mici..

ca avance..

++
 

Discussions similaires

Réponses
11
Affichages
350

Statistiques des forums

Discussions
313 344
Messages
2 097 337
Membres
106 916
dernier inscrit
Soltani mohamed