Recherche de date (VBA)

Bonjour forum.

J'ai un fichier de planning qui fonctionne plutôt pas mal... mais:

Un problème réside dans le code de l'USF2.

Voici le fichier:

108plgmgr.xlsm (72.71 Ko)
108plgmgr.xlsm (72.71 Ko)

Dans la feuille Bdd, plage M6:P13, un double clique déclenche un objet Calendar pour saisir des dates non plannifiables.

Grâce à Banzai64, j'ai pu obtenir un code pour trouver la correspondance entre la personne définie et les dates pour afficher l'indisponibilité dans la feuille Plg_mgr.

Résumé: Dans la feuille Bdd, je saisi une date d'indispo (CP par exemple) pour une personne et toute la période est marquée "CP" dans la feuille Plg_mgr.

Le problème, c'est que j'ai l'impression que le code fait comme s'il faisait la recherche sur le jour sans prendre en compte le mois indiqué.

Y a-t-il possibilité de modifier cela?

Le fichier joint est prévu pour le mois de mai 2011. Si je saisis une indisponibilité du 10/03/2011 au 15/03/2011, les dates sont affichées quand même alors que ça ne devrait pas.

J'ai donc besoin d'améliorer le code bien que celui fourni soit très bien pour moi parce que je sais comment il fonctionne, mais d'autres doivent l'utiliser.

Voici le code en question:

Private Sub CommandButton1_Click()
Dim Cel As Range 'Recherchde la cellule où apparait le nom du mgr
Dim Lg As Long
Dim Cl As Integer
Dim J As Integer
Dim rs As String
rs = ListBox1.Value
Select Case rs
    Case Is = "Congés payés"
        rs = "CP."
   Case Is = "Arrêt maladie"
        rs = "'AM."
    Case Is = "Indisponibilité"
        rs = "ind"
    Case Is = "Mise à pied"
        rs = "'MP."
    Case Is = "Examen"
        rs = "'Ex."
End Select

    With Sheets("Plg_mgr")
        'On recherche le nom du mgr de la feuille bdd pour reporter sur la ligne du mgr dans la feuille Plg_mgr
      Set Cel = .Range("A8:A17").Find(what:=Cells(ActiveCell.Row, "L"), LookIn:=xlValues, lookat:=xlWhole)
      If Not Cel Is Nothing Then
        Lg = Cel.Row
        ' On recherche la date correspondant à la cellule du début de l'indispo
        Set Cel = .Range("C6:AR6").Find(what:=Day(ActiveCell.Offset(0, -1)), LookIn:=xlValues, lookat:=xlWhole)
        If Not Cel Is Nothing Then
          Cl = Cel.Column
          For J = 0 To ActiveCell - ActiveCell.Offset(0, -1)
            .Cells(Lg, Cl + J) = rs
            .Cells(Lg, Cl + J).Interior.ColorIndex = 35
          Next J
        Else
          MsgBox "Pas trouvé la date du 1er jour de congé"
        End If
      Else
        MsgBox "Nom inconnu"
      End If
    End With
  Unload Me
End Sub

En espérant avoir été clair.. Pas sur.

111plgmgr.zip (60.83 Ko)

Bonjour

Essayes

Private Sub CommandButton1_Click()
Dim Cel As Range 'Recherchde la cellule où apparait le nom du mgr
Dim Lg As Long
Dim Cl As Integer
Dim J As Integer
Dim rs As String

  If (Month("1 " & Range("F1")) = Month(ActiveCell.Offset(0, -1))) And _
    (Year(ActiveCell.Offset(0, -1)) = Range("G1")) Then
    rs = ListBox1.Value
    Select Case rs
       Case Is = "Congés payés"
           rs = "CP."
      Case Is = "Arrêt maladie"
           rs = "'AM."
       Case Is = "Indisponibilité"
           rs = "ind"
       Case Is = "Mise à pied"
           rs = "'MP."
       Case Is = "Examen"
           rs = "'Ex."
    End Select

       With Sheets("Plg_mgr")
           'On recherche le nom du mgr de la feuille bdd pour reporter sur la ligne du mgr dans la feuille Plg_mgr
         Set Cel = .Range("A8:A17").Find(what:=Cells(ActiveCell.Row, "L"), LookIn:=xlValues, lookat:=xlWhole)
         If Not Cel Is Nothing Then
           Lg = Cel.Row
           ' On recherche la date correspondant à la cellule du début de l'indispo
           Set Cel = .Range("C6:AR6").Find(what:=Day(ActiveCell.Offset(0, -1)), LookIn:=xlValues, lookat:=xlWhole)
           If Not Cel Is Nothing Then
             Cl = Cel.Column
             For J = 0 To ActiveCell - ActiveCell.Offset(0, -1)
               .Cells(Lg, Cl + J) = rs
               .Cells(Lg, Cl + J).Interior.ColorIndex = 35
             Next J
           Else
             MsgBox "Pas trouvé la date du 1er jour de congé"
           End If
         Else
           MsgBox "Nom inconnu"
         End If
       End With
    Else
      MsgBox "Le mois ou l'année ne correspond pas"
    End If
  Unload Me
End Sub

Bonne journée

Bonjour Banzai64

Merci beaucoup pour cette proposition. Ca semble mieux fonctionner.

A une prochaine

Rechercher des sujets similaires à "recherche date vba"