doublons entetes

SDR42

XLDnaute Junior
Bonjour,

Voici mon souci, lors d'une fusion de plusieurs fichiers text j'ai à chaque fois les mêmes entêtes.
Si je fusionne 20 fichiers j'aurais 20 entêtes. J'aurais besoin d'aide pour avoir un seul entête. Je sais que je peux le faire par> donnnées>supprimer les doublons mais j'aurais préféré par vba

Voici la macro, merci d'avance.

Sub test()
Dim Fichier As String, Chemin As String
Dim i As Long
'Cet exemple boucle sur tous les fichiers txt d'un répertoire et regroupe les données, à la suite, dans une feuille de calcul.
'La procédure utilise la propriété QueryTables.


'Répertoire contenant les fichiers
Chemin = "C:\test cegos"
Fichier = Dir(Chemin & "\*.txt")

'Boucle sur les fichiers
Do While Fichier <> ""

i = Range("A65536").End(xlUp).Row + 1
ImportText Chemin & "\" & Fichier, Cells(i, 1)


Fichier = Dir
Loop
End Sub



Sub ImportText(NomFichier As Variant, Cible As Range)
Dim QT As QueryTable

Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & _
NomFichier, Destination:=Cible)
'Destination:=Range("$A$1")) SDR
With QT
'Définit les séparateur de colonnes dans le fichier txt
.TextFileOtherDelimiter = ";"
.TextFileSemicolonDelimiter = True
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.Refresh

.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 2)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
 

Gareth

XLDnaute Impliqué
Re : doublons entetes

Bonjour;

Sans avoir testé, tu peux essayer ceci :

Code:
Sub test()
Dim Fichier As String, Chemin As String
Dim i As Long
'-----------------------------------------------------------
Marqueur = False
'-----------------------------------------------------------
Chemin = "C:\test cegos"
Fichier = Dir(Chemin & "\*.txt")
Do While Fichier <> ""
    i = Range("A65536").End(xlUp).Row + 1
    ImportText Chemin & "\" & Fichier, Cells(i, 1)
    Fichier = Dir
    '-----------------------------------------------------------
    If Marqueur Then Cells(i, 1).Delete : Marqueur = True
    '-----------------------------------------------------------
Loop
End Sub

On supprime les lignes d'entete sauf la premiere.

NB - pense à mettre ton code dans des balises
Code:
 
Dernière édition:

SDR42

XLDnaute Junior
Re : doublons entetes

merci pour la réponse, mais je l'ai plcé mais sans résultat valable.
Peut-être l'ai-je mal placé ?
Code:
Sub test2()
Dim Fichier As String, Chemin As String
Dim i As Long
Dim Marqueur As Boolean
'-----------------------------------------------------------
Marqueur = False
'-----------------------------------------------------------
Chemin = "C:\test cegos"
Fichier = Dir(Chemin & "\*.txt")
Do While Fichier <> ""
    i = Range("A65536").End(xlUp).Row + 1
    ImportText Chemin & "\" & Fichier, Cells(i, 1)
    Fichier = Dir
    '-----------------------------------------------------------
    
    If Marqueur Then Cells(i, 1).EntireRowDelete: Marqueur = True
    If Marqueur Then Cells(i, 1).Delete
    
    '-----------------------------------------------------------
Loop
End Sub
 

Gareth

XLDnaute Impliqué
Re : doublons entetes

Bonsoir,

Marqueur=False
On initialise la variable "Marqueur" à False

If Marqueur Then Cells(i, 1).EntireRowDelete
Si Marqueur=True => on efface la ligne d'entete. Donc la premiere ligne n'est pas effacée

Marqueur = True
On passe le "Marqueur" à True. Les entetes suivants seront effacés.

If Marqueur Then Cells(i, 1).Delete
Normalement cette ligne ne sert à rien, il faut l'enlever ;)
 

Discussions similaires

Réponses
12
Affichages
289

Statistiques des forums

Discussions
312 841
Messages
2 092 708
Membres
105 514
dernier inscrit
Hébera