Bonjour,
La macro suivante permet d'importer du texte dans une page Word à partir de
TextBox contenues dans un UserForm.
Le texte est positionné par rapport à des signets, ce qui permet la mise en
page.
Je voudrait que, en début d'exécution, si du texte existe à droite du
signet, il soit supprimé, sans supprimer le signet, ni la ligne
Par exemple, comme la macro est lancée par un bouton dans le UserForm, si
l'on appuie 2 fois de suite sur le bouton, on ne doit pas avoir de
répétition du texte.
Merci de bien vouloir m'aider
Sub imprimer()
'On Error Resume Next
Dim NomAdressDest As Object
Set NomAdressDest = UserForm1
Dim NomDesti, AdressUn, AdressDeux, CPDest, VilleDest As Variant
NomDesti = NomAdressDest.TextBox1.Value
AdressUn = NomAdressDest.TextBox2.Value
AdressDeux = NomAdressDest.TextBox4.Value
CPDest = NomAdressDest.TextBox3.Value
VilleDest = NomAdressDest.TextBox5.Value
Selection.GoTo wdGoToBookmark, , , "NomDest"
Selection.TypeText Text:=NomDesti
Selection.GoTo wdGoToBookmark, , , "AdresDest"
Selection.TypeText Text:=AdressUn
Selection.GoTo wdGoToBookmark, , , "AdresDest_2"
Selection.TypeText Text:=AdressDeux
Selection.GoTo wdGoToBookmark, , , "CP_VilleDest"
Selection.TypeText Text:=CPDest & " " & VilleDest
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Geo
Je voudrais que, en début d'exécution, si du texte existe à droite du signet, il soit supprimé, sans supprimer le signet, ni la ligne
Avec l'enrégistreur de ma cro, c'est relativement facile d'obtenir un code qui fait ça: F5 choisir le signet lancer l'enregistrement Passer en mode extension : F8 Aller à la fin de ligne : Fin Revenir d'un caractère en arrière (pour ne pas effacer la ligne comme tu dis : flèche gauche Annuler le mode extension : F8 Supprimer le texte : Suppr Arrêter l'enregistrement. Ce code devrait marcher même si le signet est en fin de ligne, mais je n'ai pas testé.
Par exemple, comme la macro est lancée par un bouton dans le UserForm, si l'on appuie 2 fois de suite sur le bouton, on ne doit pas avoir de répétition du texte.
Une autre solution, plus simple, serait de vider la variable après l'avoir recopiée.
Je voudrais que, en début d'exécution, si du texte existe à droite du signet, il soit
supprimé, sans supprimer le signet, ni la ligne
Avec l'enrégistreur de ma cro, c'est relativement facile d'obtenir un
code qui fait ça:
F5 choisir le signet
lancer l'enregistrement
Passer en mode extension : F8
Aller à la fin de ligne : Fin
Revenir d'un caractère en arrière (pour ne pas effacer la ligne comme
tu dis : flèche gauche
Annuler le mode extension : F8
Supprimer le texte : Suppr
Arrêter l'enregistrement.
Ce code devrait marcher même si le signet est en fin de ligne, mais je
n'ai pas testé.
Par exemple, comme la macro est lancée par un bouton dans le UserForm, si l'on appuie 2
fois de suite sur le bouton, on ne doit pas avoir de répétition du texte.
Une autre solution, plus simple, serait de vider la variable après
l'avoir recopiée.
Je voudrais que, en début d'exécution, si du texte existe à droite du signet, il soit supprimé, sans supprimer le signet, ni la ligne
Avec l'enrégistreur de ma cro, c'est relativement facile d'obtenir un code qui fait ça: F5 choisir le signet lancer l'enregistrement Passer en mode extension : F8 Aller à la fin de ligne : Fin Revenir d'un caractère en arrière (pour ne pas effacer la ligne comme tu dis : flèche gauche Annuler le mode extension : F8 Supprimer le texte : Suppr Arrêter l'enregistrement. Ce code devrait marcher même si le signet est en fin de ligne, mais je n'ai pas testé.
Par exemple, comme la macro est lancée par un bouton dans le UserForm, si l'on appuie 2 fois de suite sur le bouton, on ne doit pas avoir de répétition du texte.
Une autre solution, plus simple, serait de vider la variable après l'avoir recopiée.
La macro suivante permet d'importer du texte dans une page Word à partir de TextBox contenues dans un UserForm. Le texte est positionné par rapport à des signets, ce qui permet la mise en page. Je voudrait que, en début d'exécution, si du texte existe à droite du signet, il soit supprimé, sans supprimer le signet, ni la ligne Par exemple, comme la macro est lancée par un bouton dans le UserForm, si l'on appuie 2 fois de suite sur le bouton, on ne doit pas avoir de répétition du texte.
Sans répondre directement à la question (effacer la suite d'un signet probablement dans le paragraphe, vous ne le dites pas assez clairement) il est toujours préférable de placer le texte DANS le signet au lieu d'insérer le texte APRÈS le signet. La petite difficulté vient du fait que le remplacement d'un signet par un Range /détruit/ le signet. Il suffit de le recréer c'est tout ! Vous trouverez dans la FAQ des macros pour utiliser des signets.
J'utilise la fonction suivante pour placer du texte DANS un signet
' -------------------------------------------------------- Public Sub RemplirSignet(S As String, T As String) ' Remplit le signet S avec le texte T On Error GoTo rien ' Si S n'existe pas ! Dim Place As Long Place = ActiveDocument.Bookmarks(S).Range.Start ActiveDocument.Bookmarks(S).Range.Text = T ActiveDocument.Bookmarks.Add Name:=S, _ Range:¬tiveDocument.Range(Place, Place + Len(T)) rien: End Sub ' --------------------------------------------------------
Ce qui nous donnerait pour votre code bien plus simplement : RemplirSignet "NomDest", NomAdressDest.TextBox1.Value RemplirSignet "AdresDest" , NomAdressDest.TextBox2.Value etc et qui du coup supprimerait radicalement votre problème puisque chaque entrée /remplacerait/ la précédente dans le signet au lieu de s'ajouter à la suite. C'est ti pas mieux ? :-)
Anacoluthe « Le champ du signe. » - Umberto ECO
Bonjour !
'Jdel' nous a écrit ...
La macro suivante permet d'importer du texte dans une page Word à partir de
TextBox contenues dans un UserForm.
Le texte est positionné par rapport à des signets, ce qui permet la mise en
page.
Je voudrait que, en début d'exécution, si du texte existe à droite du
signet, il soit supprimé, sans supprimer le signet, ni la ligne
Par exemple, comme la macro est lancée par un bouton dans le UserForm, si
l'on appuie 2 fois de suite sur le bouton, on ne doit pas avoir de
répétition du texte.
Sans répondre directement à la question (effacer la suite d'un signet
probablement dans le paragraphe, vous ne le dites pas assez clairement)
il est toujours préférable de placer le texte DANS le signet
au lieu d'insérer le texte APRÈS le signet.
La petite difficulté vient du fait que le remplacement d'un signet
par un Range /détruit/ le signet. Il suffit de le recréer c'est tout !
Vous trouverez dans la FAQ des macros pour utiliser des signets.
J'utilise la fonction suivante pour placer du texte DANS un signet
' --------------------------------------------------------
Public Sub RemplirSignet(S As String, T As String)
' Remplit le signet S avec le texte T
On Error GoTo rien ' Si S n'existe pas !
Dim Place As Long
Place = ActiveDocument.Bookmarks(S).Range.Start
ActiveDocument.Bookmarks(S).Range.Text = T
ActiveDocument.Bookmarks.Add Name:=S, _
Range:¬tiveDocument.Range(Place, Place + Len(T))
rien:
End Sub
' --------------------------------------------------------
Ce qui nous donnerait pour votre code bien plus simplement :
RemplirSignet "NomDest", NomAdressDest.TextBox1.Value
RemplirSignet "AdresDest" , NomAdressDest.TextBox2.Value
etc
et qui du coup supprimerait radicalement votre problème
puisque chaque entrée /remplacerait/ la précédente dans le
signet au lieu de s'ajouter à la suite.
C'est ti pas mieux ? :-)
La macro suivante permet d'importer du texte dans une page Word à partir de TextBox contenues dans un UserForm. Le texte est positionné par rapport à des signets, ce qui permet la mise en page. Je voudrait que, en début d'exécution, si du texte existe à droite du signet, il soit supprimé, sans supprimer le signet, ni la ligne Par exemple, comme la macro est lancée par un bouton dans le UserForm, si l'on appuie 2 fois de suite sur le bouton, on ne doit pas avoir de répétition du texte.
Sans répondre directement à la question (effacer la suite d'un signet probablement dans le paragraphe, vous ne le dites pas assez clairement) il est toujours préférable de placer le texte DANS le signet au lieu d'insérer le texte APRÈS le signet. La petite difficulté vient du fait que le remplacement d'un signet par un Range /détruit/ le signet. Il suffit de le recréer c'est tout ! Vous trouverez dans la FAQ des macros pour utiliser des signets.
J'utilise la fonction suivante pour placer du texte DANS un signet
' -------------------------------------------------------- Public Sub RemplirSignet(S As String, T As String) ' Remplit le signet S avec le texte T On Error GoTo rien ' Si S n'existe pas ! Dim Place As Long Place = ActiveDocument.Bookmarks(S).Range.Start ActiveDocument.Bookmarks(S).Range.Text = T ActiveDocument.Bookmarks.Add Name:=S, _ Range:¬tiveDocument.Range(Place, Place + Len(T)) rien: End Sub ' --------------------------------------------------------
Ce qui nous donnerait pour votre code bien plus simplement : RemplirSignet "NomDest", NomAdressDest.TextBox1.Value RemplirSignet "AdresDest" , NomAdressDest.TextBox2.Value etc et qui du coup supprimerait radicalement votre problème puisque chaque entrée /remplacerait/ la précédente dans le signet au lieu de s'ajouter à la suite. C'est ti pas mieux ? :-)
Anacoluthe « Le champ du signe. » - Umberto ECO
Jdel
Merci, je vais essayer ça demain
"Jdel" a écrit dans le message de news: 441eeed8$0$19705$
Bonjour, La macro suivante permet d'importer du texte dans une page Word à partir de TextBox contenues dans un UserForm. Le texte est positionné par rapport à des signets, ce qui permet la mise en page. Je voudrait que, en début d'exécution, si du texte existe à droite du signet, il soit supprimé, sans supprimer le signet, ni la ligne Par exemple, comme la macro est lancée par un bouton dans le UserForm, si l'on appuie 2 fois de suite sur le bouton, on ne doit pas avoir de répétition du texte.
Merci de bien vouloir m'aider
Sub imprimer() 'On Error Resume Next Dim NomAdressDest As Object Set NomAdressDest = UserForm1 Dim NomDesti, AdressUn, AdressDeux, CPDest, VilleDest As Variant NomDesti = NomAdressDest.TextBox1.Value AdressUn = NomAdressDest.TextBox2.Value AdressDeux = NomAdressDest.TextBox4.Value CPDest = NomAdressDest.TextBox3.Value VilleDest = NomAdressDest.TextBox5.Value Selection.GoTo wdGoToBookmark, , , "NomDest" Selection.TypeText Text:=NomDesti Selection.GoTo wdGoToBookmark, , , "AdresDest" Selection.TypeText Text:ressUn Selection.GoTo wdGoToBookmark, , , "AdresDest_2" Selection.TypeText Text:ressDeux Selection.GoTo wdGoToBookmark, , , "CP_VilleDest" Selection.TypeText Text:=CPDest & " " & VilleDest End Sub
Merci, je vais essayer ça demain
"Jdel" <jdel5@wanadoo.fr> a écrit dans le message de news:
441eeed8$0$19705$8fcfb975@news.wanadoo.fr...
Bonjour,
La macro suivante permet d'importer du texte dans une page Word à partir
de TextBox contenues dans un UserForm.
Le texte est positionné par rapport à des signets, ce qui permet la mise
en page.
Je voudrait que, en début d'exécution, si du texte existe à droite du
signet, il soit supprimé, sans supprimer le signet, ni la ligne
Par exemple, comme la macro est lancée par un bouton dans le UserForm, si
l'on appuie 2 fois de suite sur le bouton, on ne doit pas avoir de
répétition du texte.
Merci de bien vouloir m'aider
Sub imprimer()
'On Error Resume Next
Dim NomAdressDest As Object
Set NomAdressDest = UserForm1
Dim NomDesti, AdressUn, AdressDeux, CPDest, VilleDest As Variant
NomDesti = NomAdressDest.TextBox1.Value
AdressUn = NomAdressDest.TextBox2.Value
AdressDeux = NomAdressDest.TextBox4.Value
CPDest = NomAdressDest.TextBox3.Value
VilleDest = NomAdressDest.TextBox5.Value
Selection.GoTo wdGoToBookmark, , , "NomDest"
Selection.TypeText Text:=NomDesti
Selection.GoTo wdGoToBookmark, , , "AdresDest"
Selection.TypeText Text:ressUn
Selection.GoTo wdGoToBookmark, , , "AdresDest_2"
Selection.TypeText Text:ressDeux
Selection.GoTo wdGoToBookmark, , , "CP_VilleDest"
Selection.TypeText Text:=CPDest & " " & VilleDest
End Sub
"Jdel" a écrit dans le message de news: 441eeed8$0$19705$
Bonjour, La macro suivante permet d'importer du texte dans une page Word à partir de TextBox contenues dans un UserForm. Le texte est positionné par rapport à des signets, ce qui permet la mise en page. Je voudrait que, en début d'exécution, si du texte existe à droite du signet, il soit supprimé, sans supprimer le signet, ni la ligne Par exemple, comme la macro est lancée par un bouton dans le UserForm, si l'on appuie 2 fois de suite sur le bouton, on ne doit pas avoir de répétition du texte.
Merci de bien vouloir m'aider
Sub imprimer() 'On Error Resume Next Dim NomAdressDest As Object Set NomAdressDest = UserForm1 Dim NomDesti, AdressUn, AdressDeux, CPDest, VilleDest As Variant NomDesti = NomAdressDest.TextBox1.Value AdressUn = NomAdressDest.TextBox2.Value AdressDeux = NomAdressDest.TextBox4.Value CPDest = NomAdressDest.TextBox3.Value VilleDest = NomAdressDest.TextBox5.Value Selection.GoTo wdGoToBookmark, , , "NomDest" Selection.TypeText Text:=NomDesti Selection.GoTo wdGoToBookmark, , , "AdresDest" Selection.TypeText Text:ressUn Selection.GoTo wdGoToBookmark, , , "AdresDest_2" Selection.TypeText Text:ressDeux Selection.GoTo wdGoToBookmark, , , "CP_VilleDest" Selection.TypeText Text:=CPDest & " " & VilleDest End Sub