Extraire colonnes d'un fichier Excel en fonction de leur en-tête
Résolu/Fermé
Pedritto
Messages postés
1
Date d'inscription
jeudi 12 décembre 2013
Statut
Membre
Dernière intervention
12 décembre 2013
-
12 déc. 2013 à 05:14
Fred - 27 janv. 2023 à 17:57
Fred - 27 janv. 2023 à 17:57
A voir également:
- Extraire des données d'un tableau excel vers un autre tableau
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Trier un tableau excel - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
3 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
Modifié par pijaku le 12/12/2013 à 08:54
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
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
13 déc. 2013 à 08:20
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
27 janv. 2023 à 17:57
Bonjour, même plusieurs années après cela sert :)
Simplement un grand merci!