Bonjour,

Un problème de déclaration de variable plante (semble t-il) ma procédure.

Voici un extrait des déclarations ci-dessous (je n'ai indiqué que les variables concernées par le pb) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Sub Recup_donnees_pour_TDB()
 
'Déclaration des variables
'
Dim PO_Date As Variant
Dim check_PO_Date As String
Petite précision : La variable "PO_Date" est une date. Elle peut cependant être vide. Au départ j'avais déclaré cette variable comme une date mais du fait de plantages j'ai dû la transformer en Variant.

Dans mon cas du moment, PO_Date est vide (cellule vide).

Lorsque j'exécute la macro, à un moment donné, je passe par ce qui est indiqué juste en dessous :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
'
'------PO_Date------
'
check_PO_Date = IsDate(Range("C9").Value)
If check_PO_Date = "Vrai" Or check_PO_Date = "True" Then
PO_Date = Range("C9").Value
MsgBox ("check PO Date VRAI")
Else
MsgBox ("check PO Date FAUX")
PO_Date = ""
MsgBox ("PO_Date = ") & PO_Date
End If
'

En mode débugage pas à pas j'obtiens :
check PO Date Faux

Je clique sur "OK" et j'obtiens :
PO_Date = (vide)

Je clique à nouveau sur "OK" et j'obtiens :

Run time error 13
Type mismatch.

Après avoir cliqué sur "debugage" le programme m'affiche les lignes suivantes (ligne avec le "if" en fluo)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
'
'------PO_Date------La formulation ci-dessous permet d'éviter l'inversion jour / mois
'
If IsDate(PO_Date) = "Vrai" Or IsDate(PO_Date) = "True" Then
Range("E" & y).NumberFormat = ""
Range("E" & y).Value = CDate(PO_Date)
Else
Range("E" & y).Value = PO_Date
End If
'
Je ne comprends pas mon erreur. Pouvez-vous éclairer ma lanterne ? Merci par avance.

Cdlt.
Jérôme.