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 27/05/2011, 14h43   #1
Invité de passage
 
Inscription : mai 2011
Messages : 24
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 24
Points : 4
Points : 4
Par défaut Ajout de texte à partir d'une CheckBox

Bonjour,

Je cherche à afficher automatiquement du texte dans une textbox sur un document word après avoir coché une CheckBox (que j'ai placé dans une Form) et validé avec un bouton.
Jusqu'ici, je n'arrive à afficher le texte que si la textbox se situe dans la Form... et pas dans le document word.

Et si je coche plusieurs des CheckBox, j'aimerai que le texte s'écrive à la suite de celui déjà contenu dans la textbox, et n'écrase pas son ancien contenu

Quelqu'un saurait-il m'aiguiller ?

D'avance, Merci Beaucoup.
Betadine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 14h50   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 323
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 323
Points : 29 225
Points : 29 225
Salut,

Je suppose que c'est un UserForm ?

Code :
Me.MonTextBox.Value  = "aaaa" & "bbbb"
Tu peux aussi travailler avec une chaîne.

Code :
1
2
3
4
5
6
7
Dim monTxt as String
 
If Me.CaseACocher1 Then monTxt = monTxt & "CaseACocher1"
If Me.CaseACocher2 Then monTxt = monTxt & "CaseACocher2"
....
 
Me.MonTextBox.Value = monTxt
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 09h17   #3
Invité de passage
 
Inscription : mai 2011
Messages : 24
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 24
Points : 4
Points : 4
Oui, tout à fait, c'est une UserForm,

Mais je me demande où placer les codes des macros, car il y a une page de code réservée au document word, et une page de code réservée à la UserForm. N'y a t il pas la possibilité de mettre les codes tous ensembles ?
Betadine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 09h30   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 323
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 323
Points : 29 225
Points : 29 225
Salut,

Il est beaucoup plus facile de laisser les instructions de code dans le module auquelles elles se rapportent.

Donc, le code du UserForm dans le module du UserForm et le code du document dans le module ThisDocument.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 15h30   #5
Invité de passage
 
Inscription : mai 2011
Messages : 24
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 24
Points : 4
Points : 4
Par défaut Effacement de texte entre deux signets...

Bonjour,

J'ai plus ou moins trouvé un moyen d'arriver à mes fins, mais je bloque sur des détails assez agaçant...

Pour l'instant, si je coche la checkbox et que je clique sur OK, le texte apparait. Et si je décoche, j'aimerai que ce qui se trouve entre les deux signets (c'est à dire tout ce qui se trouve entre "Panier a salade" et "Prix") soit effacé. C'est sur ce point que je butte, car je n'arrive pas à supprimer tout, notamment quand je note la macro plusieurs fois de suite...

Auriez-vous une idée ?

Le document Word est sous la forme suivante.
------------------------
Panier a salade
(signet1)
Carottes
Carottes
Carottes

(signet2)
Prix
------------------------



Voici mon code ci dessous.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Private Sub OK_Click()
 
Dim Variable1 As String
 
Variable1 = "Carottes"
 
'Déclaration des signets
Const SignetDebut As String = "signet1"
Const SignetFin As String = "signet2"
 
'Déclaration variable Range
Dim Signet1Rge As Range
Dim Signet2Rge As Range
Dim EffaceRge As Range
 
'Si la checkbox1 est cochée, alors effacer le contenu déjà présent et écrire le contenu de la variable1
If CheckBox1.Value = True Then
    'Assignation des variables
    With ActiveDocument
    Set Signet1Rge = ThisDocument.Bookmarks("SignetDebut").Range
    Set Signet2Rge = ThisDocument.Bookmarks("SignetFin").Range
 
    'Assignation du texte à supprimer
    Set EffaceRge = ThisDocument.Range(Signet1Rge.End, Signet2Rge.End)
 
    'Suppression du texte entre les deux signets
    EffaceRge.Delete
    End With
 
    'Ecrit le texte contenu dans la variable au début du 1er signet
    ThisDocument.Bookmarks("SignetDebut").Select
    Selection.TypeText Text:=Variable1 & vbCr
 
'Sinon, on se contente d'effacer le contenu sans écrire la variable1
Else
    'ThisDocument.Bookmarks("SignetDebut").Select
    'Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    Set Signet1Rge = ThisDocument.Bookmarks("SignetDebut").Range
    Set Signet2Rge = ThisDocument.Bookmarks("SignetFin").Range
    Set EffaceRge = ThisDocument.Range(Signet1Rge.End, Signet2Rge.Start)
    EffaceRge.Delete
 
End If
End Sub
Betadine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 16h06   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 323
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 323
Points : 29 225
Points : 29 225
Salut,

La FAQ : http://word.developpez.com/faq/index...rs_PlageSignet

Donne ceci :
Code :
1
2
ActiveDocument.Range(ActiveDocument..Bookmarks("sig1").Range.Start, _
ActiveDocument.Bookmarks("sig2").Range.End).Select
Dans ton cas, cela devient :
Code :
1
2
3
ActiveDocument.Range(ActiveDocument..Bookmarks("SignetDebut").Range.Start, _
ActiveDocument..Bookmarks("SignetFin").Range.End).Select 
Selection.Delete
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 17h18   #7
Invité de passage
 
Inscription : mai 2011
Messages : 24
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 24
Points : 4
Points : 4
Il doit y avoir quelque chose qui cloche, car lorsque j'utilise ce code adapté à ce que j'ai fait, le fait de ne rien cocher et de cliquer sur OK supprime... mais seulement caractère par caractère...
Betadine est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h07.


 
 
 
 
Partenaires

Hébergement Web