![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
Bonjour
je gère ou du moins je gérais sur fichier avec macros 500 ouvrages triés par auteurs, titres etc... selon les onglets à la suite d'une maladresse (en tous cas je l'imagine), le fichier est devenu si lourd que je ne peux plus l'ouvrir!! 239 000 000 octets! serait-il possible de récupérer le fichier sans les macros ou au moins un onglet ? ou bien suis-je punie de ne pas avoir fait de sauvegarde récemment? merci |
|
| ANNONCES | |||
|
|
|
|
#3 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 097
|
Bonjour Laetitia, le Forum
Ouh la la ! Y a pas bon 239 000 000 octets! ça nous fait quoi ça dans les 240 mégas, c'est presque un film Dvix complet ça... Là c'est vraiment pas évident, il te faut une machine puissante avec beaucoup de RAM que tu viens juste de rebooter... Tu ouvres Excel et depuis là tu essaie d'ouvrir ce mastodonte. Et tu laisses faire tant que ça ne plante pas, ne touche à rien, même pas la souris... Si par chance tu arrives à ouvrir, tu dois essayer de faire un SaveAs en format text '*.txt' de tes données, ça sera déjà ca... Une autre possibilité si tu as Access est d'essayer d'ouvrir ton Fichier depuis Access... Sinon, si ça ne s'ouvre pas, essaie d'ouvrir avec Word, mais je crains que çà ne passe pas trop, mais parfois on récupère des donnée comme ça... Sinon il y avait dans le temps un utilitaire qui avait une version d'évaluation gratuite 'Excel Recovery' si je ne m'abuse... Fais une recherche sur le net... Voilà, désolé mais je ne vois pas de solution miracle, d'où l'intérêt primordial d'avoir toujours, toujours, toujours, toujours !!! des BackUp à jour... Bon Appétit quand même @+Thierry |
|
|
|
|
|
#4 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 715
|
bonjour Laetitia , Charli et @+Thierry
en complément des infomations données par Thierry tu 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 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 j'espere que ça pourra t'aider bon courage MichelXld |
|
|
|
|
|
#5 (permalink) | |
|
XLDnaute Occasionel
Date d'inscription: février 2005
Messages: 173
|
Salut,
J'avais bricolé ceci pour un collègue dans le même cas. adpater les constantes. C'est un peu longuet si on a beaucoup de lignes. Il te suffit de coller ce code dans un module standard et d'avoir le même nb de feuilles dans le nouveau classeur et dans l'ancien. Citation:
A+++ |
|
|
|
|
|
|
#6 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 097
|
Bonjour Zon, Michel, Charly, Laëtitia, le Forum
Ah oui, je n'avais même pas pensé au VBA sur ce coup là !!! NB pour les Codes de Zon, Attention, la mise en page sous les basises 'Quote' que nous utilisons avec la XLA de Sylvain, ne supporte pas les antislash, seul les balises 'Codes' utilisé par Michel, les supporte... Code:
Option Explicit
Const NbLig& = 500 'à adapter
Const NbCol& = 20 'à adapter
Sub Princ()
Recup 'C:\\Documents and Settings\\UserName\\My Documents\\', 'TestVB.xls', Array('Feuil1', 'Feuil2'Â'Â')
End Sub
Sub Recup(ByVal Chemin$, ByVal NomFich$, T)
Dim I&, J&, K&, Temp
Application.ScreenUpdating = False
If ThisWorkbook.Worksheets.Count <> UBound(T) + 1 Then Exit Sub
For I = LBound(T) To UBound(T)
ReDim Temp(1 To NbLig, 1 To NbCol)
For J = 1 To NbLig
For K = 1 To NbCol
Temp(J, K) = GetValue(Chemin, NomFich, T(I), Cells(J, K).Address)
Next K
Next J
ThisWorkbook.Worksheets(I + 1).[A1].Resize(UBound(Temp), UBound(Temp, 2)) = Temp
Next I
End Sub
Private Function GetValue(Path, File, Sheet, Ref) 'John Walkenbach
Dim Arg As String
If Right(Path, 1) <> '\\' Then Path = Path & '\\'
If Dir(Path & File) = '' Then
GetValue = 'File Not Found'
Exit Function
End If
Arg = ''' & Path & '[' & File & ']' & Sheet & ''!' & Range(Ref) _
.Range('A1'Â'Â').Address(, , xlR1C1)
GetValue = ExecuteExcel4Macro(Arg)
GetValue = IIf(GetValue = 0, '', GetValue) 'modif perso
End Function
La méthode ADO proposée par Michel Fontionne impec, et est ultra rapide, mais par contre tu ne récupéreras qu'un onglet à la fois, et u adaptera 'Feuille' pourl'onglet suivant... Dans les deux méthodes il te faudra par contre connaître les noms de tes onglets... Bonne Chance @+Thierry Message édité par: _Thierry, à: 05/04/2005 16:00 |
|
|
|
|
|
#7 (permalink) |
|
Super Moderator
Date d'inscription: février 2005
Localisation: Rennes
Version Excel : Excel 2000 (PC)
Messages: 8 079
|
Bonjour le fil
Alors franchement je suis MDR Thierry a dit : Ah oui, je n'avais même pas pensé au VBA sur ce coup là !!! Et bien là franchement ça m'en bouche un coin Bonne journée Message édité par: Pascal76, à: 05/04/2005 14:59
__________________
Pascal(Visitez mon Blog Photo)Vous pouvez devenir "Supporter XLD", plus de renseignements ICI |
|
|
|
|
|
#9 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 715
|
rebonsoir à toutes et à tous
un petit coucou à Zon que je n'ai pas eu l'occasion de croiser depuis longtemps suite aux remarques de Thierry 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 . Code:
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
bonne soiree MichelXld Message édité par: MichelXld, à: 05/04/2005 19:21 |
|
|
|
|
|
#10 (permalink) |
|
Guest
Messages: n/a
|
issue heureuse grâce à vous tous!
merci charli merci Thierry Merci michelXld Merci Zon merci Pascal76 je regrette de ne pas pouvoir vous rendre la pareille ou peut-être dans quelques temps quand je serai mieux rodée :kiss: |
|
|
| ANNONCES | |
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|