Bonjour le Forum,

Soit
Une feuille nommée "Entrée"
...dotée d'un tableau structuré nommé "lebotablo"
...contenant 2 champs "Portf" et "lavaleur"

Nom : formules_tablo_struct_1.JPG
Affichages : 190
Taille : 17,5 Ko

Je cherche à reporter les valeurs seules du champ "lavaleur" suite à formulation

Sachant que la formulation de la 1ère cellule de son objet Range incrémente celle de tous les enregistrements, si je procède à l'exécution de la procédure

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Public Sub essai_formula_struc()
 
Dim maformule As String
maformule = "=[@Portf]*2"
 
With ThisWorkbook.Worksheets("Entrée").Range("lebotablo[lavaleur]")
         .ClearContents
         .Cells(1, 1).Formula = maformule
        .Value = .Value
End With
 
End Sub
Ceci en utilisant une formulation "structurée".

alors j'obtiens les bonnes valeurs

Nom : formules_tablo_struct_2.JPG
Affichages : 179
Taille : 16,1 Ko

Dans un 2ème temps, si je conjugue une formulation structurée avec une instruction Evaluate

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Public Sub essai_formula_struc_2()
 
Dim maformule As String
maformule = "=[@Portf]*2"
 
With ThisWorkbook.Worksheets("Entrée").Range("lebotablo[lavaleur]")
         .ClearContents
         .Cells(1, 1).Value = Evaluate(maformule)
End With
 
End Sub
alors le code retourne une erreur #VALEUR!.
Ceci dès la 1ère cellule

Nom : formules_tablo_struct_3.JPG
Affichages : 191
Taille : 15,9 Ko

Pourquoi?
Alors qu'une formulation classique
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Public Sub essai_formula_struc_3()
 
Dim maformule As String
maformule = "=2*3"
 
With ThisWorkbook.Worksheets("Entrée").Range("lebotablo[lavaleur]")
         .ClearContents
         .Value = Evaluate(maformule)
End With
 
End Sub
ne pose aucun problème (la valeur 6 apparaît dans toute la colonne).

Nom : formules_tablo_struct_4.JPG
Affichages : 167
Taille : 15,9 Ko

En résumé, le tableau structuré ne semble pas apprécier l'instruction "Evaluate" basée sur une formulation structurée (Ici "=[@Portf]*2")
2 étapes sont nécessaires
- formulation
- collage de valeurs (.Value = .Value) (Voir 1er code)

Le but de mon propos étant:
- dans une première phase, de reporter les valeurs obtenues ci-dessus par formulation structurée sur toute la colonne directement.
- dans une seconde phase (soit, sans doute, une autre discussion) d'utiliser une fonction adjacente à un type de variable défini (Public lafonction(…) As letype) directement sur une colonne de tableau structuré, sans balayage de cellules.

Merci à vous et bonne soirée.