VBA, boucles & erreur incompatibilité de type

amdbg Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -  
amdbg Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -
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

amdbg Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
S'il vous plaît!!
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
amdbg Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
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