Pour n'importer que les 65536 premières lignes d'un fichier .csv dans une feuille excel :
Tu dois ajouter à ton projet la bibliothèque suivante :
"Microsoft Activex Data Objects librairy 2.x"
Fenêtre de l'éditeur de code / barre des menus / outils / références/
'-------------------------------------------
Sub MaRequête1()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, Rg As Range
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:;" & _ ' Chemin où est le fichier seulement
"Extended Properties=""text;HDR=No;FMTÞlimited"""
Requete = "SELECT TOP 65536 * From test.csv" 'nom du fichier seulement
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie des données vers la "Feuil2") nom à adapter ...
Set Rg = Worksheets("Feuil2").Range("A1")
Rg.CopyFromRecordset Rst
Rst.Close: Conn.Close
Set Rg = Nothing
End Sub
'------------------------------------------------
"fetnat" a écrit dans le message de news:
eudT73%
Bonjour,
Le résultat d'un calcul dans un logiciel (hors office) apparait sous la
forme CSV.
Le nombre de lignes de ce résultat est variable mais il dépasse 65536.
Il y a une trentaine de colonnes.
Si je fais un copié-collé, le copié se passe bien mais le collé plante
tout, le logiciel et Excel.
Je rêve d'une automatisation qui récupérerait le tableau de données,
mais je bute sur la première marche.
Comment récupérer 65536 lignes x 30 colonnes qui se trouvent dans la
zone tampon du copié manuel et l'envoyer dans un classeur ?
je voulais m'inspirer de cette macro qui garde les 5 dernières lignes
d'un fichier texte (source Excelabo) :
Sub test()
Dim file_name As String
Dim file_length As Long
Dim fnum As Integer
Dim bytes() As Byte
Dim txt As String
Dim i As Integer
file_name = "F:DocFloessai.txt"
file_length = FileLen(file_name)
f2 = 1000
f1 = file_length - f2
fnum = FreeFile
Open file_name For Binary As #fnum
ReDim bytes(1 To f2)
Get #fnum, f1 + 1, bytes
Close fnum
' Afficher résultats
For i = 1 To f2
txt = txt & Chr(Format$(bytes(i)))
Next i
Debug.Print txt
End Sub
Que dois-je mettre à la place de "F:DocFloessai.txt" pour attraper la
zone ? Faut-il la copier dans un tableau ?
f1 deviendra 65536 et puis beaucoup de tatonnements suivront...
Je n'arrive déjà pas à trouver le nom du buffer pour chercher dans les
archives.
Merci pour l'aide
fetnat
Pour n'importer que les 65536 premières lignes d'un fichier .csv dans une feuille excel :
Tu dois ajouter à ton projet la bibliothèque suivante :
"Microsoft Activex Data Objects librairy 2.x"
Fenêtre de l'éditeur de code / barre des menus / outils / références/
'-------------------------------------------
Sub MaRequête1()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, Rg As Range
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:;" & _ ' Chemin où est le fichier seulement
"Extended Properties=""text;HDR=No;FMTÞlimited"""
Requete = "SELECT TOP 65536 * From test.csv" 'nom du fichier seulement
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie des données vers la "Feuil2") nom à adapter ...
Set Rg = Worksheets("Feuil2").Range("A1")
Rg.CopyFromRecordset Rst
Rst.Close: Conn.Close
Set Rg = Nothing
End Sub
'------------------------------------------------
"fetnat" <fetnat@caramail.com> a écrit dans le message de news:
eudT73%23vIHA.2208@TK2MSFTNGP04.phx.gbl...
Bonjour,
Le résultat d'un calcul dans un logiciel (hors office) apparait sous la
forme CSV.
Le nombre de lignes de ce résultat est variable mais il dépasse 65536.
Il y a une trentaine de colonnes.
Si je fais un copié-collé, le copié se passe bien mais le collé plante
tout, le logiciel et Excel.
Je rêve d'une automatisation qui récupérerait le tableau de données,
mais je bute sur la première marche.
Comment récupérer 65536 lignes x 30 colonnes qui se trouvent dans la
zone tampon du copié manuel et l'envoyer dans un classeur ?
je voulais m'inspirer de cette macro qui garde les 5 dernières lignes
d'un fichier texte (source Excelabo) :
Sub test()
Dim file_name As String
Dim file_length As Long
Dim fnum As Integer
Dim bytes() As Byte
Dim txt As String
Dim i As Integer
file_name = "F:DocFloessai.txt"
file_length = FileLen(file_name)
f2 = 1000
f1 = file_length - f2
fnum = FreeFile
Open file_name For Binary As #fnum
ReDim bytes(1 To f2)
Get #fnum, f1 + 1, bytes
Close fnum
' Afficher résultats
For i = 1 To f2
txt = txt & Chr(Format$(bytes(i)))
Next i
Debug.Print txt
End Sub
Que dois-je mettre à la place de "F:DocFloessai.txt" pour attraper la
zone ? Faut-il la copier dans un tableau ?
f1 deviendra 65536 et puis beaucoup de tatonnements suivront...
Je n'arrive déjà pas à trouver le nom du buffer pour chercher dans les
archives.
Merci pour l'aide
fetnat
Pour n'importer que les 65536 premières lignes d'un fichier .csv dans une feuille excel :
Tu dois ajouter à ton projet la bibliothèque suivante :
"Microsoft Activex Data Objects librairy 2.x"
Fenêtre de l'éditeur de code / barre des menus / outils / références/
'-------------------------------------------
Sub MaRequête1()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, Rg As Range
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:;" & _ ' Chemin où est le fichier seulement
"Extended Properties=""text;HDR=No;FMTÞlimited"""
Requete = "SELECT TOP 65536 * From test.csv" 'nom du fichier seulement
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie des données vers la "Feuil2") nom à adapter ...
Set Rg = Worksheets("Feuil2").Range("A1")
Rg.CopyFromRecordset Rst
Rst.Close: Conn.Close
Set Rg = Nothing
End Sub
'------------------------------------------------
"fetnat" a écrit dans le message de news:
eudT73%
Bonjour,
Le résultat d'un calcul dans un logiciel (hors office) apparait sous la
forme CSV.
Le nombre de lignes de ce résultat est variable mais il dépasse 65536.
Il y a une trentaine de colonnes.
Si je fais un copié-collé, le copié se passe bien mais le collé plante
tout, le logiciel et Excel.
Je rêve d'une automatisation qui récupérerait le tableau de données,
mais je bute sur la première marche.
Comment récupérer 65536 lignes x 30 colonnes qui se trouvent dans la
zone tampon du copié manuel et l'envoyer dans un classeur ?
je voulais m'inspirer de cette macro qui garde les 5 dernières lignes
d'un fichier texte (source Excelabo) :
Sub test()
Dim file_name As String
Dim file_length As Long
Dim fnum As Integer
Dim bytes() As Byte
Dim txt As String
Dim i As Integer
file_name = "F:DocFloessai.txt"
file_length = FileLen(file_name)
f2 = 1000
f1 = file_length - f2
fnum = FreeFile
Open file_name For Binary As #fnum
ReDim bytes(1 To f2)
Get #fnum, f1 + 1, bytes
Close fnum
' Afficher résultats
For i = 1 To f2
txt = txt & Chr(Format$(bytes(i)))
Next i
Debug.Print txt
End Sub
Que dois-je mettre à la place de "F:DocFloessai.txt" pour attraper la
zone ? Faut-il la copier dans un tableau ?
f1 deviendra 65536 et puis beaucoup de tatonnements suivront...
Je n'arrive déjà pas à trouver le nom du buffer pour chercher dans les
archives.
Merci pour l'aide
fetnat
Pour info, une autre piste :
XL 2007 n'a pas de limite dans le nmbre de lignes, "sauf la mémoire de la
machine".
raoul
Pour info, une autre piste :
XL 2007 n'a pas de limite dans le nmbre de lignes, "sauf la mémoire de la
machine".
raoul
Pour info, une autre piste :
XL 2007 n'a pas de limite dans le nmbre de lignes, "sauf la mémoire de la
machine".
raoul
Pour n'importer que les 65536 premières lignes d'un fichier .csv dans une feuille excel :
Tu dois ajouter à ton projet la bibliothèque suivante :
"Microsoft Activex Data Objects librairy 2.x"
Fenêtre de l'éditeur de code / barre des menus / outils / références/
'-------------------------------------------
Sub MaRequête1()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, Rg As Range
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:;" & _ ' Chemin où est le fichier seulement
"Extended Properties=""text;HDR=No;FMTÞlimited"""
Requete = "SELECT TOP 65536 * From test.csv" 'nom du fichier seulement
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie des données vers la "Feuil2") nom à adapter ...
Set Rg = Worksheets("Feuil2").Range("A1")
Rg.CopyFromRecordset Rst
Rst.Close: Conn.Close
Set Rg = Nothing
End Sub
'------------------------------------------------
"fetnat" a écrit dans le message de news:
eudT73%
Bonjour,
Le résultat d'un calcul dans un logiciel (hors office) apparait sous la
forme CSV.
Le nombre de lignes de ce résultat est variable mais il dépasse 65536.
Il y a une trentaine de colonnes.
Si je fais un copié-collé, le copié se passe bien mais le collé plante
tout, le logiciel et Excel.
Je rêve d'une automatisation qui récupérerait le tableau de données,
mais je bute sur la première marche.
Comment récupérer 65536 lignes x 30 colonnes qui se trouvent dans la
zone tampon du copié manuel et l'envoyer dans un classeur ?
je voulais m'inspirer de cette macro qui garde les 5 dernières lignes
d'un fichier texte (source Excelabo) :
Sub test()
Dim file_name As String
Dim file_length As Long
Dim fnum As Integer
Dim bytes() As Byte
Dim txt As String
Dim i As Integer
file_name = "F:DocFloessai.txt"
file_length = FileLen(file_name)
f2 = 1000
f1 = file_length - f2
fnum = FreeFile
Open file_name For Binary As #fnum
ReDim bytes(1 To f2)
Get #fnum, f1 + 1, bytes
Close fnum
' Afficher résultats
For i = 1 To f2
txt = txt & Chr(Format$(bytes(i)))
Next i
Debug.Print txt
End Sub
Que dois-je mettre à la place de "F:DocFloessai.txt" pour attraper la
zone ? Faut-il la copier dans un tableau ?
f1 deviendra 65536 et puis beaucoup de tatonnements suivront...
Je n'arrive déjà pas à trouver le nom du buffer pour chercher dans les
archives.
Merci pour l'aide
fetnat
Pour n'importer que les 65536 premières lignes d'un fichier .csv dans une feuille excel :
Tu dois ajouter à ton projet la bibliothèque suivante :
"Microsoft Activex Data Objects librairy 2.x"
Fenêtre de l'éditeur de code / barre des menus / outils / références/
'-------------------------------------------
Sub MaRequête1()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, Rg As Range
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:;" & _ ' Chemin où est le fichier seulement
"Extended Properties=""text;HDR=No;FMTÞlimited"""
Requete = "SELECT TOP 65536 * From test.csv" 'nom du fichier seulement
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie des données vers la "Feuil2") nom à adapter ...
Set Rg = Worksheets("Feuil2").Range("A1")
Rg.CopyFromRecordset Rst
Rst.Close: Conn.Close
Set Rg = Nothing
End Sub
'------------------------------------------------
"fetnat" <fetnat@caramail.com> a écrit dans le message de news:
eudT73%23vIHA.2208@TK2MSFTNGP04.phx.gbl...
Bonjour,
Le résultat d'un calcul dans un logiciel (hors office) apparait sous la
forme CSV.
Le nombre de lignes de ce résultat est variable mais il dépasse 65536.
Il y a une trentaine de colonnes.
Si je fais un copié-collé, le copié se passe bien mais le collé plante
tout, le logiciel et Excel.
Je rêve d'une automatisation qui récupérerait le tableau de données,
mais je bute sur la première marche.
Comment récupérer 65536 lignes x 30 colonnes qui se trouvent dans la
zone tampon du copié manuel et l'envoyer dans un classeur ?
je voulais m'inspirer de cette macro qui garde les 5 dernières lignes
d'un fichier texte (source Excelabo) :
Sub test()
Dim file_name As String
Dim file_length As Long
Dim fnum As Integer
Dim bytes() As Byte
Dim txt As String
Dim i As Integer
file_name = "F:DocFloessai.txt"
file_length = FileLen(file_name)
f2 = 1000
f1 = file_length - f2
fnum = FreeFile
Open file_name For Binary As #fnum
ReDim bytes(1 To f2)
Get #fnum, f1 + 1, bytes
Close fnum
' Afficher résultats
For i = 1 To f2
txt = txt & Chr(Format$(bytes(i)))
Next i
Debug.Print txt
End Sub
Que dois-je mettre à la place de "F:DocFloessai.txt" pour attraper la
zone ? Faut-il la copier dans un tableau ?
f1 deviendra 65536 et puis beaucoup de tatonnements suivront...
Je n'arrive déjà pas à trouver le nom du buffer pour chercher dans les
archives.
Merci pour l'aide
fetnat
Pour n'importer que les 65536 premières lignes d'un fichier .csv dans une feuille excel :
Tu dois ajouter à ton projet la bibliothèque suivante :
"Microsoft Activex Data Objects librairy 2.x"
Fenêtre de l'éditeur de code / barre des menus / outils / références/
'-------------------------------------------
Sub MaRequête1()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, Rg As Range
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:;" & _ ' Chemin où est le fichier seulement
"Extended Properties=""text;HDR=No;FMTÞlimited"""
Requete = "SELECT TOP 65536 * From test.csv" 'nom du fichier seulement
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie des données vers la "Feuil2") nom à adapter ...
Set Rg = Worksheets("Feuil2").Range("A1")
Rg.CopyFromRecordset Rst
Rst.Close: Conn.Close
Set Rg = Nothing
End Sub
'------------------------------------------------
"fetnat" a écrit dans le message de news:
eudT73%
Bonjour,
Le résultat d'un calcul dans un logiciel (hors office) apparait sous la
forme CSV.
Le nombre de lignes de ce résultat est variable mais il dépasse 65536.
Il y a une trentaine de colonnes.
Si je fais un copié-collé, le copié se passe bien mais le collé plante
tout, le logiciel et Excel.
Je rêve d'une automatisation qui récupérerait le tableau de données,
mais je bute sur la première marche.
Comment récupérer 65536 lignes x 30 colonnes qui se trouvent dans la
zone tampon du copié manuel et l'envoyer dans un classeur ?
je voulais m'inspirer de cette macro qui garde les 5 dernières lignes
d'un fichier texte (source Excelabo) :
Sub test()
Dim file_name As String
Dim file_length As Long
Dim fnum As Integer
Dim bytes() As Byte
Dim txt As String
Dim i As Integer
file_name = "F:DocFloessai.txt"
file_length = FileLen(file_name)
f2 = 1000
f1 = file_length - f2
fnum = FreeFile
Open file_name For Binary As #fnum
ReDim bytes(1 To f2)
Get #fnum, f1 + 1, bytes
Close fnum
' Afficher résultats
For i = 1 To f2
txt = txt & Chr(Format$(bytes(i)))
Next i
Debug.Print txt
End Sub
Que dois-je mettre à la place de "F:DocFloessai.txt" pour attraper la
zone ? Faut-il la copier dans un tableau ?
f1 deviendra 65536 et puis beaucoup de tatonnements suivront...
Je n'arrive déjà pas à trouver le nom du buffer pour chercher dans les
archives.
Merci pour l'aide
fetnat
Ce que tu appelles ton logiciel hors office, ADO ou même MsQuery
possèdes un certain nombre de pilote permettant d'extraire directement
les données. Une recherche sur internet auprès du fabricant de ton
application devrait te permettre de savoir si un tel pilote existe et
comment l'installer.
Plus simplement, tu copies tes données dans un fichier NotePad
et tu l'enregistres en lui donnant une extension .csv. après,
tu pourrais utiliser ma procédure pour les 65536 premières lignes.
Et si tu as beaucoup de temps, tu peux regarder là :
http://www.cpearson.com/excel/clipboard.htm
Mais tu devras probablement passer par un fichier .csv comme
intermédiaire avant d'utiliser ma procédure ....
"fetnat" a écrit dans le message de news:
%237InK8$
Bonjour MichDenis,
Je te remercie pour ton aide.
Je fais un copié manuellement des données dans un logiciel AB (le
résulat d'un calcul). Ces données ont un format CSV, mais pour le moment
les données sont dans le buffer du copié-collé.
Si je fais collé dans Excel, ce dernier se plante car j'ai 115 000 lignes.
Si j'utilise la fonction d'extraction du logiciel AB vers un fichier
CSV, c'est le logiciel AB qui se plante.
Tant que j'envoie les données dans le buffer, je garde la main et les
données sont dans le buffer.
Comment modifier ta sub pour collé les 65536 premières lignes du buffer,
dans un fichier csv ou bien dans un classeur Excel ?
Je suis désolé de ne pas avoir été plus clair dans mes explications.
Cordialement
fetnatPour n'importer que les 65536 premières lignes d'un fichier .csv dans une feuille excel :
Tu dois ajouter à ton projet la bibliothèque suivante :
"Microsoft Activex Data Objects librairy 2.x"
Fenêtre de l'éditeur de code / barre des menus / outils / références/
'-------------------------------------------
Sub MaRequête1()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, Rg As Range
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:;" & _ ' Chemin où est le fichier seulement
"Extended Properties=""text;HDR=No;FMTÞlimited"""
Requete = "SELECT TOP 65536 * From test.csv" 'nom du fichier seulement
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie des données vers la "Feuil2") nom à adapter ...
Set Rg = Worksheets("Feuil2").Range("A1")
Rg.CopyFromRecordset Rst
Rst.Close: Conn.Close
Set Rg = Nothing
End Sub
'------------------------------------------------
"fetnat" a écrit dans le message de news:
eudT73%
Bonjour,
Le résultat d'un calcul dans un logiciel (hors office) apparait sous la
forme CSV.
Le nombre de lignes de ce résultat est variable mais il dépasse 65536.
Il y a une trentaine de colonnes.
Si je fais un copié-collé, le copié se passe bien mais le collé plante
tout, le logiciel et Excel.
Je rêve d'une automatisation qui récupérerait le tableau de données,
mais je bute sur la première marche.
Comment récupérer 65536 lignes x 30 colonnes qui se trouvent dans la
zone tampon du copié manuel et l'envoyer dans un classeur ?
je voulais m'inspirer de cette macro qui garde les 5 dernières lignes
d'un fichier texte (source Excelabo) :
Sub test()
Dim file_name As String
Dim file_length As Long
Dim fnum As Integer
Dim bytes() As Byte
Dim txt As String
Dim i As Integer
file_name = "F:DocFloessai.txt"
file_length = FileLen(file_name)
f2 = 1000
f1 = file_length - f2
fnum = FreeFile
Open file_name For Binary As #fnum
ReDim bytes(1 To f2)
Get #fnum, f1 + 1, bytes
Close fnum
' Afficher résultats
For i = 1 To f2
txt = txt & Chr(Format$(bytes(i)))
Next i
Debug.Print txt
End Sub
Que dois-je mettre à la place de "F:DocFloessai.txt" pour attraper la
zone ? Faut-il la copier dans un tableau ?
f1 deviendra 65536 et puis beaucoup de tatonnements suivront...
Je n'arrive déjà pas à trouver le nom du buffer pour chercher dans les
archives.
Merci pour l'aide
fetnat
Ce que tu appelles ton logiciel hors office, ADO ou même MsQuery
possèdes un certain nombre de pilote permettant d'extraire directement
les données. Une recherche sur internet auprès du fabricant de ton
application devrait te permettre de savoir si un tel pilote existe et
comment l'installer.
Plus simplement, tu copies tes données dans un fichier NotePad
et tu l'enregistres en lui donnant une extension .csv. après,
tu pourrais utiliser ma procédure pour les 65536 premières lignes.
Et si tu as beaucoup de temps, tu peux regarder là :
http://www.cpearson.com/excel/clipboard.htm
Mais tu devras probablement passer par un fichier .csv comme
intermédiaire avant d'utiliser ma procédure ....
"fetnat" <fetnat@caramail.com> a écrit dans le message de news:
%237InK8$vIHA.3380@TK2MSFTNGP03.phx.gbl...
Bonjour MichDenis,
Je te remercie pour ton aide.
Je fais un copié manuellement des données dans un logiciel AB (le
résulat d'un calcul). Ces données ont un format CSV, mais pour le moment
les données sont dans le buffer du copié-collé.
Si je fais collé dans Excel, ce dernier se plante car j'ai 115 000 lignes.
Si j'utilise la fonction d'extraction du logiciel AB vers un fichier
CSV, c'est le logiciel AB qui se plante.
Tant que j'envoie les données dans le buffer, je garde la main et les
données sont dans le buffer.
Comment modifier ta sub pour collé les 65536 premières lignes du buffer,
dans un fichier csv ou bien dans un classeur Excel ?
Je suis désolé de ne pas avoir été plus clair dans mes explications.
Cordialement
fetnat
Pour n'importer que les 65536 premières lignes d'un fichier .csv dans une feuille excel :
Tu dois ajouter à ton projet la bibliothèque suivante :
"Microsoft Activex Data Objects librairy 2.x"
Fenêtre de l'éditeur de code / barre des menus / outils / références/
'-------------------------------------------
Sub MaRequête1()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, Rg As Range
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:;" & _ ' Chemin où est le fichier seulement
"Extended Properties=""text;HDR=No;FMTÞlimited"""
Requete = "SELECT TOP 65536 * From test.csv" 'nom du fichier seulement
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie des données vers la "Feuil2") nom à adapter ...
Set Rg = Worksheets("Feuil2").Range("A1")
Rg.CopyFromRecordset Rst
Rst.Close: Conn.Close
Set Rg = Nothing
End Sub
'------------------------------------------------
"fetnat" <fetnat@caramail.com> a écrit dans le message de news:
eudT73%23vIHA.2208@TK2MSFTNGP04.phx.gbl...
Bonjour,
Le résultat d'un calcul dans un logiciel (hors office) apparait sous la
forme CSV.
Le nombre de lignes de ce résultat est variable mais il dépasse 65536.
Il y a une trentaine de colonnes.
Si je fais un copié-collé, le copié se passe bien mais le collé plante
tout, le logiciel et Excel.
Je rêve d'une automatisation qui récupérerait le tableau de données,
mais je bute sur la première marche.
Comment récupérer 65536 lignes x 30 colonnes qui se trouvent dans la
zone tampon du copié manuel et l'envoyer dans un classeur ?
je voulais m'inspirer de cette macro qui garde les 5 dernières lignes
d'un fichier texte (source Excelabo) :
Sub test()
Dim file_name As String
Dim file_length As Long
Dim fnum As Integer
Dim bytes() As Byte
Dim txt As String
Dim i As Integer
file_name = "F:DocFloessai.txt"
file_length = FileLen(file_name)
f2 = 1000
f1 = file_length - f2
fnum = FreeFile
Open file_name For Binary As #fnum
ReDim bytes(1 To f2)
Get #fnum, f1 + 1, bytes
Close fnum
' Afficher résultats
For i = 1 To f2
txt = txt & Chr(Format$(bytes(i)))
Next i
Debug.Print txt
End Sub
Que dois-je mettre à la place de "F:DocFloessai.txt" pour attraper la
zone ? Faut-il la copier dans un tableau ?
f1 deviendra 65536 et puis beaucoup de tatonnements suivront...
Je n'arrive déjà pas à trouver le nom du buffer pour chercher dans les
archives.
Merci pour l'aide
fetnat
Ce que tu appelles ton logiciel hors office, ADO ou même MsQuery
possèdes un certain nombre de pilote permettant d'extraire directement
les données. Une recherche sur internet auprès du fabricant de ton
application devrait te permettre de savoir si un tel pilote existe et
comment l'installer.
Plus simplement, tu copies tes données dans un fichier NotePad
et tu l'enregistres en lui donnant une extension .csv. après,
tu pourrais utiliser ma procédure pour les 65536 premières lignes.
Et si tu as beaucoup de temps, tu peux regarder là :
http://www.cpearson.com/excel/clipboard.htm
Mais tu devras probablement passer par un fichier .csv comme
intermédiaire avant d'utiliser ma procédure ....
"fetnat" a écrit dans le message de news:
%237InK8$
Bonjour MichDenis,
Je te remercie pour ton aide.
Je fais un copié manuellement des données dans un logiciel AB (le
résulat d'un calcul). Ces données ont un format CSV, mais pour le moment
les données sont dans le buffer du copié-collé.
Si je fais collé dans Excel, ce dernier se plante car j'ai 115 000 lignes.
Si j'utilise la fonction d'extraction du logiciel AB vers un fichier
CSV, c'est le logiciel AB qui se plante.
Tant que j'envoie les données dans le buffer, je garde la main et les
données sont dans le buffer.
Comment modifier ta sub pour collé les 65536 premières lignes du buffer,
dans un fichier csv ou bien dans un classeur Excel ?
Je suis désolé de ne pas avoir été plus clair dans mes explications.
Cordialement
fetnatPour n'importer que les 65536 premières lignes d'un fichier .csv dans une feuille excel :
Tu dois ajouter à ton projet la bibliothèque suivante :
"Microsoft Activex Data Objects librairy 2.x"
Fenêtre de l'éditeur de code / barre des menus / outils / références/
'-------------------------------------------
Sub MaRequête1()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, Rg As Range
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:;" & _ ' Chemin où est le fichier seulement
"Extended Properties=""text;HDR=No;FMTÞlimited"""
Requete = "SELECT TOP 65536 * From test.csv" 'nom du fichier seulement
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie des données vers la "Feuil2") nom à adapter ...
Set Rg = Worksheets("Feuil2").Range("A1")
Rg.CopyFromRecordset Rst
Rst.Close: Conn.Close
Set Rg = Nothing
End Sub
'------------------------------------------------
"fetnat" a écrit dans le message de news:
eudT73%
Bonjour,
Le résultat d'un calcul dans un logiciel (hors office) apparait sous la
forme CSV.
Le nombre de lignes de ce résultat est variable mais il dépasse 65536.
Il y a une trentaine de colonnes.
Si je fais un copié-collé, le copié se passe bien mais le collé plante
tout, le logiciel et Excel.
Je rêve d'une automatisation qui récupérerait le tableau de données,
mais je bute sur la première marche.
Comment récupérer 65536 lignes x 30 colonnes qui se trouvent dans la
zone tampon du copié manuel et l'envoyer dans un classeur ?
je voulais m'inspirer de cette macro qui garde les 5 dernières lignes
d'un fichier texte (source Excelabo) :
Sub test()
Dim file_name As String
Dim file_length As Long
Dim fnum As Integer
Dim bytes() As Byte
Dim txt As String
Dim i As Integer
file_name = "F:DocFloessai.txt"
file_length = FileLen(file_name)
f2 = 1000
f1 = file_length - f2
fnum = FreeFile
Open file_name For Binary As #fnum
ReDim bytes(1 To f2)
Get #fnum, f1 + 1, bytes
Close fnum
' Afficher résultats
For i = 1 To f2
txt = txt & Chr(Format$(bytes(i)))
Next i
Debug.Print txt
End Sub
Que dois-je mettre à la place de "F:DocFloessai.txt" pour attraper la
zone ? Faut-il la copier dans un tableau ?
f1 deviendra 65536 et puis beaucoup de tatonnements suivront...
Je n'arrive déjà pas à trouver le nom du buffer pour chercher dans les
archives.
Merci pour l'aide
fetnat
Plus simplement, tu copies tes données dans un fichier NotePad
et tu l'enregistres en lui donnant une extension .csv. après,
tu pourrais utiliser ma procédure pour les 65536 premières lignes.
Ce que tu appelles ton logiciel hors office, ADO ou même MsQuery
possèdes un certain nombre de pilote permettant d'extraire directement
les données. Une recherche sur internet auprès du fabricant de ton
application devrait te permettre de savoir si un tel pilote existe et
comment l'installer.
Plus simplement, tu copies tes données dans un fichier NotePad
et tu l'enregistres en lui donnant une extension .csv. après,
tu pourrais utiliser ma procédure pour les 65536 premières lignes.
Et si tu as beaucoup de temps, tu peux regarder là :
http://www.cpearson.com/excel/clipboard.htm
Mais tu devras probablement passer par un fichier .csv comme
intermédiaire avant d'utiliser ma procédure ....
"fetnat" a écrit dans le message de news:
%237InK8$
Bonjour MichDenis,
Je te remercie pour ton aide.
Je fais un copié manuellement des données dans un logiciel AB (le
résulat d'un calcul). Ces données ont un format CSV, mais pour le moment
les données sont dans le buffer du copié-collé.
Si je fais collé dans Excel, ce dernier se plante car j'ai 115 000 lignes.
Si j'utilise la fonction d'extraction du logiciel AB vers un fichier
CSV, c'est le logiciel AB qui se plante.
Tant que j'envoie les données dans le buffer, je garde la main et les
données sont dans le buffer.
Comment modifier ta sub pour collé les 65536 premières lignes du buffer,
dans un fichier csv ou bien dans un classeur Excel ?
Je suis désolé de ne pas avoir été plus clair dans mes explications.
Cordialement
fetnatPour n'importer que les 65536 premières lignes d'un fichier .csv dans une feuille excel :
Tu dois ajouter à ton projet la bibliothèque suivante :
"Microsoft Activex Data Objects librairy 2.x"
Fenêtre de l'éditeur de code / barre des menus / outils / références/
'-------------------------------------------
Sub MaRequête1()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, Rg As Range
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:;" & _ ' Chemin où est le fichier seulement
"Extended Properties=""text;HDR=No;FMTÞlimited"""
Requete = "SELECT TOP 65536 * From test.csv" 'nom du fichier seulement
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie des données vers la "Feuil2") nom à adapter ...
Set Rg = Worksheets("Feuil2").Range("A1")
Rg.CopyFromRecordset Rst
Rst.Close: Conn.Close
Set Rg = Nothing
End Sub
'------------------------------------------------
"fetnat" a écrit dans le message de news:
eudT73%
Bonjour,
Le résultat d'un calcul dans un logiciel (hors office) apparait sous la
forme CSV.
Le nombre de lignes de ce résultat est variable mais il dépasse 65536.
Il y a une trentaine de colonnes.
Si je fais un copié-collé, le copié se passe bien mais le collé plante
tout, le logiciel et Excel.
Je rêve d'une automatisation qui récupérerait le tableau de données,
mais je bute sur la première marche.
Comment récupérer 65536 lignes x 30 colonnes qui se trouvent dans la
zone tampon du copié manuel et l'envoyer dans un classeur ?
je voulais m'inspirer de cette macro qui garde les 5 dernières lignes
d'un fichier texte (source Excelabo) :
Sub test()
Dim file_name As String
Dim file_length As Long
Dim fnum As Integer
Dim bytes() As Byte
Dim txt As String
Dim i As Integer
file_name = "F:DocFloessai.txt"
file_length = FileLen(file_name)
f2 = 1000
f1 = file_length - f2
fnum = FreeFile
Open file_name For Binary As #fnum
ReDim bytes(1 To f2)
Get #fnum, f1 + 1, bytes
Close fnum
' Afficher résultats
For i = 1 To f2
txt = txt & Chr(Format$(bytes(i)))
Next i
Debug.Print txt
End Sub
Que dois-je mettre à la place de "F:DocFloessai.txt" pour attraper la
zone ? Faut-il la copier dans un tableau ?
f1 deviendra 65536 et puis beaucoup de tatonnements suivront...
Je n'arrive déjà pas à trouver le nom du buffer pour chercher dans les
archives.
Merci pour l'aide
fetnat
Plus simplement, tu copies tes données dans un fichier NotePad
et tu l'enregistres en lui donnant une extension .csv. après,
tu pourrais utiliser ma procédure pour les 65536 premières lignes.
Ce que tu appelles ton logiciel hors office, ADO ou même MsQuery
possèdes un certain nombre de pilote permettant d'extraire directement
les données. Une recherche sur internet auprès du fabricant de ton
application devrait te permettre de savoir si un tel pilote existe et
comment l'installer.
Plus simplement, tu copies tes données dans un fichier NotePad
et tu l'enregistres en lui donnant une extension .csv. après,
tu pourrais utiliser ma procédure pour les 65536 premières lignes.
Et si tu as beaucoup de temps, tu peux regarder là :
http://www.cpearson.com/excel/clipboard.htm
Mais tu devras probablement passer par un fichier .csv comme
intermédiaire avant d'utiliser ma procédure ....
"fetnat" <fetnat@caramail.com> a écrit dans le message de news:
%237InK8$vIHA.3380@TK2MSFTNGP03.phx.gbl...
Bonjour MichDenis,
Je te remercie pour ton aide.
Je fais un copié manuellement des données dans un logiciel AB (le
résulat d'un calcul). Ces données ont un format CSV, mais pour le moment
les données sont dans le buffer du copié-collé.
Si je fais collé dans Excel, ce dernier se plante car j'ai 115 000 lignes.
Si j'utilise la fonction d'extraction du logiciel AB vers un fichier
CSV, c'est le logiciel AB qui se plante.
Tant que j'envoie les données dans le buffer, je garde la main et les
données sont dans le buffer.
Comment modifier ta sub pour collé les 65536 premières lignes du buffer,
dans un fichier csv ou bien dans un classeur Excel ?
Je suis désolé de ne pas avoir été plus clair dans mes explications.
Cordialement
fetnat
Pour n'importer que les 65536 premières lignes d'un fichier .csv dans une feuille excel :
Tu dois ajouter à ton projet la bibliothèque suivante :
"Microsoft Activex Data Objects librairy 2.x"
Fenêtre de l'éditeur de code / barre des menus / outils / références/
'-------------------------------------------
Sub MaRequête1()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, Rg As Range
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:;" & _ ' Chemin où est le fichier seulement
"Extended Properties=""text;HDR=No;FMTÞlimited"""
Requete = "SELECT TOP 65536 * From test.csv" 'nom du fichier seulement
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie des données vers la "Feuil2") nom à adapter ...
Set Rg = Worksheets("Feuil2").Range("A1")
Rg.CopyFromRecordset Rst
Rst.Close: Conn.Close
Set Rg = Nothing
End Sub
'------------------------------------------------
"fetnat" <fetnat@caramail.com> a écrit dans le message de news:
eudT73%23vIHA.2208@TK2MSFTNGP04.phx.gbl...
Bonjour,
Le résultat d'un calcul dans un logiciel (hors office) apparait sous la
forme CSV.
Le nombre de lignes de ce résultat est variable mais il dépasse 65536.
Il y a une trentaine de colonnes.
Si je fais un copié-collé, le copié se passe bien mais le collé plante
tout, le logiciel et Excel.
Je rêve d'une automatisation qui récupérerait le tableau de données,
mais je bute sur la première marche.
Comment récupérer 65536 lignes x 30 colonnes qui se trouvent dans la
zone tampon du copié manuel et l'envoyer dans un classeur ?
je voulais m'inspirer de cette macro qui garde les 5 dernières lignes
d'un fichier texte (source Excelabo) :
Sub test()
Dim file_name As String
Dim file_length As Long
Dim fnum As Integer
Dim bytes() As Byte
Dim txt As String
Dim i As Integer
file_name = "F:DocFloessai.txt"
file_length = FileLen(file_name)
f2 = 1000
f1 = file_length - f2
fnum = FreeFile
Open file_name For Binary As #fnum
ReDim bytes(1 To f2)
Get #fnum, f1 + 1, bytes
Close fnum
' Afficher résultats
For i = 1 To f2
txt = txt & Chr(Format$(bytes(i)))
Next i
Debug.Print txt
End Sub
Que dois-je mettre à la place de "F:DocFloessai.txt" pour attraper la
zone ? Faut-il la copier dans un tableau ?
f1 deviendra 65536 et puis beaucoup de tatonnements suivront...
Je n'arrive déjà pas à trouver le nom du buffer pour chercher dans les
archives.
Merci pour l'aide
fetnat
Plus simplement, tu copies tes données dans un fichier NotePad
et tu l'enregistres en lui donnant une extension .csv. après,
tu pourrais utiliser ma procédure pour les 65536 premières lignes.
Ce que tu appelles ton logiciel hors office, ADO ou même MsQuery
possèdes un certain nombre de pilote permettant d'extraire directement
les données. Une recherche sur internet auprès du fabricant de ton
application devrait te permettre de savoir si un tel pilote existe et
comment l'installer.
Plus simplement, tu copies tes données dans un fichier NotePad
et tu l'enregistres en lui donnant une extension .csv. après,
tu pourrais utiliser ma procédure pour les 65536 premières lignes.
Et si tu as beaucoup de temps, tu peux regarder là :
http://www.cpearson.com/excel/clipboard.htm
Mais tu devras probablement passer par un fichier .csv comme
intermédiaire avant d'utiliser ma procédure ....
"fetnat" a écrit dans le message de news:
%237InK8$
Bonjour MichDenis,
Je te remercie pour ton aide.
Je fais un copié manuellement des données dans un logiciel AB (le
résulat d'un calcul). Ces données ont un format CSV, mais pour le moment
les données sont dans le buffer du copié-collé.
Si je fais collé dans Excel, ce dernier se plante car j'ai 115 000 lignes.
Si j'utilise la fonction d'extraction du logiciel AB vers un fichier
CSV, c'est le logiciel AB qui se plante.
Tant que j'envoie les données dans le buffer, je garde la main et les
données sont dans le buffer.
Comment modifier ta sub pour collé les 65536 premières lignes du buffer,
dans un fichier csv ou bien dans un classeur Excel ?
Je suis désolé de ne pas avoir été plus clair dans mes explications.
Cordialement
fetnatPour n'importer que les 65536 premières lignes d'un fichier .csv dans une feuille excel :
Tu dois ajouter à ton projet la bibliothèque suivante :
"Microsoft Activex Data Objects librairy 2.x"
Fenêtre de l'éditeur de code / barre des menus / outils / références/
'-------------------------------------------
Sub MaRequête1()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, Rg As Range
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:;" & _ ' Chemin où est le fichier seulement
"Extended Properties=""text;HDR=No;FMTÞlimited"""
Requete = "SELECT TOP 65536 * From test.csv" 'nom du fichier seulement
Rst.Open Requete, Conn, adOpenForwardOnly, adLockOptimistic
'Copie des données vers la "Feuil2") nom à adapter ...
Set Rg = Worksheets("Feuil2").Range("A1")
Rg.CopyFromRecordset Rst
Rst.Close: Conn.Close
Set Rg = Nothing
End Sub
'------------------------------------------------
"fetnat" a écrit dans le message de news:
eudT73%
Bonjour,
Le résultat d'un calcul dans un logiciel (hors office) apparait sous la
forme CSV.
Le nombre de lignes de ce résultat est variable mais il dépasse 65536.
Il y a une trentaine de colonnes.
Si je fais un copié-collé, le copié se passe bien mais le collé plante
tout, le logiciel et Excel.
Je rêve d'une automatisation qui récupérerait le tableau de données,
mais je bute sur la première marche.
Comment récupérer 65536 lignes x 30 colonnes qui se trouvent dans la
zone tampon du copié manuel et l'envoyer dans un classeur ?
je voulais m'inspirer de cette macro qui garde les 5 dernières lignes
d'un fichier texte (source Excelabo) :
Sub test()
Dim file_name As String
Dim file_length As Long
Dim fnum As Integer
Dim bytes() As Byte
Dim txt As String
Dim i As Integer
file_name = "F:DocFloessai.txt"
file_length = FileLen(file_name)
f2 = 1000
f1 = file_length - f2
fnum = FreeFile
Open file_name For Binary As #fnum
ReDim bytes(1 To f2)
Get #fnum, f1 + 1, bytes
Close fnum
' Afficher résultats
For i = 1 To f2
txt = txt & Chr(Format$(bytes(i)))
Next i
Debug.Print txt
End Sub
Que dois-je mettre à la place de "F:DocFloessai.txt" pour attraper la
zone ? Faut-il la copier dans un tableau ?
f1 deviendra 65536 et puis beaucoup de tatonnements suivront...
Je n'arrive déjà pas à trouver le nom du buffer pour chercher dans les
archives.
Merci pour l'aide
fetnat