VBA, boucles & erreur incompatibilité de type
amdbg
Messages postés
20
Statut
Membre
-
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?!
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?!
A voir également:
- VBA, boucles & erreur incompatibilité de type
- Iptv erreur de lecture - Forum TV & Vidéo
- Type de ram - Guide
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
- Erreur t32 ✓ - Forum Livebox
- Comment changer le type de fichier - Guide
3 réponses
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
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
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
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