Copier un fichier .txt sans décallage de cellules

Bonjour,

Je rencontre un problème avec le C/C d'un fichier .txt sur mon classeur excel.

Lorsque je colle le fichier .txt manuellement tout fonctionne correctement, mais lorsque je veux le faire via macro un énorme décalage se fait sur ma page.

J'ai l'impression que le fichier que je colle ne remplit pas les cases de ma feuille, mais en ajoute ce qui fait un décalage. Voici un exemple avec deux photos la 1ère correspond au collage manuel du fichier .txt, la seconde lorsque j'utilise ma macro :

Manuel : je colle mes données et l'interface à droite qui débute sur la colonne U n'est pas décalée

manuel

Avec ma macro : tout est décalé, la case qui était avant A1 (COLLER ICI LES DONNEES) se retrouve en N1

mcro

Voici la macro que j'utilise pour le copier/coller :

Sub essai()
   Dim Fichier

   Fichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
         If Fichier <> False Then
              Worksheets("Données brutes").QueryTables.Add("TEXT;" & Fichier, Destination:=Range("A1:M300")).Refresh
            Else
                MsgBox "Pour importer des données dans Excel, vous devez choisir un fichier texte !"
        End If
End Sub

Les fichiers .txt collés vont toujours de A à M et peuvent faire maximum 300 lignes (~200/250 habituellement).

Auriez-vous une idée sur commun empêcher le décallage ?

Devery

J'ai l'impression que c'est le caractère utilisé pour décaler ton texte dans le .txt (tabulation je suppose) qui pose problème...

Je ne vois pas comment éviter ce problème... Mais par contre je vois comment le contourner. Je te prépare un bout de code et je re

Edit : Voila le bout de code qui te permettrait de rapatrier toutes tes données en A en supprimant les colonnes insérées... A améliorer peut-être pour que le chiffre 20 que j'ai mis en fixe devienne variable.

Sub MacroDevery()
'
' MacroDevery Macro
'
For Colonne = 2 To 20

    CompteurSuppressions = 0
    For Ligne = 1 To 300
        'Rappatrie toutes les données de la colonne en cours en A
        If Cells(Ligne, Colonne) <> "" Then
        Cells(Ligne, 1) = Cells(Ligne, 1) & Cells(Ligne, Colonne)
        CompteurSuppressions = CompteurSuppressions + 1
        End If
    Next Ligne
    'Supprime la colonne en cours s'il y a eu des suppressions
    If CompteurSuppressions <> 0 Then
    Columns(Colonne).Delete
    CompteurSuppressions = 0
    End If

Next Colonne
'
End Sub

A tester,

Girodo,

Bonjour Girodo, merci pour ta réponse et ta solution !

J'ai testé ta solution, et elle semble fonctionner si j'adapte le nombre de colonne. J'ai également trouvé une solution alternative qui fonctionne :

Sub Bouton2_Cliquer()

   Dim Fichier

   Fichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
         If Fichier <> False Then
   ' crée une requête sur le fichier texte et insère les champs
   ' dans la feuille "Feuil1" en partant de "A1"
              Worksheets("Feuil1").QueryTables.Add("TEXT;" & Fichier, Destination:=Range("A1:M300")).Refresh
            Else
                MsgBox "Pour importer des données dans Excel, vous devez choisir un fichier texte !"
                End If

              Worksheets("Feuil1").Range("A1:M300").Copy
              ActiveWorkbook.Worksheets("Données brutes").Range("A1").PasteSpecial Paste:=xlPasteValues, Transpose:=False
End Sub

J'ai juste copié mon fichier .txt sur une autre page pour ensuite coller le contenu sur ma page principale

Dans tous les cas je vais voir si je peux pas adapter ton programme à mon cas !

Merci pour ton aide et ton temps !

Bonne journée,

Devery

Rechercher des sujets similaires à "copier fichier txt decallage"