Création TCD impossible

Bonjour à tous,
J’ai créé un tableau et je souhaite créer sous mon tableau un TCD mais j’ai un message d’erreur.
Pouvez-vous m’aider svp ?
Merci beaucoup.

Suivi traitements.xlsx (9,8 Ko)

J’ai trouvé mon erreur. Cependant je voudrais que mes données soient comptabilisées par :

  • Année
  • Date
  • Taux TSH

impossibe, il faut (avec vba ou PQ) dépivoter vos données dans un nouveau tableau avec leur Propre unité, parce que cela me semble un problème majeur. (autre format, cellules fusionnées, …)

oh là, je ne sais pas faire. Pas grave. Je vais laisser comme ça.
Merci pour la réponse.

un essai
Suivi traitements.xlsm (35,6 Ko)

Ok merci. Je suis entrain de regarder. Pourquoi pas. Par contre lorsque je renseigne une nouvelle valeur dans mon tableau initial je recréé mon TCD et pour les 2 tableaux dans le 2ème onglet ?

quand vous quittez la feuille « Contrôle TSH », une macro dépivot vos données dans le tableau structuré de BDD et renouvelle le TCD.
Y-a-t-il un clé de conversion entre 0.00 ng / dL, 0.00 pg / mL et 0.00 pmol / L
pico et nano, cela est assez facile, mais pmol vers g, je ne connais pas le chiffre (129… + position virgule).
Voulez-vous que je les converse vers un chiffre global ?

Bonjour,
Finalement, j’ai modifié mon tableau car j’ai des valeurs inutiles.
On peut éventuellement les converser pour voir ce que ça donne.

Copie de Suivi traitements.xlsm (25,0 Ko)

les poids molaire sont disparu ou inutiles ?
J’ai des problèmes de mise en plage dans le TCD pour les chiffres conversé, cela donne de la confusion.concernant l’unité. Mais vous pouvez voir la colonne E.
Copie de Suivi traitements (1).xlsm (39,5 Ko)

Comment avez-vous créer la base de données ? J’aimerais bien me familiariser avec cela…

ici la macro

Sub DŽpivoter()
     Dim aConcat, aConverser, Hormon, Unité1, Valeur, X

     With Range("TBL_Clef").ListObject       'ce tableau dans la feuille "conversion"
          aConcat = .ListColumns("Concat").DataBodyRange.Value     '"contenu de la colonne "Concat"
          aConverser = .ListColumns("Unité1/unité2").DataBodyRange.Value     'contenu de la colonne Unité1/Unité2
     End With

     Set dict = CreateObject("scripting.dictionary")     'ouvrir un dictionaire pour mémoriser les résultats
     With Sheets("contrôle TSH")             'la feuille avec les données
          For Each c In .UsedRange.SpecialCells(xlConstants)     'boucler toutes les cellules non-vides et non-formules
               If c.Row > 1 And c.Column > 1 And IsNumeric(c) Then     'elles ne sont pas dans la colonne 1 ou ligne 1
                    Hormon = c.Offset(, 1 - c.Column).MergeArea.Cells(1).Value     'le hormon dans la colonne A (même cellules fusionnées)
                    Unité1 = Replace(c.NumberFormat, """", "")     'le format utilisé dans cette cellule
                    Valeur = c.Value         'le contenu de cette cellule
                    s = Hormon & "|" & Unité1 & "|0.00 pg / mL"     'string pour traduire votre hormon et unité vers "pg/ml"
                    'MsgBox s & vbLf & aConcat(3, 1) & vbLf & "ALL|" & Unité1 & "|0.00 pg / mL"
                    r = Application.Match(Hormon & "|" & Unité1 & "|0.00 pg / mL", aConcat, 0)     'rechercher dans concat
                    If Not IsNumeric(r) Then r = Application.Match("ALL|" & Unité1 & "|0.00 pg / mL", aConcat, 0)     'essayer le concat pour tous les hormons
                    If IsNumeric(r) Then X = Valeur / aConverser(r, 1) Else X = ""     'calculer la conversion global

                    dict.Add dict.Count, Array(Hormon, c.Offset(1 - c.Row).Value2, Valeur, Replace(c.NumberFormat, """", ""), X, c.Address(0, 0))     'mémoriser dans le dictionire : hormon, date, valeur, unité, valeur global, adresse cellule
               End If
          Next
     End With

     With Range("BDD").ListObject            'dans ce tableau
          If .ListRows.Count Then .DataBodyRange.Delete     ' RAZ
          If dict.Count > 1 Then .ListRows.Add.Range.Resize(dict.Count, 6).Value = Application.Index(dict.items, 0, 0)     'ajouter les résultats du dictionaire
     End With

     ThisWorkbook.RefreshAll                 'renouveller le TCD
End Sub

Copie de Suivi traitements (1).xlsm (40,8 Ko)

Je ne connais pas les macros… :slightly_frowning_face:
Par contre quand je renseigne une nouvelle valeur dans mon tableau initial, ma BDD va se mettre à jour automatiquement ?

Se mettre à jour automatique, non, il faut lancer la macro (petit bouton bleu ou avec ALT+F8 et la macro « dépivoter ») oubien il faut la lancer automatiquement avec un évent "desactiver la feuille « Contrôle TSH ».(présent dans ce fichier)
Copie de Suivi traitements (1).xlsm (42,3 Ko)

En fait j’utilise Excel sur Mac donc c’est probablement différent.
Voilà ce que j’ai lorsque je clique sur le bouton « macro »

Bonjour,
Une autre suggestion, sans VBA,

Copie de Suivi traitements.xlsx (29,1 Ko)

Cordialement

Merci Will-Fread,
Par contre, lorsque je vais rajouter d’autres valeurs pour les années suivantes, comment dois-je procéder pour que mon onglet « synthèse » se mette à jour ?
Cela me semble plus simple pour moi à utiliser.

Clic droit sur le TCD et Actualiser
image
Cordialement

J’ai fait un test, ça ne fonctionne pas… :slightly_frowning_face:

Copie de Suivi traitements.xlsx (22,3 Ko)

Pouvez-vous me faire une capture de comment vous l’avez actualiser, si non, vous avez quelle version d’Excel?, la fonction que j’ai utilisé pour transposer ce tableau est disponible qu’avec la version 365

Voici les captures écran. J’utilise microsoft 365 pour Mac, j’ai une licence.