Recherche de dates a cheval sur 2 mois

Liquido13_bl

XLDnaute Nouveau
Bonjour a tous!

J'ai encore besoin de vous .

j'aimerai reporter une plage date + donnée dans un autre grille de planning.

mon petit problème c est que le report des planning sont a cheval sur 2 mois .

du style : du 18.01 au 19.02

la date de debut et de fin de la recherche peu etre variable.
et mon autre problème c'est le 29 février suivant les années.

voir le fichier.
 

Pièces jointes

  • essai de recherche de date a cheval sur 2 mois.xls
    21 KB · Affichages: 46
  • essai de recherche de date a cheval sur 2 mois.xls
    21 KB · Affichages: 53
  • essai de recherche de date a cheval sur 2 mois.xls
    21 KB · Affichages: 59
C

Compte Supprimé 979

Guest
Re : Recherche de dates a cheval sur 2 mois

Ils ont un GROS problème sur PutStuff.com
Aucun des tes liens ne fonctionnent !?

Je t'ai envoyé mon adresse mail en MP (si tu le souhaites)

A+
 
C

Compte Supprimé 979

Guest
Re : Recherche de dates a cheval sur 2 mois

Salut Liquido,

J'ai bien eu ton fichier sur mon mail, no soucy ;)

Par contre j'avais bien raison d'avoir peur de ta demande,
il faut créer le planning de tes onglets de mois à 28 jours :(

Pas simple, il faut que je regarde ça à tête reposée.

Je te tiens au courant ... Mais bon, d'autre peuvent s'y intéresser aussi ..
Je l'espère :p
 
C

Compte Supprimé 979

Guest
Re : Recherche de dates a cheval sur 2 mois

Autre chose Liquido,

Je vois que pour créer tes congés, tu fait appel à une ancienne macro que je t'avais donné !

Attention ! Elle ne fonctionne pas dans tous les cas de figure !?
Et notamment pour des congés du 09/07 au 25/07 (par exemple)

A+
 
C

Compte Supprimé 979

Guest
Re : Recherche de dates a cheval sur 2 mois

Salut Liquido,

oui , c'est bien toi qui me l'as donnée....
Oui, bien d'accord, sauf que si tu regardes bien le fil de l'ancienne discussion : https://www.excel-downloads.com/threads/reporter-une-valeur-v-dans-des-planning.73429/

Je t'avais mis un fichier dans lequel la macro modifiée fonctionnait pécable ...

Il faut remplacer dans ton Module 1 toute la Sub CreateConges,
par ce code là :
Code:
Sub CreateConges()
  Dim Cel As Object
  Dim NbLig As Integer, DebLig As Integer, DateDeb, DateFin
  Dim IndPlan(14), MonInd As Integer
  Dim DateEnCours, LeMois As Integer
  Dim LigPers As Integer, NomPers As String, NbPers As Integer
  Dim NomPlan As String
  '
  IndPlan(1) = "Janvier": IndPlan(2) = "Février": IndPlan(3) = "Mars"
  IndPlan(4) = "Avril": IndPlan(5) = "Mai": IndPlan(6) = "Juin"
  IndPlan(7) = "Juillet 1": IndPlan(8) = "Juillet 2"
  IndPlan(9) = "Août": IndPlan(10) = "Septembre": IndPlan(11) = "Octobre"
  IndPlan(12) = "Novembre": IndPlan(13) = "Décembre": IndPlan(14) = "Janvier 2"
  '
  Sheets("Vacances").Activate
  For NbPers = 8 To 106 Step 7
    ActiveSheet.Range("B" & NbPers).Select
    DebLig = Selection.Row: NomPers = Selection.Value
    
    For NbLig = 0 To 5
      DateDeb = ActiveSheet.Range("D" & DebLig + NbLig).Value
      DateEnCours = DateDeb
      DateFin = ActiveSheet.Range("G" & DebLig + NbLig).Value
      ' On sort de la boucle si il manque une date de congé
      If DateDeb = "" Or DateFin = "" Then Exit For
      ' Sinon on fait la mise en forme
      Dim MonAn: MonAn = Sheets("Accueil").Range("D24")
      ' Détermine approximativement sur quel mois commencé
      If DateEnCours - DateSerial(MonAn, 1, 1) >= 28 Then
        MonInd = Int(((DateEnCours - DateSerial(MonAn, 1, 1)) / 28) + 0.5)
      Else
        MonInd = 1
      End If
      ' Commence la boucle pour chaque jour du planning
      Do While DateEnCours < DateFin
        ' Sélectionne le classeur contenant la valeur du mois des congés
        Sheets("Plan " & IndPlan(MonInd)).Activate
        ' Trouve la ligne de la personne en cours
        LigPers = LigFind(ActiveSheet.Name, 4, NomPers)
        If LigPers = 0 Then
          MsgBox "Erreur de recherche pour le nom : " & NomPers
          Exit For
        End If
        ' Vérifie si la date correspond aux congés, si oui inscrit "V"
        For Each Cel In ActiveSheet.Range("E19:AF19")
          If Cel.Value >= DateDeb And Cel.Value <= DateFin Then
            Application.EnableEvents = False
            If Weekday(Cel.Value, vbMonday) > 5 Then
              ActiveSheet.Cells(LigPers, Cel.Column).Value = "X"
            Else
              ActiveSheet.Cells(LigPers, Cel.Column).Value = "V"
            End If
            Application.EnableEvents = True
            ' Met à jour la date en cours de traitement
            DateEnCours = Cel.Value
          End If
        Next
        ' Incrémente d'un jour supplémentaire
        If DateEnCours < DateFin Then
          MonInd = MonInd + 1
        End If
      Loop
      Sheets("Vacances").Activate
    Next NbLig
  Next NbPers
End Sub

Pour ton autre problème, il faut voir ....

A+
 

Discussions similaires

Réponses
16
Affichages
768
Réponses
3
Affichages
578
Réponses
15
Affichages
2 K

Membres actuellement en ligne

Statistiques des forums

Discussions
315 246
Messages
2 117 750
Membres
113 300
dernier inscrit
faby79