Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Texte dans Text Box avec caractères spéciaux

9 réponses
Avatar
Steph
Bonjour,

J'essaye de copier le texte se trouvant dans une case d'une feuille de mon
classeur ici la case C19 dans une "Zone de texte" se trouvant sur cette même
feuille

J'utilise ce code dans une macro:

ActiveSheet.Shapes("Text Box 3008").Select
Selection.Characters.Text = Range("C19").Text

Dans la case C19 si je place un texte simple genre "Bonjour", ca fonctionne
bien. Par contre si il y a des caractères spéciaux cela ne fonctionne plus !

Dans la case C19 j'ai normallement ce texte

"Pour toute commande au montant inférieur à 100,00? (HTVA), des frais de
dossier de 15,00? (HTVA) doivent être ajoutés.
Toute variation de quantité peut avoir une influence sur les prix annoncés.
Paiement 100% à 30 jours fin de mois date de livraison.
Départ usine - non emballé.
Validité de l'offre: 1 mois."


Comment faire pour que cela fonctionne également avec le texte ci-dessus, y
a t'il une fonction permettant de remplacer les caractères spéciaux comme
addslash en php ???

D'avance merci pour vos réponses,

Steph

9 réponses

Avatar
MichD
Bonjour,

Je n'ai pas compris de quels caractères spéciaux il s'agit mais essaie ceci :

ActiveSheet.Shapes("Text Box 3008").OleFormat.object.text = Range("C19").Value

au lieu de ceci :
ActiveSheet.Shapes("Text Box 3008").Select
Selection.Characters.Text = Range("C19").Text
Avatar
Steph
Bonjour michD,

C'est malheureusement pareil, ça ne fonctionne toujours pas.

Si j'essaye avec un texte plus petit et plus simple cela fonctionne c'est
bizarre, c'est donc du à mon texte, du à la longueur ou du au type de
caractères

Pour rappel, voici mon texte dans la case C19

"Pour toute commande au montant inférieur à 100,00? (HTVA), des frais de
dossier de 15,00? (HTVA) doivent être ajoutés.
Toute variation de quantité peut avoir une influence sur les prix annoncés.
Paiement 100% à 30 jours fin de mois date de livraison.
Départ usine - non emballé.
Validité de l'offre: 1 mois."

Currieux, une autre idée ?

Merci

Steph







"MichD" a écrit dans le message de news:
jqaed8$2h7$
Bonjour,

Je n'ai pas compris de quels caractères spéciaux il s'agit mais essaie
ceci :

ActiveSheet.Shapes("Text Box 3008").OleFormat.object.text =
Range("C19").Value

au lieu de ceci :
ActiveSheet.Shapes("Text Box 3008").Select
Selection.Characters.Text = Range("C19").Text

Avatar
Steph
Je viens de faire d'autre essais, apparemment cela fonctionne jusque 255
caractères dès que je place un 256eme caractère cela ne fonctionne plus

Y a t'il une raison et surtout une solution à cela ?




"MichD" a écrit dans le message de news:
jqaed8$2h7$
Bonjour,

Je n'ai pas compris de quels caractères spéciaux il s'agit mais essaie
ceci :

ActiveSheet.Shapes("Text Box 3008").OleFormat.object.text =
Range("C19").Value

au lieu de ceci :
ActiveSheet.Shapes("Text Box 3008").Select
Selection.Characters.Text = Range("C19").Text

Avatar
MichD
Je veux juste m'assurer que l'on parle du même type de contrôle.

Tu fais référence à une zone de texte ou à un TEXBOX? Si c'est un Textbox,
il émane de la boîte d'outils "Formulaire" ou "contrôle"?
Avatar
Steph
C'est bien une "Zone de Texte" sur une feuille, pas un TextBox d'un UserForm

Et si je place le texte manuellement ou avec un copier coller standard, ça
fonctionne bien currieusement.



"MichD" a écrit dans le message de news:
jqahhr$b9l$
Je veux juste m'assurer que l'on parle du même type de contrôle.

Tu fais référence à une zone de texte ou à un TEXBOX? Si c'est un Textbox,
il émane de la boîte d'outils "Formulaire" ou "contrôle"?


Avatar
MichD
Avec Excel 2010, ces 2 approches fonctionnent.
Testé avec le contenu d'une cellule de 1151 caractères

'---------------------------------------------
Sub test()
Dim T As String
T = Range("D1").Text
y = Len(T) 'testé avec 1151 caractères
Feuil.Shapes("Toto").OLEFormat.Object.Text = T

End Sub
'---------------------------------------------


'Insertion du texte par tranche de 255 caractères.
'---------------------------------------------
Sub test1()
Dim T As String
T = Range("D1").Text

For a = 1 To Len(Range("D1"))
T = Mid(Range("D1").Text, a, 255)
With Feuil1.Shapes("Toto").OLEFormat.Object
.Text = .Text & T
End With
a = a + 255
Next
End Sub
'---------------------------------------------



"Steph" a écrit dans le message de groupe de discussion :
4fc8ca22$0$3109$

C'est bien une "Zone de Texte" sur une feuille, pas un TextBox d'un UserForm

Et si je place le texte manuellement ou avec un copier coller standard, ça
fonctionne bien currieusement.



"MichD" a écrit dans le message de news:
jqahhr$b9l$
Je veux juste m'assurer que l'on parle du même type de contrôle.

Tu fais référence à une zone de texte ou à un TEXBOX? Si c'est un Textbox,
il émane de la boîte d'outils "Formulaire" ou "contrôle"?


Avatar
Steph
Malheureusement aucune de ces deux solutions ne fonctionne sur Excel 2003



"MichD" a écrit dans le message de news:
jqak59$iq0$
Avec Excel 2010, ces 2 approches fonctionnent.
Testé avec le contenu d'une cellule de 1151 caractères

'---------------------------------------------
Sub test()
Dim T As String
T = Range("D1").Text
y = Len(T) 'testé avec 1151 caractères
Feuil.Shapes("Toto").OLEFormat.Object.Text = T

End Sub
'---------------------------------------------


'Insertion du texte par tranche de 255 caractères.
'---------------------------------------------
Sub test1()
Dim T As String
T = Range("D1").Text

For a = 1 To Len(Range("D1"))
T = Mid(Range("D1").Text, a, 255)
With Feuil1.Shapes("Toto").OLEFormat.Object
.Text = .Text & T
End With
a = a + 255
Next
End Sub
'---------------------------------------------



"Steph" a écrit dans le message de groupe de discussion :
4fc8ca22$0$3109$

C'est bien une "Zone de Texte" sur une feuille, pas un TextBox d'un
UserForm

Et si je place le texte manuellement ou avec un copier coller standard, ça
fonctionne bien currieusement.



"MichD" a écrit dans le message de news:
jqahhr$b9l$
Je veux juste m'assurer que l'on parle du même type de contrôle.

Tu fais référence à une zone de texte ou à un TEXBOX? Si c'est un
Textbox,
il émane de la boîte d'outils "Formulaire" ou "contrôle"?





Avatar
Steph
J'ai finalement scindé en deux "Text Box" différent ce qui me permet de
rester en dessous des 255 caractères.
Merci pour tes idées MichD ;-)



"Steph" a écrit dans le message de news:
4fc8b79f$0$3119$
Bonjour,

J'essaye de copier le texte se trouvant dans une case d'une feuille de mon
classeur ici la case C19 dans une "Zone de texte" se trouvant sur cette
même feuille

J'utilise ce code dans une macro:

ActiveSheet.Shapes("Text Box 3008").Select
Selection.Characters.Text = Range("C19").Text

Dans la case C19 si je place un texte simple genre "Bonjour", ca
fonctionne bien. Par contre si il y a des caractères spéciaux cela ne
fonctionne plus !

Dans la case C19 j'ai normallement ce texte

"Pour toute commande au montant inférieur à 100,00? (HTVA), des frais de
dossier de 15,00? (HTVA) doivent être ajoutés.
Toute variation de quantité peut avoir une influence sur les prix
annoncés.
Paiement 100% à 30 jours fin de mois date de livraison.
Départ usine - non emballé.
Validité de l'offre: 1 mois."


Comment faire pour que cela fonctionne également avec le texte ci-dessus,
y a t'il une fonction permettant de remplacer les caractères spéciaux
comme addslash en php ???

D'avance merci pour vos réponses,

Steph


Avatar
MichD
Ces 2 procédures devraient fonctionner avec les versions antérieures.
(J'ai les retrouvé dans mes notes)

Elles avaient été proposées il y a plusieurs années (en 2003) par les
auteurs
Alain Cros et Michel Gaboly

Ces 2 procédures ont pour but de transférer un long texte d'une zone de
texte
à une autre zone de texte. Je suppose que tu devrais être capable de les
adapter
à ton environnement.

'--------------------------------------------------------
Sub RemplirZoneDeTexte() ' Par Alain Cros

Dim I&, J&
I = Abs(Shapes(1).TextFrame.Characters.Count / 255) + 1
For J = 1 To I
Shapes(2).TextFrame.Characters((J - 1) * 255, 255).Text = _
Shapes(1).TextFrame.Characters((J - 1) * 255, 255).Text
Next J
End Sub


'-------------------------------------------------------
Sub ReportTexte() ' Par Michel Gaboly

Dim Mat() As String, i As Integer, j As Integer, NbCar As Long, Reste As
Integer, Fin As String
With Sheets(1).Shapes("Zone1").TextFrame
NbCar = .Characters.Count
j = Int(NbCar / 255) - 1
Reste = NbCar Mod 255
ReDim Mat(j)
For i = 0 To j
Mat(i) = .Characters(i * 255 + 1, (i + 1) * 255).Text
Next i
Fin = .Characters(256, Reste).Text
End With
With Sheets(2).Shapes("Zone2").TextFrame
For i = 0 To j
.Characters(i * 255 + 1).Insert Mat(i)
Next i
.Characters(i * 255 + 1).Insert Fin
End With
End Sub
'-------------------------------------------------------