Pb sur incompatibilité de type

Bonjour

J'essaie d'entrer des congés dans un palnning mais mon code plante

Pourriez-vous m'aider svp ?

Voici la situation :

J'ai une feuille conges avec 2 tableaux :

  • tableau a3:g33 : liste des congés des salariés (nom, type, datedebut, date fin, nb de jours avec formule excel, nb de jours réel renseigné avec le code ci-dessous)
  • tableau i2:n10 : recapitulati du nb de congés par type de congés, des dimanches tavaillés et des jours fériés travaillés)

J'ai une autre feuille 2020 ou sont corrigés les horaires annuels en tenant compte des congés des salariés.

Cette feuille 2020 est rempli automatiquement en tenant compte des horaires de la feuille "Trame de base" faite sur 4 semaines.

Le code de la procédure Sub trame1() recopie les valeurs de la trame de base sur la feuille 2020 en vérifiant que les valeurs de la colonne A de 2020 correspondent aux valeurs de la colonne D de la feuille Trame de Base (cela fonctionne trés bien).

Mon problème est le suivant :

Quand je lance la procédure Conges()

la procédure fonctionne bien pour la première ligne de la feuille Conges SOIT pour Emilie (ces conges apparaissent bien dans la feuille 2020 et dans le recapitulatif du tableau de droite de la feuille Conges)

Mais pour la seconde SOIT Lucie j'ai ce message d'erreur :

Erreur 13 : Incompatibilité de type sur cette ligne sur la valeur DateDeb mais sur Datefin, c'est étrange ???

If cell.Value >= CDate(Ddeb) And cell.Value <= CDate(Dfin) Then 

Voici le code :

Sub conges()

Derlig = 0 'dernière ligne du tableau de la feuille Conges initialisé à 0
Worksheets("Conges").Activate 'active la feuille Conges
Worksheets("Conges").Range("j3:n10").Value = "" 'Efface les valeurs du tableau à droite de la feuille Conges
    Derlig = Worksheets("Conges").Range("A" & Rows.Count).End(xlUp).Row 'dernière ligne du tableau a3:f5 de la feuille Conges
        For i = 4 To Derlig ' Parcours le tableau a3:f... de la feuille Conges de la ligne 4 à la dernière ligne
            totj = 0 ' total de jours de conges sans compter les we initialisé à 0
            totdi = 0 ' total des dimanches travaillés initailisés à 0
            nom = Cells(i, 1) ' nom du salarié
            typ = Cells(i, 2) ' type de congé
            Ddeb = Cells(i, 3) ' Date de début
            Dfin = Cells(i, 4) ' Date de fin

            Select Case typ
                Case "ca" ' si congé est un ca (congé annuel)
                    p1 = 10 'n° de colonne de la feuille Congés
                    c1 = RGB(212, 115, 212) ' couleur de fond de la cellule de la feuille 2020
                Case "caa" ' si congé est un ca (congé annuel ancienneté)
                    p1 = 11
                    c1 = RGB(219, 0, 115)
                Case "cs" ' si congé est un ca (congé supp)
                    p1 = 12
                    c1 = RGB(128, 0, 128)
                Case Else
            End Select

            Select Case nom 'selon le nom
                Case "Emilie"
                    l1 = "i" ' colonne de début de la plage de la feuille 2020
                    l2 = "l" ' colonne de fin de la plage de la feuille 2020
                    sal1 = 3 ' n° de ligne de la feuille Conges pour le tableau i2:n10
                Case "Lucie"
                    l1 = "o"
                    l2 = "r"
                    sal1 = 4
                Case "Karen"
                Case Else
                    l1 = "u"
                    l2 = "x"
            End Select

            Worksheets("2020").Activate 'Active la feuille 2020
            Set Plage2 = ThisWorkbook.Worksheets("2020").Range("d3:d373") 'selectionne la plage des dates de la feuille 2020 de la colonne D
            For Each cell In Plage2 'boucle sur la plage sékectionnée
                h = cell.Row ' numéro de ligne de la cellule en cours
                If cell.Value >= CDate(Ddeb) And cell.Value <= CDate(Dfin) Then ' si la date de la cellule en cours est comprise entre la date de début et la date de fin
                    If Format(cell.Value, "w", 2) >= 6 Then 'si le jour est un samedi ou un dimanche
                         Worksheets("2020").Range(l1 & h & ":" & l2 & h).Value = 1 'si oui alors valeurs de la plage égale à 1
                    Else
                         totj = totj + 1 'sinon incrémlénte le nb de jours de congés
                         Worksheets("2020").Range(l1 & h & ":" & l2 & h).Value = "" 'efface les valeurs de la plage
                         Worksheets("2020").Range(l1 & h & ":" & l2 & h).Interior.Color = c1 'met la couleur de fond correspondant au type de congé
                    End If
                End If

                If Format(cell.Value, "w", 2) > 6 Then 'si la date est un dimanche
                            If cell.Offset(0, 9).Value > 0 Then ' et que la cellule du total d'heure de la journée est supérieure à 0
                                totdi = totdi + 1 ' alors incrément le nb de dimanche travaillés
                            End If
                End If

            Next

                Worksheets("Conges").Cells(i, 6) = totj 'note le total de jours de conges sans compter les weekend dans la feuille Conges dans la colonne 6 à côté du nb de jours sur la ligne du salarié coorespondant
                Worksheets("Conges").Cells(sal1, p1) = Worksheets("Conges").Cells(sal1, p1) + totj 'idem dans le tableau de droite
                Worksheets("Conges").Cells(sal1, 13) = Worksheets("Conges").Cells(sal1, 13) + totdi ' recopie le nb de dimanches travaillés dans le tableau de droite de la feuille Conges sur la ligne du salarié correspondant

        Next i ' va a la ligne suivante pour le congé suivant du prochain salarié

End Sub

Je vous remercie beaucoup de votre aide

Cordailement

38testsal.xlsm (963.26 Ko)

Bonsoir,

Le code suivant n'est pas bien placé :

Worksheets("Conges").Activate 'active la feuille Conges

Il doit être à la première ligne du boucle comme ceci :

For i = 4 To Derlig ' Parcours le tableau a3:f... de la feuille Conges de la ligne 4 à la dernière ligne
      Worksheets("Conges").Activate 'active la feuille Conges

Car, à l'intérieur du boucle, tu passes à l'onglet 2020, d'où le problème.

merci beaucoup,

je trouve aussi étrange d'avoir le même nb de dimanches travaillés pour les 2 salariés (M4 et M5 de la feuille Congés)

Avez-vous une idée svp?

Merci encore

Cordialement

Re,

Non. Je n'ai aucune idée.

Pardon

J'ai trouvé

J'avais utilisé

cell.Offset(0, 9).Value > 0

mais j'ai remplacé 9 par une variable pour différencier les salariés

Je vous remercie beaucoup de votre aide précieuse

Bonne soirée

Rechercher des sujets similaires à "incompatibilite type"