Texte dans Text Box avec caractères spéciaux

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #24527761
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
Steph
Le #24527781
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" 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

Steph
Le #24527771
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" 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

MichD
Le #24527881
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"?
Steph
Le #24527871
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" 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"?


MichD
Le #24528031
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" 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"?


Steph
Le #24534051
Malheureusement aucune de ces deux solutions ne fonctionne sur Excel 2003



"MichD" 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" 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"?





Steph
Le #24534121
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" 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


MichD
Le #24534841
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
'-------------------------------------------------------
Publicité
Poster une réponse
Anonyme