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
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