4 pièce(s) jointe(s)
Formulation par VBA d'une colonne de tableau structuré
Bonjour le Forum,
Soit
Une feuille nommée "Entrée"
...dotée d'un tableau structuré nommé "lebotablo"
...contenant 2 champs "Portf" et "lavaleur"
Pièce jointe 546982
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:
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
Pièce jointe 546990
Dans un 2ème temps, si je conjugue une formulation structurée avec une instruction Evaluate
Code:
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
Pièce jointe 546994
Pourquoi?
Alors qu'une formulation classique
Code:
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).
Pièce jointe 547075
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.
Evaluate(...) non, mais [...] oui
Bonjour Marcel,
Bonjour Eric,
Curieusement, Evaluate ne fonctionne pas mais les [] fonctionnent (je croyais que c'était des syntaxes équivalentes) :
Code:
1 2 3 4 5 6 7 8
| 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 = [maformule]
End With
End Sub |