Affichage / Extinction de "shapes" en VB

Résolu
Bonjour,

Je tente de maitriser l'affichage ou l'extinction de "shapes" tres simples, dans un petit programme d'apprentissage du chinois en utilisant VB.

Mon Problème est le suivant:
Sur une feuille vierge, je dessine une ligne qui se numérote automatiquement en tant que "line 1" (je travaille avec Excel 2003 anglais (boulot))

J'ai construit cette petite macro, qui ne cherche qu'à afficher ou éteindre cette ligne 1
- elle refuse de tourner avec:
ActiveSheet.Shapes(TonVal).Visible (géneration d'une erreur sur cette ligne)
- mais elle tourne bien avec:
ActiveSheet.Shapes("1").Visible

Comme j'ai beaucoup de "line" ou "group", je tiens à conserver TonVal en variable.

Pas trouvé sur le Net un exemple similaire
=> Quelqu'un aurait-il une solution ?

============================
Sub Macro2()
'
' Macro2 Macro
' Macro recorded 11-06-2010 by mcollod
'
Dim tableauton(1 To 4, 1 To 4) As Integer
'Allocation des shapes
tableauton(1, 1) = "1"
tableauton(1, 2) = "35"
tableauton(1, 3) = "36"
tableauton(1, 4) = "39"
tableauton(2, 1) = "62"
tableauton(2, 2) = "66"
tableauton(2, 3) = "51"
tableauton(2, 4) = "50"
tableauton(3, 1) = "63"
tableauton(3, 2) = "67"
tableauton(3, 3) = "54"
tableauton(3, 4) = "60"
tableauton(4, 1) = "64"
tableauton(4, 2) = "68"
tableauton(4, 3) = "57"
tableauton(4, 4) = "61"

' extinction de tous les tons

For k = 1 To 4

TonVal = """" & tableauton(k, 1) & """"

MsgBox TonVal

ActiveSheet.Shapes("1").Visible = msoFalse 'choisir l'une des 2 lignes
' ActiveSheet.Shapes(TonVal).Visible = msoTrue

Next k

End Sub

2 réponses

  1. Salut
    Sub Macro2()
    '
    ' Macro2 Macro
    ' Macro recorded 11-06-2010 by mcollod
    '
    Dim tableauton(1 To 4, 1 To 4) As Integer
    'Allocation des shapes
    tableauton(1, 1) = 1
    tableauton(1, 2) = 35
    tableauton(1, 3) = 36
    tableauton(1, 4) = 39
    tableauton(2, 1) = 62
    tableauton(2, 2) = 66
    tableauton(2, 3) = 51
    tableauton(2, 4) = 50
    tableauton(3, 1) = 63
    tableauton(3, 2) = 67
    tableauton(3, 3) = 54
    tableauton(3, 4) = 60
    tableauton(4, 1) = 64
    tableauton(4, 2) = 68
    tableauton(4, 3) = 57
    tableauton(4, 4) = 61

    ' extinction de tous les tons

    For k = 1 To 4

    TonVal = tableauton(k, 1)

    MsgBox TonVal

    'ActiveSheet.Shapes("1").Visible = msoFalse 'choisir l'une des 2 lignes
    ActiveSheet.Shapes(TonVal).Visible = msoTrue

    Next k

    End Sub
    1. Merci, centauria . C'est maintenant évident pour moi. J'ai l'esprit trop tordu....
      Collod