fichier endommagé

V

Vincent

Guest
Bonjour,
Je n'arrive plus à ouvrir un important fichier excel, lors de l'ouverture, une boite de dialogue m'indique :'impossible de lire le fichier'. J'ai fouillé sur le net les solutions de réparation qui s'offraient à moi...j'ai ai trouvée (excelFix..), mais elles ne sont pas offertes (119€) et je ne peux me les offrir...
Aussi, si l'un d'entre vous à une solution plus économique je suis suis preneur....

Par avance merci de votre aide.
Vincent
 

Ti_

Nous a quitté
Repose en paix
Tu peux essayer de l'ouvrir dans un autre programme Office (Word, etc) ou si ça ne veut toujours pas s'ouvrir, dans Open Office. Moi j'ai déjà récupéré des fichiers ainsi. Enfin, dans Ooo, il y a du boulot à faire à la main, surtout si c'est un fichier un peu complexe, mais c'est mieux que de tout perdre...
 
M

Marc

Guest
bonjour vincent
voici ce que j'avais gardé d'un post sur ce forum, bon courage

ouvres un nouveau classeur vide dans la cellule A1 , tu saisies la formule ci dessous en adaptant le chemin du classeur bloqué le nom du classeur bloqué le nom de la feuille dans lequel tu souhaites recuperer les infos
Code:
='C:\\Documents and Settings\\michel\\[monClasseur.xls]Feuil1'!A1
la cellule A1 de 'monClasseur' va s'afficher dans la cellule A1 du nouveau classeur ensuite tu étires la formule sur les autres cellules sinon pour transferer les données de ton classeur fermé dans un fichier texte tu peux tester cette macro
Code:
Sub excelVersFichierTexte()
'necessite d'activer la reference Microsoft ActiveX Data Objects x.x Library
Dim Rs As New ADODB.Recordset
Dim Fichier As String, Feuille As String
Dim xConnect As String, xSql As String

Fichier = 'C:\\Documents and Settings\\michel\\monClasseur.xls'
Feuille = 'Feuil1'

xConnect = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' & Fichier & ';' & _
'Extended Properties=Excel 8.0;'

xSql = 'SELECT * FROM [' & Feuille & '$];'

Set Rs = New ADODB.Recordset
Rs.Open xSql, xConnect, adOpenForwardOnly, adLockReadOnly, adCmdText

Open 'C:\\Documents and Settings\\michel\\essai.txt' For Output As #1

Do Until Rs.EOF
Print #1, Rs.GetString(, 600, ';', vbCrLf, ''); 'dans cet exemple le séparateur est ';' (point virgule)
Loop
Close #1
End Sub
Mais je viens de tester çà peut fonctionner, mais fermes toutes autres application avant car ça va mouliner sérieux!

Voici une nouvelle version qui boucle sur tous les onglets sans connaitre à l'avance leurs noms. Les infos de chaque onglet sont tranférées dans un fichier texte différent.

Sub excelVersFichierTexte_V02()
'michelxld le 04.04.2005
'necessite d'activer la reference Microsoft ActiveX Data Objects x.x Library
'necessite d 'activer la reference Microsoft ADO Ext 2.7 for DLL ans Security
Dim Cn As ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim Feuille As ADOX.Table
Dim Cat As ADOX.Catalog
Dim xConnect As String, xSql As String, Fichier As String

Fichier = 'C:\\Documents and Settings\\michel\\monClasseur.xls'
xConnect = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' & Fichier & ';' & _
'Extended Properties=Excel 8.0;'

Set Cat = CreateObject('ADOX.Catalog')
Set Cn = CreateObject('ADODB.Connection')

Cn.Open xConnect
Set Cat.ActiveConnection = Cn

For Each Feuille In Cat.tables

Set Rs = New ADODB.Recordset

xSql = 'SELECT * FROM [' & Feuille.Name & '];'
Rs.Open xSql, xConnect, adOpenForwardOnly, adLockReadOnly, adCmdText

Open 'C:\\' & Left(Feuille.Name, Len(Feuille.Name) - 1) & '.txt' For Output As #1
Do Until Rs.EOF
Print #1, Rs.GetString(, 600, ';', vbCrLf, '');
Loop
Close #1
Rs.Close

Next Feuille

Cn.Close
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 298
Messages
2 086 979
Membres
103 417
dernier inscrit
abaabdelghani