XL 2013 OnAction avec argument contenant une apostrophe

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
353
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
371
Réponses
2
Affichages
540
Réponses
5
Affichages
591
Retour