Generateur de table

snake332

XLDnaute Nouveau
Bonjour,

Je sollicite votre aide afin d'obtenir plus d’éclaircissement sur ma problématique, voilà je souhaite créer un générateur de tableau, dans un fichier j'ai créer un formulaire, les données son saisie en verticalité, soit
A | B | C

1 Nom de la feuille : ClientCommande
2
3 Nom de la table : ClientCommandesTbl
4
5 Point d'ancrage du tableau : $c$8
6
7 Nombre de colonne à ajouté au Tableau: 5
8
9 Colonne A : ID
10
11 Colonne B : Nom
12
13 Colonne C : Prénom

ect....

Les données son saisies une ligne sur deux par mesure de clarté et de mise en forme du formulaire, comme le montre mon exemple ci-dessus, alors mon problème est très simple, les colonnes (étiquettes du tableau), ne son pas fixe, le nombre pourras variées en fonction du besoin ( Tableau à 3 colonnes, tableau, à 10 colonnes etc)
d'où l’intérêt d'avoir ajouté en ligne 7 Nombre de colonne à ajouté au tableau.

Je souhaiterai créée une macro qui me crée automatiquement le tableau dans la page renseigné (Nom de la feuille), qui ensuite me le renomme automatiquement (Nom de la table), et qui me crée automatiquement les colonnes à ajoutées et me renomme les étiquettes de colonnes.

j'ai réussi à sélectionnée la feuille désiré, à renommé le tableau mais en ce qui concerne la sélection des nom d'étiquettes je bloque.

j'aimerai simplement à partir de la ligne 9 sous condition que les Cellules contenant les nom des étiquettes ne soient pas vides, sélectionné les valeurs ( dans mon exemple : Ligne 9 ID, Ligne 11 Nom, Ligne 13 Prénom) ensuite sélection la feuille de destination et le tableau concerné et bouclé le collage.

Hier, par magie j'ai réussi, avec la boucle for , la condition if et ActiveCell.Offset(2, 0).Select, mais j'ai perdu mon code, et très franchement, je ne me souvient plus comment j'ai fait .

çi joint un exemple du fichier
milles merci d'avances pour vos réponses
 

Pièces jointes

  • brouillon-generateur-table.xlsx
    12.5 KB · Affichages: 57

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Snake, bonsoir le forum,

Peut-être comme ça :

VB:
Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim PL As Range 'déclare la variable PL (PLage)
Dim I As Byte 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)

Set OS = Worksheets("ParametreFeuilleTableF") 'définit l'onglet source OS
Set OD = Worksheets(OS.Range("J7").Value) 'définit l'onglet destination OD
Set PL = OD.Range(OS.Range("J11").Value).Resize(2, OS.Range("J14").Value) 'définit la plage PL
'ajoute un tableau et le nomme
OD.ListObjects.Add(xlSrcRange, PL, , xlYes).Name = OS.Range("J9").Value
J = 17 'initialise la variable J
For I = 1 To OS.Range("J14").Value 'boucles sur tous les en-tête du tableau
    PL.Cells(1, I).Value = OS.Cells(J, 10).Value 'renomme l'en-tête
    J = J + 2 'incrémente J
Next I 'prochain en-tête de la boucle
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 184
dernier inscrit
amiko