Erreur d'execution '13' Incompatibilité de type
Bonjour à tous!
J'ai un fichier qui convertit des dates d'un planning de production en dates de période comptable.
Le principe est qu'une date au planning de prod par exemple le 28/01/2021 sera en réalité comptabilisée sur la période comptable de 02/2021.
Pour pouvoir suivre les quantités produites par période comptable, nous avons recours à une macro de conversion qui vient rechercher dans un onglet appellé "date à prendre" la période comptable concernée.
L'onglet date à prendre se présente de la manière suivante :
| Mois | Début | fin |
| janv-16 | 22/12/2015 | 21/01/2016 |
Le problème est qu' il y a le code suivant dans le VBA qui génère une erreur d'execution '13' incompatibilité de type sur la ligne en orange ci-dessous :
Sub Dates_comptable()
Dim Mois As String
Dim pctCompl As Single
pctCompl = 0
progress pctCompl
'==============================Saisie donnée planning dans tableau macro==========================
nblig = Sheets("New Planning").Range("C" & Rows.Count).End(xlUp).Row
nbcol = Sheets("New Planning").Cells(4, Columns.Count).End(xlToLeft).Column
Dim TabPlanning()
ReDim TabPlanning(1 To nblig, 1 To nbcol)
For i = 1 To nblig
For j = 1 To nbcol
TabPlanning(i, j) = Sheets("New Planning").Cells(i, j)
Next j
Next i
'=================================================================================================
'========Créé un Tableau TabDateMois avec les dates par mois à prendre en compte===================
NbLigDate = Sheets("Date à prendre").Range("A" & Rows.Count).End(xlUp).Row
NbcolDate = Sheets("Date à prendre").Cells(1, Columns.Count).End(xlToLeft).Column
Dim TabDateMois
ReDim TabDateMois(1 To NbLigDate, 1 To NbcolDate)
For i = 1 To NbLigDate
For j = 1 To NbcolDate
TabDateMois(i, j) = Sheets("Date à prendre").Cells(i, j)
Next j
Next i
'======================================================================================================
'==========Créer un tableau TabFinal en mettant le mois "comptable" correspond ========================
Dim TabFinal
ReDim TabFinal(1 To nblig, 1 To nbcol)
For i = 5 To nblig
For j = 4 To nbcol
For k = 2 To NbLigDate
Mois = Format(TabPlanning(i, j), "mmmm")
If Mois = "" Then GoTo suite
A = DateSerial(Year(TabPlanning(i, j)), Month(TabPlanning(i, j)), 1)
If DateSerial(Year(TabPlanning(i, j)), Month(TabPlanning(i, j)), 1) = TabDateMois(k, 1) Then
DateTrouve = "OUI"
LigMois = k
k = NbLigDate
For m = LigMois - 1 To LigMois + 1
If TabPlanning(i, j) >= TabDateMois(m, 2) And TabPlanning(i, j) <= TabDateMois(m, 3) Then
TabFinal(i, j) = TabDateMois(m, 1)
m = LigMois + 1
End If
Next m
End If
Next k
If DateTrouve = "NON" Then
MsgBox "Manque des mois dont au moins le mois de " & Mois & "-" & Year(TabPlanning(i, j)) & " dans onglet Date à prendre"
Exit Sub
End If
suite:
Next j
Next i
'===================================================================================================
'================remplissage de l'onglet Planning CI================================================
boucle = nblig * nbcol
For i = 5 To nblig
For j = 4 To nbcol
Sheets("Planning CI").Cells(i, j) = TabFinal(i, j)
Next j
pctCompl = ((i * j) / boucle) * 100
progress pctCompl
Next i
Sheets("Planning CI").Activate
Sheets("Planning CI").Range(Cells(5, 4), Cells(nblig, nbcol)).Select
Selection.NumberFormat = "mm/yyyy;@"
'======================================================================================================
Sheets("Planning CI").Range("A1").Select
End Sub
Merci beaucoup pour votre aide!
Tom
bonjour,
tes dates sont-elles bien au format date ? Merci de mettre un classeur représentatif de ton problème.
Hello,
Effectivement c'était simplement un problème de format !
Merci pour l'aide!