Créer des colonnes d'un tableau à partir des worsheets

Bonjour,

Voici ce que j'essaye de faire. J'ai un gros tableau avec beaucoup de données. Celles qui m'intéressent particulièrement sont les noms... J'ai réussi --- avec de l'aide ^^ --- à extraire une liste de tous les noms du tableau pour créer un "worksheet" par nom.

J'ai ensuite pu collecter des données propres à chaque noms pour en faire un tableau détaillé.

Donc j'ai un tableau avec plein de données (toutes ne sont pas intéressantes) -> puis plusieurs tableaux détaillés (avec des données précises) -> enfin un tableau récapitulatif nom par nom.

Ce que j'essaie donc de faire c'est regrouper les données de chaque tableau détaillé et les mettre dans un nouveau tableau dont les colonnes seraient le nom. Je veux donc créer une colonne par "worksheet".

Ayant des noms qui peuvent changer, je crée pour le moment les colonnes en avance et je fait une macro qui copie les données dans la colonne si le "worksheet" existe et qui la supprime si non.

Quelqu'un pourrait t-il me dire comment faire?

comment incrémenter les colonnes ?

Bonjour

On comprendrait mieux avec ton fichier

En notant : Ce que j'ai et ce que je veux

Voilà un fichier très simplifié. Frangy m'a déjà aidé pour le début.

Ce que j'ai au départ:

  • Un tableau avec des données: "gens", "appels" et plusieurs autres informations.
  • Un bouton qui crée un onglet par "gens" et qui associe le tableau correspondant avec les "appels" et les autres informations.
  • Un tableau récapitulatif qu'il faut remplir. Pour le moment c'est pas optimal. J'ai fait une macro qui vient dans la colonne "nom1" remplir les informations de l'onglet "nom1". Je dis Range("B2"). Select puis ActiveCell.FormulaR1C1... Du coup je viens chercher dans l'nglet nom1 le nombre de ligne (par exemple)

Ce que je veux.

Une macro qui crée les colonnes du tableau. Je veux que ma macro crée une colonne par onglet et vienne prendre toujours la même information. Par exemple le nombre de ligne.

19exemple-1.xlsm (22.70 Ko)

Bonjour

Sans passer par la case création des feuilles

Merci pour le fichier mais il ne réponds pas complètement à ma question. Je vais essayer de m'en inspirer pour faire mon remplissage du tableau.

En réalité je veux passer par la création de feuille car je dois pouvoir ajouter des moyennes (temps d'appels, temps entre deux appels...). Il faut donc que je sois capable de voir "gens" par "gens" les détails pour savoir où se trouvent les anomalies.

Mes "création de feuille" me permettent de faire ces calculs, de les stocker en une ligne et de venir les mettre dans mon tableau récapitulatif.

J'ai une macro qui remplit le tableau mais comme je le disait précédemment ma solution est un peu bancal. J'ai créer un tableau avec le maximum de personne pouvant être au téléphone (suivant les jours les noms peuvent changer...)

Pour le moment je rempli les personnes présentes uniquement. Cette solution marche mais veut dire que je suis obligé de faire des lignes de codes pour chacun. A chaque nouvelle personne je dois changer le programme....

Ma macro remplissage de tableau ressemble actuellement à:

Function exists(n As String) As Boolean
  exists = False
  For Each Ws In Worksheets
    If n = Ws.Name Then
      exists = True
      Exit Function
    End If
  Next Ws
End Function

Sub Remplissage_tableau()
'
' Remplissage_tableau Macro
'
    Sheets("Rapport").Select

'jean
    If exists("jean") Then
       Range("B2").Select
       ActiveCell.FormulaR1C1 = "=jean!RC[9]"    (temps moyen entre 2 appels)
       Range("B3").Select
       ActiveCell.FormulaR1C1 = "=jean!R[-1]C[6]"         (temps passé au tel)
       Range("B7").Select
       ActiveCell.FormulaR1C1 = "=jean!R[-5]C[3]"            (nombre d'appel total)
       Range("B9").Select
       ActiveCell.FormulaR1C1 = "=jean!R[-7]C[1]"            (nombre d'appel emis)
       Range("B10").Select
       ActiveCell.FormulaR1C1 = "=jean!R[-8]C[8]"            (temps de pause)
    Else: Range("B2:B15").Clear
    End If

Bonjour

Tu aurais mis un exemple de résultat, cela m'aurait éviter de te donner une réponse qui ne te convient pas

A suivre

Bonjour

Excuse moi pour l'incompréhension mais ta réponse me convient partiellement. Elle me donne une nouvelle approche de recherche.

Ca ne marche toujours pas pour le moment mais j'espère que ca va venir.

Encore une fois désolé j'aurai surtout dû insister sur le coté "créations de colonne à partir de classeurs"

Ce qui m'intéresse pour le moment ne sont pas les lignes du tableau mais les colonnes.

A propos des lignes la seule manière que je connais pour les définir est via leurs coordonnées par rapport à la cellule "active". (R[2]C[0]... ou Offset(2,0) qui revient au même)

Est-il possible de directement dire B3 ??

Merci

Bonjour

Edouard151 a écrit :

Ce qui m'intéresse pour le moment ne sont pas les lignes du tableau mais les colonnes.

Utilises la macro jusqu'à la ligne

    Range("B1").Resize(1, Mondico.Count) = Mondico.keys
Edouard151 a écrit :

Est-il possible de directement dire B3 ??

Oui c'est possible

Sub tst()
 Range("A1").Formula = "=Sheet1!B3"
End Sub
Rechercher des sujets similaires à "creer colonnes tableau partir worsheets"