VBA, boucles & erreur incompatibilité de type

amdbg Messages postés 20 Statut Membre -  
amdbg Messages postés 20 Statut Membre -
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. amdbg Messages postés 20 Statut Membre
     
    S'il vous plaît!!
    0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  3. amdbg Messages postés 20 Statut Membre
     
    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