C/Message d'erreur dans code VBA

Bonjour,

j'ai fait un calendrier (avec l'aide d'un membre du forum) de RDV avec Microsoft 365. Cela a bien fonctionné. J'ai copié le fichier dans Excel 2010 et le calendrier ne fonctionne pas.

calendrier rdv

En lançant le programme, un message apparaît : "Erreur compilation - Tableau attendu" ==> M12 = (lft(Application.Caller, 1) = "_")
Et pourtant lft est déclaré.

Sub Clic_Mois (Optional x As Byte)
Dim M12 As Boolean, Tp0 As Single, i As Byte, lft As Single, NomSh As String
    Application.ScreenUpdating = False
    With ActiveSheet
        Tp0 = .Rows(7).Top - 0.5
        lft = .Columns(2).left + 2
        For i = 1 To 12
            With .Shapes("_" & i)
                .Height = 20
                .Top = Tp0 - .Height
                .left = lft
                .Width = 50
                .Fill.ForeColor.RGB = &H7F7F7F
                .Fill.Solid
                .TextFrame2.TextRange.Characters.Font.Fill.ForeColor.RGB = &HF0F0F0
                lft = lft + .Width + 1.5
            End With
        Next i
        M12 = (lft(Application.Caller, 1) = "_")
        If M12 Then NomSh = Application.Caller Else NomSh = "_" & .Range("J6").Value
        With .Shapes(NomSh)
            .Height = 30
            .Top = Tp0 - .Height
            .Fill.ForeColor.RGB = &HA7D5B5
            .Fill.BackColor.ObjectThemeColor = msoThemeColorAccent6
            .Fill.BackColor.TintAndShade = 0.2
            .Fill.TwoColorGradient msoGradientHorizontal, 1
            .TextFrame2.TextRange.Characters.Font.Fill.ForeColor.RGB = 0
        End With
        If M12 Then .Range("J6").Value = Replace(Application.Caller, "_", "")
    End With
    Application.ScreenUpdating = True
    Graphe_Planning    
End Sub

Quelqu'un pourra-t-il m'éclaircir sur ce dysfonctionnement, svp?

Juju

Bonjour,

La variable M12 est déclarée booléenne et le message d'erreur indique que le résultat de lft(Application.Caller, 1) est une variable tableau.

Essayez de déclarer M12 en variant. Nb: Le nom de la variable n'est pas heureux, car elle correspond à une référence de cellule.

Sinon, regardez ce que donne les valeurs dans la fenêtre exécution (Ctrl-G) avec des Debug.print avant la ligne qui bugue.

         Debug.print lft(Application.Caller, 1)
         Debug.print Application.Caller

        M12 = (lft(Application.Caller, 1) = "_")
        If M12 Then NomSh = Application.Caller Else NomSh = "_" & .Range("J6").Value

Bonjour Eric Kergresse,

merci pour la réponse mais après test, sans succès.

Je vais continuer pour trouver la solution.

@+

Juju

Rechercher des sujets similaires à "message erreur code vba"