Pb requete INSERT INTO champ date vide

Bonjour,

Je travaille sur une macro pour enregistrer les données d'un tableau excel dans access.

Je suis passé par une requête SQL INSERT INTO pour créer mes enregistrements avec les différents champs (Date, Type, Book, ID...).

Le problème est que la première ligne de la colonne Date est vide et lorsque j'active ma macro j'ai un message d'erreur par rapport à la syntaxe dans la date dans l'expression "#".

J'ai testé et si j'ajoute une date au hasard sur la première ligne de la colonne Date je n'ai plus de problème. De plus le problème ne vien pas du fait qu'il peut y avoir des lignes vides pour la colonne Date mais que la première ligne est vide.

Voici le code (à noter qu'il y a une boucle car j'éxécute ma requête pour toutes les lignes du tableau de données) :

    For i = 1 To derniere_ligne - 1
        strInsert = "INSERT INTO TableTest ([Date], [Type], [Book], [ID]) VALUES (#" & Range("A1").Offset(i, 0).Value & "#, '" & Range("A1").Offset(i, 1).Value & "', '" & Range("A1").Offset(i, 2).Value & "', '" & Range("A1").Offset(i, 3).Value & "')"
        Cn.Execute strInsert
    Next i

Auriez-vous une idée pour adapter la requête lorsque la première ligne date est vide ?

Merci

bonjour,

essaie ainsi

For i = 1 To derniere_ligne - 1
    If Range("A1").Offset(i, 0).Value <> "" Then
        strInsert = "INSERT INTO TableTest ([Date], [Type], [Book], [ID]) VALUES (#" & Range("A1").Offset(i, 0).Value & "#, '" & Range("A1").Offset(i, 1).Value & "', '" & Range("A1").Offset(i, 2).Value & "', '" & Range("A1").Offset(i, 3).Value & "')"
        Cn.Execute strInsert
    End If
Next i

Bonjour,

Merci pour ta réponse.

J'ai testé ton idée mais le problème c'est que avec la condition cela n'enregistre pas toutes les lignes. La première ligne où la date est vide n'est pas enregistrée or même si le champ date est vide j'ai besoin d'enregistrer dans access toutes les données, même si un des enregistrements sur access ne contient pas de date.

re-bonjour,

essaie alors ceci

For i = 1 To derniere_ligne - 1
    If Range("A1").Offset(i, 0).Value <> "" Then
        strInsert = "INSERT INTO TableTest ([Date], [Type], [Book], [ID]) VALUES (#" & Range("A1").Offset(i, 0).Value & "#, '" & Range("A1").Offset(i, 1).Value & "', '" & Range("A1").Offset(i, 2).Value & "', '" & Range("A1").Offset(i, 3).Value & "')"
    Else
        strInsert = "INSERT INTO TableTest ([Type], [Book], [ID]) VALUES ( '" & Range("A1").Offset(i, 1).Value & "', '" & Range("A1").Offset(i, 2).Value & "', '" & Range("A1").Offset(i, 3).Value & "')"
    End If
    Cn.Execute strInsert
End If
Next i

Bonjour

Vérifier aussi que le champ date n'est pas obligatoire dans la table ACCESS...

Bonjour,

Le champ date n'est pas obligatoire dans la table Access, j'ai bien Null interdit = Non.

Sinon j'ai essayé une chose pour contourner le problème, j'ai mis Date avec comme type de données Texte. Cela semble fonctionner.

Rechercher des sujets similaires à "requete insert into champ date vide"