Extraire colonnes d'un fichier Excel en fonction de leur en-tête
Résolu/Fermé
Pedritto
fredroq
- Messages postés
- 1
- Date d'inscription
- jeudi 12 décembre 2013
- Statut
- Membre
- Dernière intervention
- 12 décembre 2013
fredroq
- Messages postés
- 1
- Date d'inscription
- samedi 29 octobre 2016
- Statut
- Membre
- Dernière intervention
- 25 octobre 2017
A voir également:
- Vba extraire des données d'un tableau excel vers un autre tableau
- Extraire des données d'un fichier excel vers un autre - Meilleures réponses
- Extraire colonnes d'un fichier Excel en fonction de leur en-tête ✓ - Forum - VB / VBA
- Ouverture d'un fichier excel en fonction de l'utilisateur ✓ - Forum - Excel
- Comparer deux colonne d'un fichier excel ✓ - Forum - Excel
- Ouvrir fichier excel en fonction d'une cellul ✓ - Forum - Excel
- Intervertir des colonnes dans un fichier excel ✓ - Forum - Excel
3 réponses
pijaku
Modifié par pijaku le 12/12/2013 à 08:54
- Messages postés
- 12257
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 3 septembre 2021
Modifié par pijaku le 12/12/2013 à 08:54
Bonjour,
Voici un exemple :
1- Lire les commentaires,
2- Adapter ce qui doit l'être...
Cordialement,
Franck
Voici un exemple :
1- Lire les commentaires,
2- Adapter ce qui doit l'être...
Option Explicit 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 'A adapter : Nom des entêtes de colonnes à importer Colonnes = Array("Header 1", "Header 2", "Header 3") '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("MACHIN") '==> 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("TRUC").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
Cordialement,
Franck
Bonjour,
Je viens d'essayer le code. Il fonctionne parfaitement, merci.
En revanche, j'aurai un question.
Est-il possible de coller les colonnes a un emplacement précis ?
Cordialement.
Je viens d'essayer le code. Il fonctionne parfaitement, merci.
En revanche, j'aurai un question.
Est-il possible de coller les colonnes a un emplacement précis ?
Cordialement.
Super, merci beaucoup, avec quelques petite manip ca marche parfaitement!
Merci aussi pour les commentaires, ca fait plaisir de comprendre comment ca marche.
Bien cordialement,
Pierre.
Merci aussi pour les commentaires, ca fait plaisir de comprendre comment ca marche.
Bien cordialement,
Pierre.
pijaku
13 déc. 2013 à 08:20
- Messages postés
- 12257
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 3 septembre 2021
13 déc. 2013 à 08:20
Mais de rien.
A+
A+
25 oct. 2017 à 08:55
tout d'abord un grand merci, cela met très utile.
Une question cependant, est il possible de "forcer" l'ordre de recopie des colonnes, dans certaines je souhaiterai la recopie de la valeur et non de la formule (RECHERCHEV etc....)
merci
Fred