Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Forum Excel


Réponse
 
LinkBack Outils de la discussion
Vieux 13/11/2005, 15h48   #1 (permalink)
Stéphane
Guest
 
Messages: n/a
Par défaut Retour chariot et communication Excel - Access

Bonjour,

J'ai un fichier excel pour historiser des informations.
Or aujourd'hui, ce fichier fait presque 29 mille lignes (environ 8 Mo).

L'ouverture du fichier devient très longue et les filtres également. Je lance ensuite des macros pour faire des calculs.

Je souhaiterai donc exporter ce fichier sous Access. Car Access supporterai mieux cette volumétrie. Je pourrai ainsi faire mes filtres par des requêtes sous Access et ensuite, je pourrais faire un transfert vers Excel pour faire mes derniers calculs sur les données filtrées.


1ere étape : Envoyer les données d'Excel vers Access :

Ca j'ai reussi. Mais les retours chariots d'Excel sont interprétés sous Access par un 'carré'.
Donc, ma première question (sachant que je ne suis pas un pros d'Access et n'y connais rien en macro), comment puis-je faire pour remplacer ce 'carré' sous Access par un vrai retour chariot ?


2ieme étape : Envoyer les données filtrées d'Access vers Excel :

La encore, j'y arrive. Mais j'ai le même problème avec les retours chariots. Sauf qu'un retour chariot d'Access est interprété par Excel par 2 'carré'.
Donc ma deuxième question, comment puis-je faire pour remplacer ces 2 'carré' sous Excel par un vrai retour chariot ?

Je vous remercie pour votre aide.

Car là, mon fichier Excel va bientôt exploser de part le nombre de lignes de que j'ai à traiter. Et je ne peux rien supprimer.

Merci d'avance.
  Réponse avec citation
ANNONCES
Vieux 14/11/2005, 05h47   #2 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 714
Par défaut Re:Retour chariot et communication Excel - Access

bonjour

si j'ai bien compris ta demande , il faut remplacer les retours à la ligne d'Excel : Alt + Entree ( equivalences Chr(10) , Vblf ) par les retours à la ligne d'Access : Ctrl + Entree ( equivalences vbCrLf , Chr(13) + Chr(10))

par macro cela donnerait

Cell = Application.WorksheetFunction.Substitute(Cell, Chr(10), Chr(13) + Chr(10))


dans cet exemple , avant d'effectuer l'export vers Accees , tu selectionnes ta plage de données et tu executes la macro pour mettre en forme les données Excel

Sub Test_V01()
Dim Cell As Range

For Each Cell In Selection
Cell = Application.WorksheetFunction.Substitute(Cell, Chr(10), Chr(13) + Chr(10))
Next Cell
End Sub


ensuite tu peux exporter tes données vers Access


un fois que c'est fait (ou apres un import d'Access) tu peux réinitialiser tes données Excel avec les retours à la ligne standard

Sub Test_V02()
Dim Cell As Range

For Each Cell In Selection
Cell = Application.WorksheetFunction.Substitute(Cell, Chr(13) + Chr(10), Chr(10))
Next Cell
End Sub



sinon l'exemple ci dessous permet de créer directement une nouvelle table dans une base Access et d'y transférer les données de la plage A2:C20000
le premier champ nommé 'Code' contient des retours à la lignes qui vont etre automatiquement remis en forme


Option Explicit
Option Compare Text
'Ajouter une table d'une base de données Access
'***********************************************
Sub CreationTable()
'
'necessite d'activer la reference Microsoft ActiveX Data Objects 2.0 Library
'necessite d'activer la reference Microsoft ADO Ext. 2.5 for DDL and Security
'
Dim Cat As New ADOX.Catalog
Dim Tbl As New ADOX.Table
Dim Conn As New ADODB.Connection
Dim rsT As New ADODB.Recordset
Dim Plage As Range, Cell As Range
Dim maNouvelleTable As String
Dim i As Byte


maNouvelleTable = InputBox('Nommer la nouvelle table (sans espaces )')
If maNouvelleTable = '' Then Exit Sub

With Conn 'se connecter à la base Access
.Provider = 'Microsoft.JET.OLEDB.4.0'
.Open 'C:\\\\\\\\MaBase_V01.mdb'
End With

Cat.ActiveConnection = Conn

'creation d'une nouvelle table*****************
With Tbl
.Name = maNouvelleTable
With .Columns 'definition des noms de champs et des types de donnees
.Append 'Code'
.Append 'Date', adDate
.Append 'Valeurs', adInteger
End With
End With
Cat.Tables.Append Tbl
'**********************************************

With rsT
.ActiveConnection = Conn
.Open maNouvelleTable, LockType:=adLockOptimistic
End With

'transfert des données Excel vers Access
Set Plage = Feuil1.Range('A2:C20000')
For Each Cell In Plage
With rsT
.AddNew
.Fields('Code').Value = _
Application.WorksheetFunction.Substitute(Cell, Chr(10), Chr(13) + Chr(10))
.Fields('Date').Value = Cell.Offset(0, 1)
.Fields('Valeurs').Value = Cell.Offset(0, 2)
.Update
End With
Next Cell

rsT.Close
Set Tbl = Nothing
Set Cat = Nothing
Conn.Close
End Sub




bonne journée
MichelXld
MichelXld est déconnecté   Réponse avec citation
Vieux 14/11/2005, 22h26   #3 (permalink)
Stéphane
Guest
 
Messages: n/a
Par défaut Re:Retour chariot et communication Excel - Access

Merci !!!! :woohoo:
En reprenant vos pistes j'ai réussi.

Bon continuaion à vous.
  Réponse avec citation
Vieux 28/02/2006, 18h11   #4 (permalink)
Béa
Guest
 
Messages: n/a
Par défaut Re:Retour chariot et communication Excel - Access

Bonjour, Je cherchais à remplacer les sauts de ligne d'Excel (en 'carrés' ou non selon la provenance du saut de ligne) depuis longtemps - un grand merci - cela m'aide beaucoup
  Réponse avec citation
Vieux 02/10/2006, 22h19   #5 (permalink)
XLDnaute Junior
 
Date d'inscription: octobre 2005
Localisation: Maubeuge
Version Excel : Excel 2003 (PC)
Messages: 66
Par défaut Re : Retour chariot et communication Excel - Access

Bonjour à tous, ce post m'interesse particulierement car je dois supprimer des retours chariots dans un fichier excel justement, mais par contre je dois les remplacer par un espace, tout simplement...que me conseillez vous de faire ?
Merci
LB59 est déconnecté   Réponse avec citation
Vieux 03/10/2006, 04h59   #6 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 714
Par défaut Re : Retour chariot et communication Excel - Access

bonjour

tu peux essayer de remplacer

Code:
Application.WorksheetFunction.Substitute(Cell, Chr(10), Chr(13) + Chr(10))
par

Code:
Application.WorksheetFunction.Substitute(Cell, Chr(10), " ")

bonne journée
MichelXld
MichelXld est déconnecté   Réponse avec citation
Vieux 03/10/2006, 23h15   #7 (permalink)
XLDnaute Junior
 
Date d'inscription: octobre 2005
Localisation: Maubeuge
Version Excel : Excel 2003 (PC)
Messages: 66
Par défaut Re : Retour chariot et communication Excel - Access

Merci, j'essaye demain et je vous dis ce que ça donne.
Par contre pour executer cette macro, il faut que j'aille ou ?
LB59 est déconnecté   Réponse avec citation
Vieux 04/10/2006, 10h19   #8 (permalink)
XLDnaute Junior
 
Date d'inscription: octobre 2005
Localisation: Maubeuge
Version Excel : Excel 2003 (PC)
Messages: 66
Par défaut Re : Retour chariot et communication Excel - Access

Merci Michel, ça fonctionne, par contre ce n'est que partiel, en effet, j'ai régulièrement 2 retours chariots à la suite, et cette macro ne m'en retire qu'un seul...j'ai essayé de l'esécuter 2 fois, mais ça ne change rien.
J'essaye de mettre un fichier exemple pour me faire comprendre, car je ne suis pas forcément trés clair...
Fichiers attachés
Type de fichier : zip 1_retour_chariot.zip (6,7 Ko, 8 affichages)
Type de fichier : zip 2_retour_chariot.zip (1,9 Ko, 5 affichages)
LB59 est déconnecté   Réponse avec citation
Vieux 17/10/2006, 11h53   #9 (permalink)
XLDnaute Junior
 
Date d'inscription: octobre 2005
Localisation: Maubeuge
Version Excel : Excel 2003 (PC)
Messages: 66
Par défaut Re : Retour chariot et communication Excel - Access

Je reviens aux nouvelles, en fait j'avais un retour chariot chr10 et un chr13, j'ai donc modifié (légèrement) la macro de Michel, et ça marche, merci à tous.
LB59 est déconnecté   Réponse avec citation
ANNONCES
Réponse

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +2. Il est actuellement 21h18.


(C) 2006 Excel Downloads