Bonjour aserges, le Forum,
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
En toute Honnêteté, j'ignore qui à écrit cela, mais à part deux ou trois maîtres du Forum...
Merci de nous tenir informé ca fera avancer tout le monde, et si l'auteur se reconnaît, qu'il n'hésite pas à se faire connaître afin de mettre mon txt archive à jour.
En te souhaitant beaucoup de courage.