Bonjour le forum
j'ai besoin de récupérer des données (adresses) contenues dans 3 fichiers(mais parfois 2 ou simplement 1 seul) différents et de les compiler dans un quatrième (celui qui contient la macro). J'ai un code qui extrait bien les données pour chaque fichier, mais je dois le lancer à chaque fois et ce code me colle les colonnes extraites à suivre vers la droite, alors que moi je voudrais qu'elles soient collées en descendant.
je me demande si il ne serait pas possible de lancer qu'une seule fois la macro pour qu'elle m'extrait les données des fichiers présents dans un dossiers définit soit 3 fichiers, ou 2 ou un seul.
Sub ImporterColonnes()
Dim Fichier, WbkCopy As Workbook, WbkColle As Workbook
Dim Colonnes(), Col As Integer, Resultat As Variant
'On attribue à la variable WbkColle le fichier actuel (celui qui contient la macro)
Set WbkColle = ThisWorkbook
'Nom des entêtes de colonnes à importer
Colonnes = Array("id_metier_site", "num_voie", "lib_num_cpt_adr", "nom_com", "nom_voie")
'Sélection du fichier
Fichier = Application.GetOpenFilename("Fichiers Excels, *.xls*")
'En cas de clic sur "ANNULER"
If Fichier <> False Then
'On ouvre le fichier en question
Set WbkCopy = Workbooks.Open(Fichier)
With WbkCopy.Sheets("Appui FTTH") '==> ADAPTER NOM de la feuille
'Boucle sur toutes les entêtes des colonnes
For Col = 1 To .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
'teste si l'entête correspond à un des noms des colonnes à copier
Resultat = Application.Match(.Cells(1, Col), Colonnes, 0)
'Si l'entête est trouvée (colonne à copier)
If Not IsError(Resultat) Then
'Copié - Collé ==> ADAPTER NOM de la feuille ou coller ("TRUC" à remplacer)
.Columns(Col).Copy WbkColle.Sheets("Feuil1").Cells(1, Cells.Columns.Count).End(xlToLeft).Offset(0, 1)
End If
Next Col
End With
WbkCopy.Close
End If
Set WbkCopy = Nothing
Set WbkColle = Nothing
End Sub
Les trois dossiers s'appellent (et la feuille unique à l'intérieur)
Chambre FTTH; Appui FTTH et Appui ERDF
Ceux sont des fichiers d'import en csv
J'ai créer un code qui les transforme en *.txt, puis les ouvrent et les enregistrent en *.xlsx, ceci afin de récupérer les données intactes et sans "@e" ou autres à la place des "é" ou "è".
Mais là aussi je pense qu'il va falloir boucler
d'avance je vous remercie pour votre aide