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) :
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.
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
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)
Je ne comprends pas mon erreur. Pouvez-vous éclairer ma lanterne ? Merci par avance.
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 '
Cdlt.
Jérôme.
Partager