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
A voir également:
- Erreur d’exécution 13
- Fifa 13 - Télécharger - Jeux vidéo
- Test redmi note 13 5g - Accueil - Téléphones
- Erreur d'exécution 13 incompatibilité de type ✓ - Forum VB / VBA
- Erreur 0x80070643 - Accueil - Windows
- Iptv erreur de lecture - Forum TV & Vidéo
2 réponses
Bonjour Walid :)
essai avec :
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
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
Bonjour Walid
tu te casses bien la t^te ! :o)
petite maquette du principe sur une ligne (2) sur le problème qui te tracasse
Edate est la fonction excel anglophone de mois.decaler
d'ailleurs, tu pourrais obtenir tout ça sans passer par VBa
Michel
tu te casses bien la t^te ! :o)
petite maquette du principe sur une ligne (2) sur le problème qui te tracasse
Option 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
Merci pour ta réponse rapide
je viens d'essayer de faire ce que tu m'as proposé, mais malheureusement ça marche pas, j'ai toujours la même erreur
cdt,
Je n'avais pas tout lu (shame on me), tu ne peux pas pas ajouter deux dates et ensuite y faire des opérations avec des entiers, du coup coup avec ta réponse je devrais pouvoir te trouver un truc ^^
donc moi je suis au service maintenance et je veux mettre a jour la date dans laquelle je dois lancer la maintenance: alors je fais la date de la derniere maintenace cells (i, 7) + la periodicité cells (i, 4) (en mois)
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)?
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