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