VBA, boucles & erreur incompatibilité de type

Bonjour,

Je cherche a créer un programme sur VBA qui pourra traiter une multitude de données.
Dans la colonne E à partir de la ligne 16 j'ai des dates.
Dans la colonne K à partir de la ligne 16 j'ai quelques dates qui figurent toutes parmis les dates de E.
A une date de K est annexé un chiffre dans la colonne L sur la même ligne.

Si la date en E# correspond a une des dates en K j'aimerais mettre en H#, le chiffre de la colonne L qui correspond à la date en K.

J'ai écris ce programme

Sub Vep()

Dim n As Long
Dim m As Long
n = Application.CountA(Range("K16", Range("K16").End(xlDown)))
m = Application.CountA(Range("E16", Range("E16").End(xlDown)))
'Je compte le nombre de dates en E:m et en K:n

Dim j As Long
Dim i As Long
Dim s As Long
s = 0

For j = 16 To m + 16
For i = 16 To n + 16
'Je fais une boucle

Dim k As Date
Dim l As Date
k = Cells(i, 12).Value
l = Cells(j, 5).Value
' c'est sur ce l qu'il y a l'erreur 13 incompatibilité de type

If k = l Then s = s + Cells(i, 13)

Next i
Next j

End Sub

Je ne suis pas sur de ma définition de n et m.
Mon programme ne fonctionne pas il semble y avoir une erreur lorsque je définis l (et non pour k).

De plus je souhaite m'assurer que le programme test tous les i avant de passer au j suivant.

Comment améliorer mon programme?!

3 réponses

  1. bonjour

    1. as tu fait un débogage de ta procedure et vérifié les valeurs de m et de n
    2. qu'y a til dans Cells(j, 5) quand ça plante?

    3. peux tu envoyer ton fichier au format excel 2003 (sans données confidentielles) sur cjoint.com ou cijoint.fr et coller le lien dans ton prochain post

    bonne suite
    0
    1. Bonjour, désolé je ne pouvais pas envoyer le fichier. J'ai finalement réussi à bien coder ce fichier. Il y avait une erreur lors de la définition du s et d'autres, si il y a des intéressés la voici:

      Sub vep()

      Sheets("calcul").Select
      Dim nk As Long
      Dim ne As Long
      nk = Application.CountA(Range("K16", Range("K16").End(xlDown)))
      ne = Application.CountA(Range("E16", Range("E16").End(xlDown)))

      Dim ie As Long
      Dim ik As Long
      ie = 16

      For ik = 16 To nk + 16

      Dim k As Date
      Dim e As Date
      k = Cells(ik, 11).Value
      e = Cells(ie, 5).Value

      Do While e < k And ie <= ne + 16
      k = Cells(ik, 11).Value
      e = Cells(ie, 5).Value

      l = Cells(ie, 12)
      h = Cells(ie, 8)

      If k = e Then h = l Else h = 0

      Cells(ie, 8) = h

      ie = ie + 1
      Loop

      Next ik

      End Sub
      0