XL 2013 OnAction avec argument contenant une apostrophe

dionys0s

XLDnaute Impliqué
Bonjour le forum,

je bute sur un léger problème. Je n'arrive pas à passer d'argument texte sur une commande "OnAction" si l'argument contient une apostrophe. Existe-t-il une méthode pour contourner le problème ?

VB:
Option Explicit

Public Sub MaSub()

  Dim Shp As Excel.Shape

  With Excel.ActiveSheet
    For Each Shp In .Shapes
      Shp.Delete
    Next Shp

    AddButton .Cells(1, 1), "Bouton 1", "UneMacro", "Salut" 'fonctionne bien
    AddButton .Cells(3, 1), "Bouton 2", "UneMacro", "ça va ?" 'fonctionne bien
    AddButton .Cells(5, 1), "Bouton 3", "UneMacro", "Oui merci.", "Et toi ?" 'fonctionne bien
    AddButton .Cells(7, 1), "Bouton 4", "UneMacro", "C'est cool" 'Genère une erreur
  End With

End Sub

Private Sub AddButton(ByRef Anchor As Excel.Range, ByRef Caption As String, ByRef OnActionSub As String, ParamArray SubArgs() As Variant)

  With Anchor
    With .Parent.Buttons.Add(.Left + 1, .Top + 1, .Width - 1, .Height - 1)
      .Caption = Caption
      .OnAction = "'" & VBA.Trim(OnActionSub) & """" & VBA.Join(SubArgs, """, """) & """'"
    End With
  End With

End Sub

Public Sub UneMacro(Optional ByRef Texte1 As String, Optional ByRef Texte2 As String)

  VBA.MsgBox Texte1 & VBA.IIf(Texte2 = VBA.vbNullString, VBA.vbNullString, VBA.vbNewLine & Texte2)

End Sub

D'avance merci pour votre aide
(Je n'ai pas eu le droit d'uploader un fichier en xlsm... C'est normal ??)

dionys0s

Edit : en fait j'avais enregistré mon classeur en xltm. Erreur corrigée et fichier téléversé.
 

Pièces jointes

  • OnAction.xlsm
    16.1 KB · Affichages: 38

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

En biaisant, on y arrive ;)
VB:
Public Sub MaSub()
Dim Shp As Excel.Shape
  With Excel.ActiveSheet
    For Each Shp In .Shapes
      Shp.Delete
    Next Shp
    AddButton .Cells(1, 1), "Bouton 1", "UneMacro", "Salut" 'fonctionne bien
    AddButton .Cells(3, 1), "Bouton 2", "UneMacro", "ça va ?" 'fonctionne bien
    AddButton .Cells(5, 1), "Bouton 3", "UneMacro", "Oui merci.", "Et toi ?" 'fonctionne bien
    AddButton .Cells(7, 1), "Bouton 4", "UneMacro", "C" & Chr(146) & "est cool" 'Genère une erreur
  End With

End Sub

Private Sub AddButton(ByRef Anchor As Excel.Range, ByRef Caption As String, ByRef OnActionSub As String, ParamArray SubArgs() As Variant)
  With Anchor
    With .Parent.Buttons.Add(.Left + 1, .Top + 1, .Width - 1, .Height - 1)
      .Caption = Caption
      .OnAction = "'" & VBA.Trim(OnActionSub) & """" & VBA.Join(SubArgs, """, """) & """'"
      'une variante d'écriture en bonus
       '.OnAction = Chr(39) & VBA.Trim(OnActionSub) & Chr(34) & VBA.Join(SubArgs, """, """) & Chr(39)
    End With
  End With
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 133
Membres
103 128
dernier inscrit
pmordel@parisbrestconsult