Erreur d’exécution 13
Résolu
Walid
-
HugoHerbomez Messages postés 59 Statut Membre -
HugoHerbomez Messages postés 59 Statut Membre -
Bonjour,
Je suis débutant en VBA, j'ai le code suivant :
For i = 7 To k
If Worksheets(1).Cells(i, 4) >= 1 Then
If Worksheets(1).Cells(i, 7) <> "" Then
If CDate(Worksheets(1).Cells(i, 7)) < CDate(dat_max) Then
n = 0
Do
n = n + 1
D = (Worksheets(1).Cells(i, 7) + Worksheets(1).Cells(i, 4) * n * 365.25 / 12)
num_sem_per = Month(D)
memdate = D
End If
End If
End If
Next i
Par contre j'ai une erreur d'exécution 13 (incompatibilité de type) à la ligne :
D = (Worksheets(1).Cells(i, 7) + Worksheets(1).Cells(i, 4) * n * 365.25 / 12)
Pourriez vous me débloquer svp parce que je ne trouve pas l'erreur ?
NB: les cellules Cells(i, 7) et Cells(i, 4) sont des dates
merci par avance de votre aide
Je suis débutant en VBA, j'ai le code suivant :
For i = 7 To k
If Worksheets(1).Cells(i, 4) >= 1 Then
If Worksheets(1).Cells(i, 7) <> "" Then
If CDate(Worksheets(1).Cells(i, 7)) < CDate(dat_max) Then
n = 0
Do
n = n + 1
D = (Worksheets(1).Cells(i, 7) + Worksheets(1).Cells(i, 4) * n * 365.25 / 12)
num_sem_per = Month(D)
memdate = D
End If
End If
End If
Next i
Par contre j'ai une erreur d'exécution 13 (incompatibilité de type) à la ligne :
D = (Worksheets(1).Cells(i, 7) + Worksheets(1).Cells(i, 4) * n * 365.25 / 12)
Pourriez vous me débloquer svp parce que je ne trouve pas l'erreur ?
NB: les cellules Cells(i, 7) et Cells(i, 4) sont des dates
merci par avance de votre aide
2 réponses
-
Bonjour Walid :)
essai avec :D = (Worksheets(1).Cells(i, 7).Value + Worksheets(1).Cells(i, 4).Value * n * 365.25 / 12)
Il faut préciser que tu veux la valeur et non pas la cellule !
Par contre la prochaine fois encadre ton code avec les balises de code "basics", ce sera plus facile à lire pour nous.
J'attend ta réponse
Bien cordialement,
Hugo-
-
-
-
Déjà ce qui est sûr c'est que tu ne peux pas ajouter deux dates, car les dates n'ont pas de point de départ.
Je ne vois toujours pas pourquoi il y a deux date. La première, si j'ai bien compris, est ton point de départ (ta dernière maintenance), et l'autre correspond à ta périodicité. Mais quelle est cette périodicité? Et pourquoi ajouter une autre périodicité (n * 365.25 / 12)? -
je t'explique par un exemple c'est mieux je pense,
si par exemple ma dernière intervention de maintenance était le 01/01/2017, il faut que je rajoute la périodicité (12 mois dans mon cas) pour la prochaine maintenance, donc la prochaine intervention ce sera le 01/01/2018
ce qui concerne (n * 365.25 / 12) c'est pas important, tu te prend pas la tête, j'ai la même erreur même si je l’enlève
j'espère que ça soit claire pour toi maintenant
merci
-
-
Bonjour Walid
tu te casses bien la t^te ! :o)
petite maquette du principe sur une ligne (2) sur le problème qui te tracasseOption Explicit
'----------------------------------------------------
Sub ddd()
Dim decal As Byte, anc As Date, nouv As Date
With Sheets(1)
decal = .Cells(2, "D") 'intervalle des controles en mois
anc = .Cells(2, "G") 'date du dernier controle
'date prochain controle
nouv = Application.EDate(anc, decal)
MsgBox " mois controle: " & Month(nouv) & " ---- date controle: " & nouv
End With
End Sub
Edate est la fonction excel anglophone de mois.decaler
d'ailleurs, tu pourrais obtenir tout ça sans passer par VBa
Michel