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

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

Bonjour Gareth, merci pour ta réponse mais lors de l'excution j'ai ce message

marqueur = false false est surligné
et j'ai une erreur de compilation
"instruction incorrecte à l'extérieur d'une procédure
 

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
 

SDR42

XLDnaute Junior
Re : doublons entetes

Bonsoir Gareth
Pardonne mon ignorance mais pourrais-tu m'expliquer ce code


Code:
Dim Marqueur As Boolean
If Marqueur Then Cells(i, 1).EntireRowDelete: Marqueur = True
    If Marqueur Then Cells(i, 1).Delete
Merci
 

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
301
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…