Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro Copier coller données récupérées .TXT

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

chris6999

XLDnaute Impliqué
Bonsoir le FORUM

Je suis en train de créer une macro qui travaille à partir de données sélectionnées depuis un document .txt.
La macro commence par coller les éléments sélectionnés dans mon fichier et là je suis confrontée à un petit problème.
Excel semble perdre cette sélection à moment donné.
Par contre aucun problme lorsque je sélectionne à partir d'un autre fichier excel....


Je ne vois pas trop pourquoi!

Le code est le suivant

Sub MEF()

If Application.CutCopyMode = xlCopy Or Application.CutCopyMode = xlCut Then
Sheets("Mise en Forme").Paste Sheets("Mise en Forme").Range("B1")
Else: MsgBox "aucune selection"

End If

End Sub


Si une bonne âme peut m'expliquer pourquoi?
Cordialement
 

Pièces jointes

Re : Macro Copier coller données récupérées .TXT

Bonjour ,

Le mieux pour un fichier texte est surement d'utiliser les fonctions de lecture ou d'import données :


Voici pour l'appel de la fonction de lecture proposée plus bas .


Code:
sub appelLecture
Dim BufferTexte As String
BufferTexte = ReadFileToBuffer(Dossier & FichierTexte, errCode, errString)

'Ici suite du traitement des données ...


'Fin traitement

et la fonction associée

Code:
' Cette fonction lit le contenu du fichier szFileName et retourne
' ce contenu. En cas d'erreur, elle retourne une chaîne vide et
' renseigne le code d'erreur et la description de l'erreur
Function ReadFileToBuffer(ByVal szFileName As String, _
                                ByRef errCode As Integer, _
                                ByRef errString As String) As String
    Dim f As Integer
    Dim buffer As String

    ' Gère les erreurs
    On Error GoTo ReadFileToBuffer_ERR

    ' Ouverture du fichier en 'Binary'
    f = FreeFile
    Open szFileName For Binary As #f
        ' préallocation d'un buffer à la taille du fichier
        buffer = Space$(LOF(f))
        ' lecture complète du fichier
        Get #f, , buffer
    Close #f
    ReadFileToBuffer = buffer

ReadFileToBuffer_END:
    On Error GoTo 0
    Exit Function
    
ReadFileToBuffer_ERR:
    ' Gestion d'erreur
    ReadFileToBuffer = ""
    errCode = Err.Number
    errString = Err.Description
    Resume ReadFileToBuffer_END
End Function
 
Re : Macro Copier coller données récupérées .TXT

@camarchepas,

D'apres ce que j'ai compris, chris6999 ne veut pas faire de l'import de fichier Texte mais coller une selection en cours (précédement effectuée).
cf. ce Post : https://www.excel-downloads.com/threads/macro-coller-sans-selection.198812/

Ce que je comprends :
- il ouvre le TXT
- il selectionne et copie une (des) cellule(s)
- lance sa macro

Et là ça ne fontionne pas ou fontionne aléatoirement.

chris6999, peux tu confirmer le probleme ?

Sachant que si le fichier TXT est ouvert dans Excel ça devrait fontionner sans probleme ...
 
Re : Macro Copier coller données récupérées .TXT

Bonsoir à tous

Bonsoir

Pour préciser ma demande:

J'ai une première macro qui ouvre le fichier .txt et séletionne et copie l'ensemble des éléments du fichier txt.
La seconde macro en l'occurence MEF celle qui me pose problème :
colle les élements sélectionnés depuis le .txt dans la cellule B1 de ma feuille "mise eN forme"(et puis fait diverses opérations aussi diverses que variées).

A priori je pense que la macro ne reconnaît pas la sélection et c'est pour cela qu'elle ne peut rien coller.
Ce n'est pas aléatoire. C'est systématique.

Je ne sais pas si cela peut aider

Cordialement
 
Re : Macro Copier coller données récupérées .TXT

Bonsoir à tous

Bonsoir

Pour préciser ma demande:

J'ai une première macro qui ouvre le fichier .txt et séletionne et copie l'ensemble des éléments du fichier txt.
La seconde macro en l'occurence MEF celle qui me pose problème :
colle les élements sélectionnés depuis le .txt dans la cellule B1 de ma feuille "mise eN forme"(et puis fait diverses opérations aussi diverses que variées).

A priori je pense que la macro ne reconnaît pas la sélection et c'est pour cela qu'elle ne peut rien coller.
Ce n'est pas aléatoire. C'est systématique.

Je ne sais pas si cela peut aider

Cordialement
 
Re : Macro Copier coller données récupérées .TXT

Bonjour

J'ai fourni la macro dans mon fichier test qui était rattaché à ma question initiale mais je le renvoie.
Pour le fichier .txt on peut prendre n'importe quoi mais j'en ajoute un en PJ.

Donc j'ouvre mon fichier excel test ainsi que le fichier .txt.
Je sélectionne tout le contenu de mon .txt puis je copie cette sélection
Je vais dans dans mon fichier excel et je clique sur le bouton COLLER
La macro ne reconnait pas la sélection et me dit qu'il n'y a rien de sélectionné

Voilà voilà toute l'histoire
J'espère que tu pourras m'aider
Cordialement

Bonsoir,

Il faudrait que tu fournisses la macro et le TXT si possible ...
 

Pièces jointes

Re : Macro Copier coller données récupérées .TXT

Bonjour Chris, @ Gareth Salutations😉

Bon , le Application.CutCopyMode se référe à l'application donc à Excel , c'est pour cela qu'il reste vide puisque ta sélection à lieu dans Bloc note ou autre.

Je te propose une solution un peu plus compliquée utilisant les API windows, solution dont j'use et abuse pour l'échange et le pilotage interlogiciel.

Bon j'arrête mes discours et hop tu copie colle dans un module standard tout neuf.

pour l'utiliser , il faut lancer utilisation aprés avoir copié le texte.

J'ai pas trop le temps là , mais si cela fonctionne comme tu veux , je pourrais essayer de mieux doxumenter le code.

Code:
Option Explicit
Declare Function OpenClipboard Lib "user32" (ByVal Hwnd As Long) As Long
Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long
Declare Function CloseClipboard Lib "user32" () As Long
Declare Function EmptyClipboard Lib "user32" () As Long
Declare Function GetWindow Lib "user32" (ByVal Hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Sub Utilisation()
Dim Controle As String
    Controle = LirePressePapier
    msgbox controle
End Sub

Function LirePressePapier() As String
Dim Tampon As String * 5000
Dim Valeurs As Long
Stop
OpenClipboard GetWindow(0, 0)
Valeurs = GetClipboardData(1)
If Valeurs <> 0 Then
CopyMemory ByVal Tampon, ByVal Valeurs, 5000
LirePressePapier = Left(Tampon, InStr(1, Tampon, Chr(0)) - 1)
Else
LirePressePapier = ""
End If
'Vidage du presse papier
EmptyClipboard
CloseClipboard
End Function
 
Dernière édition:
Re : Macro Copier coller données récupérées .TXT

Bonsoir

Merci de m'avoir donné ta formule magique pour jongler avec les 2 applications.
J'ai copié ton code et lancé la macro mais le système bug sur stop

Est-normal?
Cordialement
 
Re : Macro Copier coller données récupérées .TXT

Bonjour ,

Oui , le stop est là juste pour te monter que l'on peut arreter le code puis observer ce qui ce passe au niveau des varaibles.

Donc maintenant que tu as appris cela , tu peux tout simplement soit le commenter ce STOP avecc un ', soit l'enlever.

Une erreur donc que l'on appelle Ditactitielle, afin de faire progrésser l'ensemble de neofites passant par ce sujet.

Avoir une solution c'est intéressant, la comprendre et pouvoir l'adapter , c'est un peu le but que c'est donné ce forum.
 
Re : Macro Copier coller données récupérées .TXT

Bonsoir

C'était donc un piège pour excelleurs débutants!
Pour être plus sérieux j'ai re-testé la macro après avoir essayé de l'adapter et bien sûr (mais c'est sans surprise) cela n'a pas fonctionné.
En effet la sélection est récupérée dans un cliboard alors que mon objectif est la coller dans ma feuille.
J'avoue que ton code est carrément obscur pour mon niveau.
Cela ne ressemble à rien de ce que j'ai pu adapter jusqu'à présent.

C'est vrai que depuis que j'échange avec les experts du Forum j'ai fait beaucoup de progrès car pour adapter il faut d'abord comprendre.
Là par contre j'assume complètement ma nullité!
Si tu pouvais mettre un peu plus de commentaires peut-être ...

Merci en tous cas
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
715
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…