Boucler à laide des noms de colonnes d'un tableau

Bonsoir le forum

En pièce jointe je fournie un fichier contenant une commande.

Cette commande créée un nouveau document en extrayant des données provenant du tableau de la feuille "sites"

Mon souci, c'est que dans cette feuille qui n'est jamais la même, parfois, souvent, j'ai un décalage de colonne (en plus ou en moins) et de ligne de titre (parfois en 9, en 10 ou 11)

Est-il possible, 1 de définir le nom d'une colonne au lieu de son numéro, et 2 de faire partir la boucle toujours à partir de la première colonne sous la case du titre?

(Cette commande sera à terme dupliquée afin de faire d'autre extractions

je vous remercie d'avance pour votre aide et votre diponibilité

Bonjour,

rapide coup d'oeil (pas le temps et c'est le week end) mais...

- trop de activate d'une feuille à l'autre, il faut éviter ça

- tu appelles "sites" la nouvelle feuille , même nom que celle du premier onglet, c'est ..confusant

ça serait plus facile de dire quelles colonnes (pas leur emplacement mais leurs titres) tu veux copier, et sous quelle(s) condition(s)

et savoir après copie ce que tu veux encore faire dans chaque classeur

P.

Hello

au lieu de

 Lig=10

, tu peux utiliser

Lig = Range("A7").End(xlDown).Row+1

qui devrait résoudre le problème du positionnement de la ligne Dossier.

Bonsoir Patrick1957 et percolator, merci de votre attention

Ok je n'avais pas fais attention pour le nommage de la nouvelle feuille

et c'est bien ça dire ce que je voudrais copier, et dans quelles colonnes portant tel ou tel titre, en commençant juste après la ligne des titres

et non je ne peux pas définir "Lig = Range("A7").End(xlDown).Row+1" puisque des fois le range pourait être en A10 ou d'autres fois en A11

justement cela détectera automatiquement ou commence ton tableau, que ce soit en A10 ou A11

eole-33 a écrit :

Bonsoir Patrick1957 et percolator, merci de votre attention

Ok je n'avais pas fais attention pour le nommage de la nouvelle feuille

et c'est bien ça dire ce que je voudrais copier, et dans quelles colonnes portant tel ou tel titre, en commençant juste après la ligne des titres

et non je ne peux pas définir "Lig = Range("A7").End(xlDown).Row+1" puisque des fois le range pourait être en A10 ou d'autres fois en A11

Tu n'as pas répondu à la question...

Les remarques concernant les "activate" restent valables

Pour connaitre les lignes et colonnes, tu peux faire ceci:

au début de ton code, et tu le fais aller au pas à pas avec F8

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
'-----------------------
A_wbook = ActiveWorkbook.Name
Application.DisplayAlerts = False
Range("A10").Select
Selection.CurrentRegion.Select
Selection.CreateNames Top:=True, Left:=False, Bottom:=False, Right:=False ' nommer toutes les colonnes (il faut des titres <> !)
Application.DisplayAlerts = True

Set Plg = [A10].CurrentRegion

preml = Plg(1).Row               '1° ligne de la plage
dernl = Plg.Rows.Count + preml - 1   'der ligne
premC = Split(Plg(1).Address, "$")(1)  '1° colonne de la plage
dernc = Split(Cells(1, Plg.Columns.Count + Plg(1).Column - 1).Address, "$")(1)

' pour connaitre le n° de la colonne d'un titre nommé plus haut
Col_idpa = [id_pa].Column '
Col_identifiant = [identifiant_pb].Column ' les colonnes peuvent ainsi être à n'importe quel endroit, on en connait le N° 
'------------------

re,

une autre manière de faire, tu devrais avoir plus facile comme ça

P.

15eole33-xlp.xlsm (53.94 Ko)

Bonjour,

Je n'ai pas tout compris de la question, mais ci-joint une proposition pour le principe.

ALT F8 et exécuter la procédure DEMO.

Cdlt.

Bonjour le forum

Bonjour Patrick1957, Percolator et Jean-Eric,

Merci pour votre attention et votre aide

Je vais garder sous le coude le bout de code de Percolator,

J'ai regardé vos deux codes Patrick1957 et Jean-Eric, et il me vont chacun.

Je n'avais pas compris que tu me posais une question Patrick1957 et donc je vous explique pourquoi je cherche à créer cette liste

En pièce jointe je vous rajoute les deux formes de résultats possible lorsque je lance ma commande

Dans la feuille "sites" avec l'Userform au début, je définis le nom de mon dossier, ce nom s'inscrit dans la feuille "sites en "F5",

puis la commande va définir l'"ID PA" ou l'"ID PM" en fonction de ce qui est contenue dans la colonne 'ID PA" si cette colonne est pleine alors en "A5" le code colle la valeur de la première cellule du tableau,

puis lancement de la boucle. en utilisant les colonnes "Dossier", "IdentifiantProcessus", "voie" et "Adresse" concaténée, "Localité", "Bâtiment", "Nb logements".

puis suppression des lignes du nouveau tableau dont le nombre d'el est supérieur à 3 (deux fois car il ne faut pas que je me trompe )

voilà


voici un fichier avec les deux résultats possibles

18resultats.xlsx (17.75 Ko)

Jean-Eric j'ai regarder ton code, c'est super, mais j'aurai besoin d'apporter quelques modifications

Case "Dossier", "Identifiant Processus", "N°", "Voie", "Adresse", "Bâtiment", "Localité", "Nb logements"

j'ai mis à jour la liste ci-dessus des titres de colonnes dont j'ai besoin, mais est-il possible de concaténer voie et adresse avec un espace entre?

Ensuite au lancement du code j'ai un "Userform" avec un "TextBox" dont la valeur saisie devrait être collée dans le nouveau fichier dans colonne "L" pour chaque ligne créée.

A la suite en colonne "M" il faut que je fasse apparaître soit l'ID PA si la colonne est remplie sinon l'ID PM toujours pour chaque ligne créée on pourrait utiliser la valeur de la cellule "A7" de la feuille sites, mais en supprimant "id PA :" et "*" si 'est plus simple.

Pour info la colonne "Id PM" est toujours remplie mais pas forcément la colonne "Id PA". Le choix 1 est toujours l'"Id PA" et à défaut l'"Id PM"

Pour finir, le but de la création de nouveau tableau, c'est de faire associer chaque ligne créée à l'IdentifiantProcessus contenu en colonne "P" donc la également pour chaque ligne créée dans le nouveau fichier, il me faut faire apparaître cette valeur.

Merci pour ton aide et merci pour celle de Patrick 1957 et Percolator

Rechercher des sujets similaires à "boucler laide noms colonnes tableau"