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 17/04/2007, 15h59   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
Par défaut [VBA-W] mettre en gras certaines lignes d'un tableau

Bonjour
je souhaite créer une macro qui met en gras les lignes d'un tableau à condition que la lettre de la deuxième colonne soit D.
J'ai vu que la fonction pour mettre en gras est Font.Bold = wdToggle (découverte en enregistrant une macro) et j'ai donc taper l'instruction suivante déduite des tutoriels:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub CommandButton1_Click()
If tableau(ligne, colonne) = D Then
'Lire les instructions suivantes
ligne D.Font.Bold = wdToggle
Else
End If
End Sub
 
Private Sub CommandButton2_Click()
'Sortie du programme
End
End Sub
J'ai créer une messagebox avec deux boutons: OK et Annuler.
Ma macro ne fonctionne pas et m'indique erreur de compilation: "Sub ou Function non définie".
Pouvez-vous me dire ce qui ne va pas?
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2007, 16h42   #2
Membre habitué
 
Inscription : juillet 2005
Messages : 141
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 141
Points : 117
Points : 117
Bonjour
alors je suis pas au top sur word mais comme ca je dirais que c'est du à ton tableau nommé tableau
que représente ce tableau l'a tu définis avant et de quelle manière?
La il semble qu'il le prenne pour une fonction complémetaire mais vu qu'aucune fonction nommé tableau n'existe alors il bug
rémi
gruget est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2007, 16h47   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
J'avoue ne pas l'avoir défini.
Comment dois-je faire alors?
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2007, 17h05   #4
Membre habitué
 
Inscription : juillet 2005
Messages : 141
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 141
Points : 117
Points : 117
Qu'est-ce que c'est que ce tableau? est-ce un tableau de ta feuille Word?
ou un tableau de code?
que met-tu dedans et comment?
rémi
gruget est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2007, 17h25   #5
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
C'est un tableau de mon document Word.
Il n'y a que du texte à l'intérieur, et dans la colonne 2 juste une lettre qui doit par la suite être le critère de sélection.
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 10h28   #6
Membre habitué
 
Inscription : juillet 2005
Messages : 141
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 141
Points : 117
Points : 117
Bonjour
alors je me suis penché un peu sur ton cas et ca donne qq chose comme ca
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub CommandButton1_Click()
Dim objTable As Table
Dim i As Integer
Dim a As String
Set objTable = ThisDocument.Tables(1)
 
For i = 1 To objTable.Rows.Count
    a = Left(objTable.Cell(i, 2).Range.Text, InStr(objTable.Cell(i, 2).Range.Text, vbCr) - 1)
    If a = "D" Then
        objTable.Rows(i).Select
        Selection.Font.Bold = wdToggle
    End If
Next i
après ca dépend du nombre de tableau que tu as
c peut etre pas le premier qu'il faut prendre
par ailleurs j'ai utilisé une fonction pour éliminer les retours chariot (caractère de saut de ligne) qui peut être à adapter
rémi
gruget est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 11h01   #7
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
Quand j'essaie de lancer ma macro, j'ai une fenêtre attention "les macros de ce projet sont désactivées. Référez-vous à l'aide en ligne ou à la documentation de l'application hôte pour savoir comment activer les macros."
J'ai beau regarder dans l'aide mais je ne vois pas ce que je peux faire.
Un coup de pouce?
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 11h07   #8
Membre habitué
 
Inscription : juillet 2005
Messages : 141
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 141
Points : 117
Points : 117
Outils/macro/sécurité
sur moyen c pas mal
et qd tu ouvres ton fichier word qd il te demande de choisir d'activer ou non les macros choisi bien activer les macros
rémi
gruget est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 11h22   #9
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
Ok super.
Ta combine et la macro fonctionnent parfaitement.
Mais comment est-il possible de faire disparaitre automatiquement la messagebox après execution de la macro et est-il possible de la faire apparaitre sous forme de bouton dans les barres d'outils?
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 11h57   #10
Membre habitué
 
Inscription : juillet 2005
Messages : 141
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 141
Points : 117
Points : 117
Par messagebox je pense que tu voulais dire bouton de commande
alors je suis dsl mais je sais pas comment on fait pour masquer le bouton de commande sous word pasque sous Excel il y a la propriété
Code :
Commandbutton.visible= true ou false
mais ca marche pas sous word (enfin pas chez moi)
sinon je sais qu'il est possible d'ajouter des boutons dans la barre des taches
pour cela appelle ta macro d'un nom quelconque genre et ensuite va dans Affichage/barre d'outils/personaliser
ajoute une nouvelle barre d'outil avec Nouvelle en faisant attention de mettre utilisable uniquement par ton fichier word et non pas par tous
puis dans l'onglet commande de la meme fenetre va dans macro et fait glisser vers ta barre d'outils la macro correspondante. Ca te créera un bouton qui lancera cette macro
rémi
gruget est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 12h03   #11
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
Ma macro n'apparait pas dans la liste. pour l'instant c'est juste une fenêtre Userform. Est-ce que je dois la "compiler" ou quelque chose comme ça? Si oui comment faire?
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 12h10   #12
Membre habitué
 
Inscription : juillet 2005
Messages : 141
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 141
Points : 117
Points : 117
Alors
si ta macro n'apparait pas ca doit être pasque tu l'as déclaré en private sub
déclare la en sub tout cours:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub mettre_en_gras()
Dim objTable As Table
Dim i As Integer
Dim a As String
Set objTable = ThisDocument.Tables(1)
 
For i = 1 To objTable.Rows.Count
    a = Left(objTable.Cell(i, 2).Range.Text, InStr(objTable.Cell(i, 2).Range.Text, vbCr) - 1)
    If a = "D" Then
        objTable.Rows(i).Select
        Selection.Font.Bold = wdToggle
    End If
Next i
end sub
rémi
gruget est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 12h23   #13
Membre du Club
 
Inscription : février 2007
Messages : 71
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : février 2007
Messages : 71
Points : 62
Points : 62
Tu dois appeler ta userform à partir d'un module dans le même projet

Code :
1
2
3
4
5
Public Sub mettre_en_gras()
 
UserForm.Show
 
End Sub
Si tu veux pouvoir fermer ta userform après avoir passer les lignes du tableaux en gras, il te faut mettre ça à la fin de ta procédure

Code :
1
2
3
4
5
6
7
Private Sub CommandButton1_Click()
 
'... ton traitement...
 
Unload Me
 
End Sub
Speedrman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 14h12   #14
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
Ok ça marche nickel chrome.
Merci beaucoup les gars.
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 16h58   #15
Membre habitué
 
Inscription : juillet 2005
Messages : 141
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 141
Points : 117
Points : 117
et...
pense au
gruget est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 17h08   #16
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
Voilà j'ai essayé la macro qui fonctionnait précédemment dans un fichier contenant du texte, des entêtes, ... et le fameux tableau mais la macro ne fonctionne plus avec ce document.
N'y a-t-il pas moyen, en sélectionnant manuellement le tableau, de faire les mêmes opérations?
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 17h20   #17
Membre habitué
 
Inscription : juillet 2005
Messages : 141
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 141
Points : 117
Points : 117
Citation:
mais la macro ne fonctionne plus avec ce document.
quel document?
Citation:
en sélectionnant manuellement le tableau
c'est à dire??
quand tu fais
Code :
Set objTable = ThisDocument.Tables(1)
tu sélectionnes le tableau1 mais si yen a plus il faut trouver lequel est-ce
rémi
gruget est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 17h27   #18
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
Le document que j'évoque est un fichier word dans lequel le tableau n'est qu'une partie. J'ai voulu voir si la macro fonctionnait aussi avec ce document, mais apparemment non.
Le fichier contenant en effet plusieurs types de tableaux, je me demandais s'il n'était pas plus simple de faire une sélection (du tableau) et de lancer ensuite la macro qui n'agirait que sur le tableau sélectionné.
perophron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 17h39   #19
Membre habitué
 
Inscription : juillet 2005
Messages : 141
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 141
Points : 117
Points : 117
Je t'avoue que la tu arrives à mes limites vba word je sais pas trop gérer la sélection d'un tableau en word
sous excel ca serait plus simple mais bon...
par contre en changeant le 1 dans
Code :
objTable = ThisDocument.Tables(1)
tu peux accéder à d'autres tableau
rémi
gruget est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 17h45   #20
Candidat au titre de Membre du Club
 
Inscription : avril 2007
Messages : 93
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 93
Points : 11
Points : 11
Oui j'ai essayé et ça marche.
Mais tu ne saurais vraiment pas comment définir le tableau sélectionné comme objet? Un truc du genre Dim Selection As Table ou objTable = Selection?
Sinon tant pis, ton aide m'a déjà été très précieuse et je t'en remercie
perophron 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 06h18.


 
 
 
 
Partenaires

Hébergement Web