Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/03/2007, 12h20   #1
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 111
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 111
Points : 11
Points : 11
Par défaut [VBA-W] - TextBox dans userform - Supprimer 1 caractère

Bonjour à tous.

J'ai un problème dans une macro word.
J'ai une zone de texte dans laquelle je souhaite pouvoir utilisé la touche Entrée pour le multiligne, ça c'est bon, ça marche.

Ce qui me pose problème, c'est au moment de la fonction Remplace.
Sur le document, chaque nouvelle ligne commence par ce caractère , et c'est embetant.

Donc si quelqu'un a la solution pour supprimer ce caractère, merci d'avance.
vbword est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2007, 12h33   #2
Membre éprouvé
 
Inscription : juillet 2004
Messages : 504
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 504
Points : 449
Points : 449
Envoyer un message via MSN à helios77
Si tu fais une recherche sur le code caractere chr(13) et que tu le supprimes en le remplaçant par "", çà ne marche pas ???

Bon courage, le développemenbt sous Word, c'est vraiment spécial
j'en ai déjà fait un peu et j'espère ne jamais avoir à en refaire
helios77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2007, 17h53   #3
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Essaie de faire
Code :
1
2
ActiveDocument.Shapes(1).TextFrame.TextRange.Text = _
Replace(ActiveDocument.Shapes(1).TextFrame.TextRange.Text, vbCr, "")
Testé
A+

NB - C'est la même chose sur Excel
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2007, 21h51   #4
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 111
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 111
Points : 11
Points : 11
Ah .... excuses mon ignorance, mais je le met où ce code, au niveau de quelle commande ?

Donc pour info, ma zone de texte s'appelle txtdoc, au cas où ça peut servir ...


Merci d'avance
vbword est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 01h30   #5
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Le code que je t'ai donné va dans une macro et supprime les retours à la ligne dans une zone de texte.
Citation:
Envoyé par Tu
J'ai un problème dans une macro word.
C'est ce que Helios, au vu de sa réponse, et moi, avions compris.
Visiblement ce n'est pas ça.
Apparemment, tu as un problème d'affichage : Auquel cas, fais Ctrl + * et les carrés dont tu parles qui se trouvent en début de ligne dans les tableaux disparaîtront. Ctrl + * sert à visualiser les caractères invisibles et les caractères de contrôle utilisés dans le texte (tabulations, espace, retours à la ligne, espaces "durs" etc...)
Si ce n'est pas ça, dis-nous où se trouvent les ¤ puisque ce n'est pas dans la zone de texte.
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 02h19   #6
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 111
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 111
Points : 11
Points : 11
Autant pour moi.

Le dit caractère ne se trouve pas dans la zone de texte, mais sur le fichier word, une fois que la fonction Remplace est exécutée.
En rouge la zone de texte


Et donc voici le résultat une fois la fonction Remplace exécutée


Donc il se peut que le code que tu m'as fourni fonctionne, mais où le mettre dans le script ?

Dans les propriétés de la zone de texte, EnterKeyBehavior en True, et Multiligne est True aussi.
vbword est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 04h17   #7
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Comment insère-tu ton texte ?
Tu ne dois pas mettre vbcrlf comme caractère de retour à la ligne. Essaie avec vblf ou vbcr mais je crois que c'est vblf (?)
Ensuite, ce n'est pas une zone de texte, qui elle s'insère dans le document, mais une textbox ou un label dans un userform... D'où notre difficulté de compréhension.
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 05h04   #8
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 111
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 111
Points : 11
Points : 11
Citation:
Envoyé par ouskel'n'or
Comment insère-tu ton texte ?
Tu ne dois pas mettre vbcrlf comme caractère de retour à la ligne. Essaie avec vblf ou vbcr mais je crois que c'est vblf (?)
Ensuite, ce n'est pas une zone de texte, qui elle s'insère dans le document, mais une textbox ou un label dans un userform... D'où notre difficulté de compréhension.
A+
Ah ... oui ... autant pour moi ... c'est bien une textebox dans un userform.

Voilà ma ligne de code
Code :
1
2
3
4
Private Sub txtdoc_Change()
ActiveDocument.Shapes(1).TextFrame.TextRange.Text = _
Replace(ActiveDocument.Shapes(1).TextFrame.TextRange.Text, vbLf, "")
End Sub

Je ne comprend plus pffffffffffff
Est-ce que c'est bon comme ça ?
Faut-il remplacer le 1 dans le script par autre chose ?

Ca deviens compliqué et je ne trouve pas où est l'erreur
vbword est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 08h03   #9
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 777
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 777
Points : 16 858
Points : 16 858
Envoyer un message via Skype™ à bbil
cela c'est la ligne de code que ta donné ousk' avant que tu pense à lui dire que le textbox était sur une userform..! ... comment rempli tu actuellement ton textbox..? c'est la qu'il faut rajouter le remplace...!
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 11h50   #10
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
On va en sortir, oui ?
Code :
1
2
3
txtdoc.text = Replace(txtdoc.text, vbcrlf,"")
txtdoc.text = Replace(txtdoc.text, vbcr,"")
txtdoc.text = Replace(txtdoc.text, vblf,"")
C'est l'un de ces trois codes qui te permettront de supprimer le retours à la ligne.
S'il te manque un espace après effacement, c'est l'un de ces trois là
Code :
1
2
3
txtdoc.text = Replace(txtdoc.text, vbcrlf," ")
txtdoc.text = Replace(txtdoc.text, vbcr," ")
txtdoc.text = Replace(txtdoc.text, vblf," ")
Tu les testes tous les trois dans la macro de ton choix mais je dirais dans Userform_initialize
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 14h59   #11
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 111
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 111
Points : 11
Points : 11
Citation:
Envoyé par bbil
cela c'est la ligne de code que ta donné ousk' avant que tu pense à lui dire que le textbox était sur une userform..! ... comment rempli tu actuellement ton textbox..? c'est la qu'il faut rajouter le remplace...!
Salut

Bon ... les 6 codes que ousk' m'a donné ne fonctionnent ni dans la fonction Remplace, ni dans la UserForm, ni dans la ligne de code de la textbox ...

Dans l'utilisation, quand j'ouvre le doccument, la macro s'ouvre, je rempli les textbox, et ensuite j'ai un bouton de commande Créer, qui fait appel à la fonction Remplace, donc qui rempli les champs voulus dans le document word ...

Là je calle, je sais plus ...
vbword est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 15h12   #12
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Citation:
j'ai un bouton de commande Créer, qui fait appel à la fonction Remplace, donc qui rempli les champs voulus dans le document word ...
Montre ton code pour faire ça
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 16h12   #13
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 111
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 111
Points : 11
Points : 11
Pour le bouton de commande Créer
Code :
1
2
3
4
5
6
7
8
9
10
11
Private Sub cmdCréer_Click()
Remplace
Unload Me
MsgBox "Création terminée.", vbInformation, "OK"
Application.WindowState = wdWindowStateNormal
'réglage de base
Application.Height = 500
Application.Width = 650
Application.Left = 50
Application.Top = 50
End Sub
Pour la fonction Remplace que j'ai mis en module ( là j'ai juste mis ce qui concerne la textbox concernée )
Code :
1
2
3
4
5
6
7
8
9
10
Public Function Remplace()
'Procédure de remplacement
With ActiveDocument.Content.Find
 
.Text = "§doc§"
.Replacement.Text = frmUserForm1!txtdoc.Text
.Execute Replace:=wdReplaceAll
 
End With
End Function
vbword est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 16h54   #14
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Le texte à remplacer est dans un textbox ou dans le document ?
Ce que tu fais (#¤§@?), c'est un remplacement dans le document, pas dans le textbox.
Tu dis
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 17h14   #15
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 111
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 111
Points : 11
Points : 11
Citation:
Envoyé par ouskel'n'or
Le texte à remplacer est dans un textbox ou dans le document ?
Ce que tu fais (#¤§@?), c'est un remplacement dans le document, pas dans le textbox.
Tu dis
Je rempli la textbox qui est dans le userform
Ce qui est saisi dans la textbox remplace dans le formulaire le texte suivant §doc§, dont voilà le script
Code :
1
2
3
.Text = "§doc§"
.Replacement.Text = txtdoc.Text
.Execute Replace:=wdReplaceAll
vbword est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 17h20   #16
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Dis donc, on est loin de ta question d'origine
Citation:
Sur le document, chaque nouvelle ligne commence par ce caractère , et c'est embetant.

Donc si quelqu'un a la solution pour supprimer ce caractère, merci d'avance.
Fais un effort pour rédiger tes messages. La question est pourtant simple :

"Comment remplacer du texte dans un document par celui saisi dans un textbox situé dans un userform."

Tu me confirmes que c'est bien ce que tu veux, après on verra.
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 17h27   #17
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 111
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 111
Points : 11
Points : 11
Citation:
Envoyé par ouskel'n'or
Dis donc, on est loin de ta question d'origine
Fais un effort pour rédiger tes messages. La question est pourtant simple :

"Comment remplacer du texte dans un document par celui saisi dans un textbox situé dans un userform."

Tu me confirmes que c'est bien ce que tu veux, après on verra.
Comment le remplacer ça je sais, le code je l'ai.
Le problème est que quand tu es en multiligne dans une textbox, lorsque tu exécutes la fonction Remplace, tu te retrouves avec ce fameux caractère à chaque nouvelle ligne, sur le document. Et c'est ce caractère que je veux supprimer, ce qui est expliqué dans mon premier message ( peut-être mal je l'accorde ) ...

Bon c'est pas grave, je ne suis pas compris, ou je m'exprime mal, je vais voir autrement sinon ...

Merci quand même ...
vbword est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 17h31   #18
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Meûh non ! On va le faire ce remplacement !
Je fais ma boîte, je colle dans le texte pour voir de quoi il retourne et je te réponds...
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 17h35   #19
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 111
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 111
Points : 11
Points : 11
Citation:
Envoyé par ouskel'n'or
Meûh non ! On va le faire ce remplacement !
Je fais ma boîte, je colle dans le texte pour voir de quoi il retourne et je te réponds...
A+
Merci à toi

Ce qui aurai pu être pratique, c'est que je t'envoi le formulaire par mail, que tu ai le formulaire complet pour que tu puisses voir de quoi il en retourne ...

Si tu es OK dis moi ...
vbword est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 17h42   #20
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Tu ne peux pas le mettre sur e forum, je regarde et si tu veux, je le détruis après (Tu dois le Zipper)
A+

PS - J'ai fait exactement ce que tu dis et je n'ai pas de ¤ ni de quoi que ce soit qui s'affiche dans la feuille. Ton fichier serait bien utile en effet
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h55.


 
 
 
 
Partenaires

Hébergement Web