XL 2021 Fichier partagé - erreur de l'objet TextRange2

  • Initiateur de la discussion Initiateur de la discussion macseb
  • Date de début Date de début

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 !

macseb

XLDnaute Nouveau
Salut à tous,

J'ai un petit soucis sur le fichier Excel que je gère au travail. Nous travaillons sur un fichier Excel partagé xl2021, le soucis c'est que récemment j'ai travaillé sur des modifs pour rendre le fichier plus interactif mais lorsque j'ai repartagé le fichier, une de mes macros me déclenche une erreur sur l'objet TextRange2.

En gros je modifie le texte à l'intérieur d'une forme (shape) lorsque l'on clique dessus. Tout cela fonctionne très bien en mode "non partagé" mais lorsque je partage une erreur s'affiche m'indiquant que "la méthode Text de l'objet TextRange2 a échoué".

Mon bout de code donne ceci:

VB:
Sub BT_Affiche_OUTIL()

With Worksheets("PDR_NCY")
    'Bacsule les filtres "AVEC OUTIL" vers "SANS OUTIL" et vice-versa
    With .Shapes("BT_OUTIL")
        If .TextFrame.TextRange.Text = "AVEC OUTIL" Then
            .TextFrame.TextRange.Text = "SANS OUTIL"
            .Fill.ForeColor.RGB = RGB(150, 90, 200)
        Else
            .TextFrame.TextRange.Text = "AVEC OUTIL"
            .Fill.ForeColor.RGB = RGB(200, 90, 150)
        End If
    End With
    'Met à jour le filtre des statuts suite à l'appui sur le bouton "BT_OUTIL"
    If .FilterMode = True Then
        .Range("$A$8:$J$8").AutoFilter field:=7, Criteria1:=critere_filtre("TOUS"), Operator:=xlFilterValues
    End If
End With

End Sub

Donc voila un peu perplexe... est-ce qu'il est impossible de modifier le texte contenu dans une forme lorsque l'on est en fichier partagé ? Ca me parait quand même étrange car en attendant j'ai appliqué une solution palliative qui modifie uniquement la couleur du bouton et cela fonctionne en fichier partagé... Alors mystère pourquoi modifier un texte ne fonctionne pas mais une couleur oui ?

Merci d'avance, j'espère avoir été compréhensible 🙃
 
Bonjour
heu a ben maintenant si on a des new property pour les shapes on va pas s'en sortir hein
c'est pas textrange2 c'est textframe2
et puis c'est pas textrange.text c'est textrange.characters.text


VB:
Sub BT_Affiche_OUTIL()

With Worksheets("PDR_NCY")
    'Bacsule les filtres "AVEC OUTIL" vers "SANS OUTIL" et vice-versa
    With .Shapes("BT_OUTIL")
         If .TextFrame2.TextRange.Characters.Text = "AVEC OUTIL" Then
            .TextFrame2.TextRange.Characters.Text = "SANS OUTIL"
            .Fill.ForeColor.RGB = RGB(150, 90, 200)
        Else
            .TextFrame2.TextRange.Characters.Text = "AVEC OUTIL"
            .Fill.ForeColor.RGB = RGB(200, 90, 150)
        End If
    End with
    'Met à jour le filtre des statuts suite à l'appui sur le bouton "BT_OUTIL"
    If .FilterMode = True Then
        .Range("$A$8:$J$8").AutoFilter field:=7, Criteria1:=critere_filtre("TOUS"), Operator:=xlFilterValues
    End If
End With
End Sub

OU ALORS!!!
on utilise une autre approche en utilisant une autre collection d'object

qui permet une syntaxe plus simple
VB:
Sub BT_Affiche_OUTIL2()

With Worksheets("PDR_NCY")
    'Bacsule les filtres "AVEC OUTIL" vers "SANS OUTIL" et vice-versa
    With .DrawingObjects("BT_OUTIL")
        If .Text = "AVEC OUTIL" Then
            .Text = "SANS OUTIL"
            .Interior.Color = RGB(150, 90, 200)
        Else
            .Text = "AVEC OUTIL"
            .Interior.Color = RGB(200, 90, 150)
        End If
    End With
    'Met à jour le filtre des statuts suite à l'appui sur le bouton "BT_OUTIL"
    If .FilterMode = True Then
        .Range("$A$8:$J$8").AutoFilter field:=7, Criteria1:=critere_filtre("TOUS"), Operator:=xlFilterValues
    End If
End With

End Sub
patrick
 
Bonjour
heu a ben maintenant si on a des new property pour les shapes on va pas s'en sortir hein
c'est pas textrange2 c'est textframe2
et puis c'est pas textrange.text c'est textrange.characters.text


VB:
Sub BT_Affiche_OUTIL()

With Worksheets("PDR_NCY")
    'Bacsule les filtres "AVEC OUTIL" vers "SANS OUTIL" et vice-versa
    With .Shapes("BT_OUTIL")
         If .TextFrame2.TextRange.Characters.Text = "AVEC OUTIL" Then
            .TextFrame2.TextRange.Characters.Text = "SANS OUTIL"
            .Fill.ForeColor.RGB = RGB(150, 90, 200)
        Else
            .TextFrame2.TextRange.Characters.Text = "AVEC OUTIL"
            .Fill.ForeColor.RGB = RGB(200, 90, 150)
        End If
    End with
    'Met à jour le filtre des statuts suite à l'appui sur le bouton "BT_OUTIL"
    If .FilterMode = True Then
        .Range("$A$8:$J$8").AutoFilter field:=7, Criteria1:=critere_filtre("TOUS"), Operator:=xlFilterValues
    End If
End With
End Sub

OU ALORS!!!
on utilise une autre approche en utilisant une autre collection d'object

qui permet une syntaxe plus simple
VB:
Sub BT_Affiche_OUTIL2()

With Worksheets("PDR_NCY")
    'Bacsule les filtres "AVEC OUTIL" vers "SANS OUTIL" et vice-versa
    With .DrawingObjects("BT_OUTIL")
        If .Text = "AVEC OUTIL" Then
            .Text = "SANS OUTIL"
            .Interior.Color = RGB(150, 90, 200)
        Else
            .Text = "AVEC OUTIL"
            .Interior.Color = RGB(200, 90, 150)
        End If
    End With
    'Met à jour le filtre des statuts suite à l'appui sur le bouton "BT_OUTIL"
    If .FilterMode = True Then
        .Range("$A$8:$J$8").AutoFilter field:=7, Criteria1:=critere_filtre("TOUS"), Operator:=xlFilterValues
    End If
End With

End Sub
patrick
Salut patrick,

Merci pour tes solutions alternatives malheureusement celles-ci ne fonctionnent pas plus. Lorsque le fichier est partagé, cela génère inlassablement une erreur. Comme pour mon code, ton code fonctionne très bien sur un fichier non partagé mais dès lors qu'il est partagé c'est mort 🙁
Je crois que ça doit être une limitation existante dans Excel en mode partagé, je vois pas autrement... C'est quand même dommage.
 
Dernière édition:
Bonjour,

En gros je modifie le texte à l'intérieur d'une forme (shape) lorsque l'on clique dessus. Tout cela fonctionne très bien en mode "non partagé" mais lorsque je partage une erreur s'affiche m'indiquant que "la méthode Text de l'objet TextRange2 a échoué".
J'ai modifié ton code de #1 pour qu'il fonctionne chez moi :
VB:
Sub BT_Affiche_OUTIL_1()
'
    With Worksheets("PDR_NCY")

        ' Bacsule les filtres "AVEC OUTIL" vers "SANS OUTIL" et vice-versa
        With .Shapes("BT_OUTIL")
            If .TextFrame2.TextRange.Text = "AVEC OUTIL" Then
                .TextFrame2.TextRange.Text = "SANS OUTIL"
                .Fill.ForeColor.RGB = RGB(150, 90, 200)
            Else
                .TextFrame2.TextRange.Text = "AVEC OUTIL"
                .Fill.ForeColor.RGB = RGB(200, 90, 150)
            End If
        End With

        ' Met à jour le filtre des statuts suite à l'appui sur le bouton "BT_OUTIL"
        If .FilterMode = True Then
'            .Range("$A$8:$J$8").AutoFilter field:=7, Criteria1:=critere_filtre("TOUS"), Operator:=xlFilterValues
        End If

    End With

End Sub

Après partage du classeur, j'ai la même erreur que toi.
Tout comme toi, je pense que le problème vient du partage. 🙁
 
j'ai testé sur mes 3 pcs avec le fichier dans un et dans un dossier que j'ai partagé
et rien ne m’empêche de modifier la shape

j'ai aussi testé en resau local les deux autre pc étant autorisé dans le premier ca marche aussi
Patrick je pense m'être fait mal comprendre. Je ne parlais pas de placer le fichier excel en réseau partagé mais en mode partagé permettant la modification du fichier par plusieurs utilisateurs en même temps.
Merci Fatboy d'avoir confirmé. C'est toutefois étrange qu'on puisse modifier la couleur de la forme mais pas son texte, enfin bref tant pis je suis passé à l'utilisation d'un bouton activeX en remplacement.
Merci a vous en tt cas!
 
- 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

Retour