Sélectionner une plage de données en fonction des en-têtes de colonnes

OOLIVE

XLDnaute Occasionnel
Bonjour à tous,

je viens de créer une macro me permettant de traiter une extraction brute d'un logiciel.

Je l'ai adapté en fonction de ce que j'obtenais dans mon extraction et j'ai voulu la mettre en réseau pour faciliter la vie à mes collègues!

Cependant, en faisant un test, j'ai oublié que l'extraction obtenue depend des paramètres que chacun :s

j'aimerais donc savoir s'il était possible de sélectionner des colonnes en fonction de leur en-tête afin de les copier dans un nouvel onglet ?

Merci à tous pour votre aide. :)
 

Victor21

XLDnaute Barbatruc
Re : Sélectionner une plage de données en fonction des en-têtes de colonnes

Bonjour, OOLIVE

j'aimerais donc savoir s'il était possible de sélectionner des colonnes en fonction de leur en-tête afin de les copier dans un nouvel onglet ?

Oui, c'est possible. Désirez-vous que nous vous fournissions un exemple qui a peu de chance de vous convenir, ou préférez-vous nous joindre un court extrait de votre fichier afin que nous adaptions notre réponse à votre problématique ?
 

OOLIVE

XLDnaute Occasionnel
Re : Sélectionner une plage de données en fonction des en-têtes de colonnes

Bonjour Victor21,

Merci de ton intérêt. J'aurais volontier joint mon code ou fichier mais cela sera peu utile puisque je dois y intégrer la partie concernant la sélection des colonnes...

Ce que j'aimerais réussir à faire, c'est par exemple :

on a un fichier contenant des entêtes "header1" en A1, "header2" en b1 etc.. jusqu'à "headern" en N1

Dans ces entêtes, ceux qui m'interessent sont uniquement header2, header3 & header5. Je voudrais donc copier les colonnes correspondant à header2, header3 & header5 dans un nouvel onglet.

Un exempl serait pas mal.. ça me permettrait de comprendre le code en l'adaptant à ms besoins. :)
 

vgendron

XLDnaute Barbatruc
Re : Sélectionner une plage de données en fonction des en-têtes de colonnes

Bonjour à tous..

ci dessous le code qui permet de sélectionner la colonne qui contient l'entete "Entete1"

à adapter à votre exemple...

Code:
Sub ChoixEntete()

NomEntete = "Entete1"

Set c = ActiveSheet.Range("1:20000").Find(NomEntete)
If Not c Is Nothing Then
    col = c.Column
    Columns(col).Select
End If

End Sub
 

Dranreb

XLDnaute Barbatruc
Re : Sélectionner une plage de données en fonction des en-têtes de colonnes

Bonjour.

J'ai un vieux classeur que je n'ai plus retouché depuis longtemps. Voyez ce que vous pouvez en tirer.
 

Pièces jointes

  • Importations.xls
    76 KB · Affichages: 50
  • Importations.xls
    76 KB · Affichages: 46
  • Importations.xls
    76 KB · Affichages: 54

OOLIVE

XLDnaute Occasionnel
Re : Sélectionner une plage de données en fonction des en-têtes de colonnes

Merci pour l'exemple,

Cependant, est-il possible de sélectionner la colonne de l'entête jusqu'à la dernière cellule de la plage via end.xldown ?

merci
 

OOLIVE

XLDnaute Occasionnel
Re : Sélectionner une plage de données en fonction des en-têtes de colonnes

Bonjour Dranred,

Je viens de fouiner dans ton fichier et..OUCH.. C'ets bien au-dessus de mes compétences ^^!

Maisje vais fouiner et essayer de trouver mon bonheur.

Merci encore.
 

Yaloo

XLDnaute Barbatruc
Re : Sélectionner une plage de données en fonction des en-têtes de colonnes

Bonjour OOLIVE, le forum,

C'est quand même plus simple quand c'est le demandeur qui fournit un fichier (comme le dit Victor21 :D).
Quand tu fais l'enregistreur de macro cela te donne ça :
VB:
Option Explicit

Sub Macro1()
'
' Macro1 Macro
'

'
    Range("B:B,C:C,E:E").Select
    Range("F1").Activate
    Selection.Copy
    Sheets.Add After:=ActiveSheet
    Columns("A:A").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
End Sub
tu peux simplifier comme ceci :
VB:
Sub CopierCol()
    Range("B:B,C:C,E:E").Copy
    Sheets.Add After:=ActiveSheet
    ActiveSheet.Paste
    Application.CutCopyMode = False
End Sub

Nettement plus simple que la version de Dranreb (que je salue) :)

A+

Martial
 

vgendron

XLDnaute Barbatruc
Re : Sélectionner une plage de données en fonction des en-têtes de colonnes

Euh.. tu voulais sélectionner une colonne.. maintenant. tu veux juste la zone située en dessous de l'entete..
d'ou l'intéret de ton fichier exemple..

Code:
Sub ChoixEntete()

NomEntete = "Entete1"

Set c = ActiveSheet.Range("1:20000").Find(NomEntete)
If Not c Is Nothing Then
    Range(c, c.End(xlDown)).Select
End If

End Sub
 

OOLIVE

XLDnaute Occasionnel
Re : Sélectionner une plage de données en fonction des en-têtes de colonnes

Bonjour Yaloo,

J'aurais souhaité joindre un fichier (beaucoup plus attractif en plus) mais je ne vois pas comment procéder.

J'avais essayé de faire un enregistrement macro mais le problème ici et que, en fonction des utilisateurs, le header2 par exemple peut se trouver en colonne B ou en Colonne D etc.


Vgendron, Merci pour ce complément d'informations, je vais réussir à l'adapter :)
Et pour info, non, je ne cherche pas qu'une colonne mais plusieurs.. Je vais juste essayer d'adapter ce code à mes besoins (un peu de réflexion ne me fera pas de mal :))

Meric à tous.
 

vgendron

XLDnaute Barbatruc
Re : Sélectionner une plage de données en fonction des en-têtes de colonnes

pour joindre ton fichier, il faut aller en mode avancé, le bouton sous la fenetre que tu utilises pour écrire ton post
ensuite.. joindre un fichier, envoyer, fermer fenetre et envoyer réponse
 

Yaloo

XLDnaute Barbatruc
Re : Sélectionner une plage de données en fonction des en-têtes de colonnes

Re à tous, bonjour Hasco,

@ Hasco, c'est ton système de tableau, généralement je n'y pense pas :mad:
@ OOLIVE sinon par macro plus longue.
VB:
Sub CopieCol()
Dim i&, j&, a(), Ws As Worksheet
a = Array("Entete 2", "Entete 3", "Entete 5")
Set Ws = Sheets.Add
j = 1
ReDim td(UBound(a))
For i = 0 To UBound(a)
  If Not IsError(Application.Match(a(i), Rows(1), 0)) Then
    Columns(Application.Match(a(i), Rows(1), 0)).Copy Ws.Columns(j)
    j = j + 1
  End If
Next
Sheets(Ws.Name).Move After:=Sheets(Sheets.Count)
End Sub
a placer dans la feuille concernée.

A+

Martial
 

Pièces jointes

  • Copie colonnes.xlsm
    19.8 KB · Affichages: 61

Discussions similaires

Statistiques des forums

Discussions
312 044
Messages
2 084 832
Membres
102 685
dernier inscrit
med_remi021