Problème sur une macro

Résolu
Bonjour à tous,

J'ai un message d'erreur sur une macro. Je n'arrive pas à comprendre pourquoi.

Message d'erreur à l'exécution :
Erreur 16 Incompatilibité de type
Ligne concernée :
datedeb = .Cells(li, codeb + 12)

Le code est le suivant :

Option Explicit

Const F1 = "INTO"
Const lideb = 2
Const codeb = 1
Const cofin = 4

Const F2 = "INTO2"

Public Sub insererLig()
Dim li As Long, lifin As Long, datedeb As Date, datefin As Date, ld As Long
Dim d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17, d18, d19, d20, d21, d22, d23, d24, d25, d26, d27, d28, d29
Application.ScreenUpdating = False
With Sheets(F1)
lifin = .Cells(Rows.Count, codeb).End(xlUp).Row
For li = lifin To lideb Step -1
d1 = .Cells(li, codeb)
d2 = .Cells(li, codeb + 1)
d3 = .Cells(li, codeb + 2)
d4 = .Cells(li, codeb + 3)
d5 = .Cells(li, codeb + 4)
d6 = .Cells(li, codeb + 5)
d7 = .Cells(li, codeb + 6)
d8 = .Cells(li, codeb + 7)
d9 = .Cells(li, codeb + 8)
d10 = .Cells(li, codeb + 9)
d11 = .Cells(li, codeb + 10)
d12 = .Cells(li, codeb + 11)
datedeb = .Cells(li, codeb + 12)
d14 = .Cells(li, codeb + 13)
datefin = .Cells(li, codeb + 14)
d16 = .Cells(li, codeb + 15)
d17 = .Cells(li, codeb + 16)
d18 = .Cells(li, codeb + 17)
d19 = .Cells(li, codeb + 18)
d20 = .Cells(li, codeb + 19)
d21 = .Cells(li, codeb + 20)
d22 = .Cells(li, codeb + 21)
d23 = .Cells(li, codeb + 22)
d24 = .Cells(li, codeb + 23)
d25 = .Cells(li, codeb + 24)
d26 = .Cells(li, codeb + 25)
d27 = .Cells(li, codeb + 26)
d28 = .Cells(li, codeb + 27)
d29 = .Cells(li, codeb + 28)

For ld = 1 To datefin - datedeb
Rows(li + ld).Insert
.Cells(li + ld, codeb) = d1
.Cells(li + ld, codeb + 1) = d2
.Cells(li + ld, codeb + 2) = d3
.Cells(li + ld, codeb + 3) = d4
.Cells(li + ld, codeb + 4) = d5
.Cells(li + ld, codeb + 5) = d6
.Cells(li + ld, codeb + 6) = d7
.Cells(li + ld, codeb + 7) = d8
.Cells(li + ld, codeb + 8) = d9
.Cells(li + ld, codeb + 9) = d10
.Cells(li + ld, codeb + 10) = d11
.Cells(li + ld, codeb + 11) = d12
.Cells(li + ld, codeb + 12) = datedeb + ld
.Cells(li + ld, codeb + 13) = d14
.Cells(li + ld, codeb + 14) = datedeb + ld
.Cells(li + ld, codeb + 15) = d16
.Cells(li + ld, codeb + 16) = d17
.Cells(li + ld, codeb + 17) = d18
.Cells(li + ld, codeb + 18) = d19
.Cells(li + ld, codeb + 19) = d20
.Cells(li + ld, codeb + 20) = d21
.Cells(li + ld, codeb + 21) = d22
.Cells(li + ld, codeb + 22) = d23
.Cells(li + ld, codeb + 23) = d24
.Cells(li + ld, codeb + 24) = d25
.Cells(li + ld, codeb + 25) = d26
.Cells(li + ld, codeb + 26) = d27
.Cells(li + ld, codeb + 27) = d28
.Cells(li + ld, codeb + 28) = d29
Next ld
Next li
End With
Application.ScreenUpdating = True
End Sub

Public Sub RAZ()
Sheets(F1).Cells.ClearContents
Sheets(F2).Range("A1:D5").Copy Sheets(F1).Range("A1")
End Sub

Est-ce que vous pouvez m'aider?

Merci beaucoup

floflo18

6 réponses

  1. Bonjour,

    Tu peux commencer par regarder la valeur de la variable "li" ainsi que la valeur de .Cells(li, codeb + 12)

    Sans fichier, difficile d'en dire plus.

    A+
    0
    1. J'aimerais bien mais comment est-ce que je fais pour mettre un fichier Excel en lien?

      Merci d'avance

      floflo18
      0
      1. Merci. Voici le fichier :

        http://cjoint.com/data3/3DDpHLdz083.htm
        0
        1. Si tu regardes la valeur des différentes variables dans l'instruction
          datedeb = .Cells(li, codeb + 12)

          li a pour valeur 3
          codeb a pour valeur 1
          .Cells(li, codeb + 12) correspond à .Cells(3, 13) qui a pour valeur "M"

          L'erreur s'explique, il ne s'agit pas d'une date.

          A+
          0
          1. Merci Beaucoup ça marche :)

            floflo18
            0