Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 VBA erreur code 13 lors de l'ecriture des données

maspi69

XLDnaute Nouveau
Bonjour


Je souhaite enregistrer en CSV les données d'une feuille Excel

Pour cela j'ai ecrit quelques lignes qui sont censées gérer convenablement les dates (sinon je n'obtient pas les dates mais des 42 milles et des brouettes

Le problème, c'est que dans certaines cellules je n'ai pas de date (et c'est normal)

J'obtiens donc une erreur 13. Cela n'est pas forcement anormal

Mais je suis incapable de gérer l'erreur.


Le code SANS GESTION D'ERREUR:


Cells(1, 1).Select
Open "C:\temp\" & nomfichier & ".csv" For Output As #1


For i = 1 To dernierelignejlvtciel

For j = 1 To dernierecolonnejlvtciel '- 1

If i = 1 Then
Print #1, Cells(i, j).Formula + ";"; 'sépare les données par ; lors de l'criture de CSV
Else

Select Case j

Case Is = "1"
Print #1, CDate(CStr(Cells(i, j))) & ";"; ' traitement pour mettre les dates en texte lors de l'ecriture du CSV

Case Is = "2"
Print #1, CDate(CStr(Cells(i, j))) & ";"; ' traitement pour mettre les dates en texte lors de l'ecriture du CSV

Case Is = "38"
Print #1, CDate(CStr(Cells(i, j))) & ";"; ' traitement pour mettre les dates en texte lors de l'ecriture du CSV <==== C'EST ICI QUE CELA BLOQUE AVEC ERREUR 13. JE N'AI PAS TOUJOURS DE DATE DANS CES CELLULES. Elles sont soit vides soit avec une date

Case Else
Print #1, Cells(i, j).Formula + ";"; 'sépare les données par ; lors de l'criture de CSV


End Select


End If

Next j

Print #1, Cells(i, j + 1).Formula 'Fin de ligne

Next i

Close #1





Le code AVEC GESTION D'ERREUR (qui ne fonctionne pas. Excel se met en boucle et écrit du vide pendant des lustres)


Cells(1, 1).Select
Open "C:\temp\" & nomfichier & ".csv" For Output As #1


For i = 1 To dernierelignejlvtciel

For j = 1 To dernierecolonnejlvtciel '- 1

If i = 1 Then
Print #1, Cells(i, j).Formula + ";"; 'sépare les données par ; lors de l'criture de CSV
Else

Select Case j

Case Is = "1"
Print #1, CDate(CStr(Cells(i, j))) & ";"; ' traitement pour mettre les dates en texte lors de l'ecriture du CSV

Case Is = "2"
Print #1, CDate(CStr(Cells(i, j))) & ";"; ' traitement pour mettre les dates en texte lors de l'ecriture du CSV

Case Is = "38"
On Error GoTo erreurenregistrementfichier:
Print #1, CDate(CStr(Cells(i, j))) & ";"; ' traitement pour mettre les dates en texte lors de l'ecriture du CSV

Case Else
Print #1, Cells(i, j).Formula + ";"; 'sépare les données par ; lors de l'criture de CSV


End Select

Exit Sub

End If

Next j

Print #1, Cells(i, j + 1).Formula 'Fin de ligne

Next i

Close #1

erreurenregistrementfichier:

If Err.Number = 13 Then 'si la date est vide pour le lettrage, on fait un enregistrement "normal"
Print #1, Cells(i, j).Formula + ";"; 'sépare les données par ; lors de l'criture de CSV
Resume
End If



Si une âme charitable a une solution cela serait avec plaisir.

Merci d'avance
 

Roland_M

XLDnaute Barbatruc
Re : VBA erreur code 13 lors de l'ecriture des données

bonjour,

alors il faut tester les cellules si c'est date ou pas !? exemple:
if isdate(Cells(i, j)) then Print #1, CDate(CStr(Cells(i, j))) & ";";
 

maspi69

XLDnaute Nouveau
Re : VBA erreur code 13 lors de l'ecriture des données

Merci pour la piste.

Effectivement, comme cela tout semble fonctionner.
Le moment de vérité sera lors de l'import dans l'outil comptable.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…