Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo
Sommaire > VBA
        Quelles sont les macros qui s'exécutent seules dans Word ?
        Comment obtenir l'affichage de certaines boîtes de dialogue prédéfinies ?
        Comment en VBA souligner mon texte autrement que par une simple ligne ?
        Comment retrouver le chemin du fichier Normal.dot sur mon ordinateur ?
        Comment empêcher la mise à jour de l'affichage pendant l'exécution d'une macro ?
        Comment remplacer une macro dans tous fichiers DOT d'un répertoire ?
        Peut-on générer les statistiques par le code ?
        Comment isoler une page spécifique dans un document ?
        Comment exécuter une macro d'un document Word ?
        Comment faire une recherche avec Range qui modifie le format du mot cherché ?
        Comment mettre en page le document ?
        Comment fonctionnent les protections Word ?
        Comment créer et mettre en forme un en-tête ?
        Comment atteindre une plage comprise entre deux signets ?
        Comment connaitre les valeurs des twips en VBA ?
        Comment vider le presse-papier en VBA ?
        Comment créer un certificat local pour les macros VBA ?
        Comment modifier l'entête et/ou le pied de page d'un document Word ?
        Comment modifier les marges d'un document Word ?
        Comment insérer la date du jour dans un signet Word ?
        Pourquoi travailler avec l'objet Range et l'objet Selection ?
        Comment faire un remplacement de toutes les occurrences d'un mot ?
        Pourquoi ai-je toujours un texte sélectionné ?
        Comment sélectionne-t-on avec VBA Word
        Que représente la collection Sentences ?
        Je ne trouve pas la propriété visible d'un document Word 97 ?
        Peut-on ajouter des raccourcis-clavier par le code ?
        Comment mettre en place un moyen d'ouvrir un document à l'endroit de la dernière édition ?
        Comment récupérer les fautes d'orthographe contenues dans un document et les sauvegarder dans un fichier texte ?
        Comment faire pour changer l'imprimante par défaut en Word ?
        Pourquoi lorsque je fais appel à un autre programme de la suite office, je reçois un message d'erreur me signalant que le type de données utilisateur est non défini ?
        Est-il possible d'obtenir plusieurs résultats d'une fonction ?
        Comment changer le répertoire par défaut de Word ?
        Comment désactiver un élément du menu ?
        Comment mettre le contenu d'un signet en Gras ?
        Comment appeler une macro se trouvant dans un autre document ?
        Comment tester le type de données dans mon code ?
        Quelles sont les syntaxes du langage VBA ?
        Comment déclarer mes variables en VBA ?
        11.1. Tables (15)
                Comment fusionner des cellules dans un document Word ?
                Comment copier une ligne précise d'un tableau Word et la coller dans Excel ?
                Comment exporter des données Excel dans des cellules précises d'un tableau Word ?
                Comment scinder un tableau qui fait plus de 10 lignes en dupliquant les titres ?
                Comment vérifier si la première cellule d'un tableau est 'vide' ?
                Comment importer un tableau Word en intégrant les retours à la ligne ?
                Comment exporter un tableau Excel vers Word et l'adapter à la largeur de la page ?
                Comment récupérer la donnée d'un champ de fusion dans un document Word ouvert ?
                Comment insérer une image dans une cellule d'un tableau d'un document Word ?
                Comment ajouter une colonne dans un tableau d'un document Word ?
                Comment créer et remplir un tableau ?
                Comment gère-t-on la mise en forme d'un tableau ?
                Comment importer les données provenant de plusieurs tableaux Word ?
                Comment connaître le nombre de lignes et de colonnes de mon tableau ?
                Comment ajouter un espace au-dessus d'un tableau lorsque ce dernier est le premier objet du document ?
        11.2. Images (6)
                Comment insérer, redimensionner et positionner une image dans un document Word existant ?
                Comment coller dans Word une sélection de cellules au format image Bitmap ?
                Comment insérer et modifier une image ?
                Comment insérer une image dans l'en-tête de mon document ?
                Quels sont les différents types d'images que l'on peut trouver dans un document ?
                Comment insérer un Gif animé dans un document Word ?
        11.3. Documents (6)
                Comment ouvrir un document ?
                Comment créer un nouveau document Word ?
                Comment importer la totalité d'un document Word dans une feuille Excel ?
                Comment piloter un document Word déjà ouvert ?
                Peut on récupérer les propriétés du document (auteur, titre) ?
                Comment éviter la question 'Voulez vous sauvegarder ...' ?
        11.4. Champs (9)
                Comment obtenir dans un nouveau document la liste de tous les signets d'un document ?
                Comment récupérer le code et la valeur des champs de mon document ?
                Comment écrire/lire des données dans un champ personnalisé Word ?
                Comment insérer une table des matières ?
                Comment insérer un signet qui ne contient pas de texte ?
                Pourquoi mon signet est il détruit lorsque je modifie son texte ?
                Comment exporter des données Excel vers plusieurs signets d'un document Word ?
                Comment ajouter un lien hypertext à mon document ?
                Comment faire pour imprimer sur une nouvelle page, la liste de toutes les adresses hyperliens associées à leur affichage ?
        11.5. Fichiers (2)
                Comment Lire et modifier les propriétés des fichiers Office ?
                Comment utiliser le système de fichier dans une procédure ?
        11.6. Fomulaires Word (6)
                Comment faire pour effectuer une action sur un champ de formulaire ?
                Comment imposer pour les cases à cocher des formulaires un choix unique ?
                Pourquoi je ne parviens pas à utiliser les champs de mon formulaire ?
                Comment récupérer les données de mon formulaire ?
                Comment ajouter des données à une liste déroulante ?
                Comment faire pour obtenir une liste déroulante contenant plus de 25 items ?
        11.7. Formulaires 'UserForm' (1)
                Comment afficher mon formulaire (UserForm) ?
        11.8. Paragraphes (4)
                Comment accéder aux paragraphes d'un document Word ?
                Lorsque je change le texte de mon paragraphe la mise en page change ?
                Pourquoi je n'arrive pas à sélectionner le dernier mot de mon paragraphe ?
                Comment supprimer les lignes vides d'un document ?
        11.9. Interraction avec d'autres logiciels (2)
                Comment envoyer un document par mail ?
                Comment utiliser Word avec les autres logiciels de la suite Office ?
        11.10. Pages (2)
                Comment obtenir le nombre de page d'un document?
                Comment exporter un nombre de pages choisies ?

precedent    sommaire    suivant   


Quelles sont les macros qui s'exécutent seules dans Word ?
auteur : Lebeau Olivier
En attribuant un nom particulier à une macro, la macro pourra s'exécuter lors de
certains évènements comme l'ouverture d'un document, la création d'un nouveau document.

Macro Evènement
AutoExec Lorsque vous démarrez Word
AutoNew Lors de la création d'un nouveau document basé sur un modèle
AutoOpen Lors de l'ouverture d'un document
AutoClose Lors de la fermeture d'un document
AutoExit Lorsque vous quittez Word
Document_BuildingBlockInsert Cette macro s'exécute lors de l'insertion d'un élément "QuickPart"
Document_Close Cette macro s'exécute lors de la fermeture du document
Document_ContentControlAfterAdd Lors de l'ajout d'un Contrôle de contenu spécifique
Document_ContentControlBeforeContentUpdate Lors de la modification du contenu d'un Contrôle de contenu spécifique
Document_ContentControlBeforeDelete Avant suppression d'un Contrôle de contenu spécifique
Document_ContentControlBeforeStoreUpdate Survient avant que le magasin de données XML du document soit mis à jour avec la valeur d'un contrôle du contenu.
Document_ContentControlOnExit Sur sortie du contrôle
Document_New Sur création d'un nouveau document alors que le document qui contient la procédure est ouvert.
Document_Open Sur ouverture d'un document alors que le document qui contient la procédure est ouvert.
Document_Sync Se produit lorsque la copie locale d'un document faisant partie d'un espace de travail de document est synchronisée avec la copie sur le serveur.
Document_XMLAfterInsert Se produit lorsqu'un utilisateur ajoute un nouvel élément XML à un document.
Document_XMLBeforeDelete Se produit lorsqu'un utilisateur supprime un élément XML d'un document.

Comment obtenir l'affichage de certaines boîtes de dialogue prédéfinies ?
auteur : Lebeau Olivier
Pour faire appel à une boîte de dialogue :


Dialogs(wdDialogFileOpen).Show

Je vous conseille de consulter l'aide pour obtenir la liste de toutes les boîtes de dialogue disponibles.


Comment en VBA souligner mon texte autrement que par une simple ligne ?
auteur : Lebeau Olivier
Avec ce code, vous pouvez choisir le mode de soulignement d'une sélection.


Selection.Font.Underline = wdUnderlineWavyHeavy
Liste des soulignements possibles.

  • wdUnderlineDash ++ Tirets.
  • wdUnderlineDashHeavy ++ Tirets épais.
  • wdUnderlineDashLong ++ Tirets longs.
  • wdUnderlineDashLongHeavy ++ Tirets longs épais.
  • wdUnderlineDotDash ++ Alternance de points et de tirets.
  • wdUnderlineDotDashHeavy ++ Alternance de points gras et de tirets gras.
  • wdUnderlineDotDotDash ++ Alternance de points et de points-tirets.
  • wdUnderlineDotDotDashHeavy ++ Alternance de points et de points-tirets épais.
  • wdUnderlineDotted ++ Points.
  • wdUnderlineDottedHeavy ++ Points épais.
  • wdUnderlineDouble ++ Double ligne.
  • wdUnderlineNone ++ Aucun soulignement.
  • wdUnderlineSingle ++ Trait simple. Valeur par défaut.
  • wdUnderlineThick ++ Trait épais simple.
  • wdUnderlineWavy ++ Trait ondulé simple.
  • wdUnderlineWavyDouble ++ Double trait ondulé.
  • wdUnderlineWavyHeavy ++ Trait ondulé épais.
  • wdUnderlineWords ++ Soulignement des mots individuels.

Comment retrouver le chemin du fichier Normal.dot sur mon ordinateur ?
auteur : Lebeau Olivier

Comment retrouver le chemin du modèle normal.dot sur mon ordinateur.

Public Sub normalchemin()
MsgBox Application.NormalTemplate.Path

End Sub

Comment empêcher la mise à jour de l'affichage pendant l'exécution d'une macro ?
auteur : Lebeau Olivier

Application.ScreenUpdating = False ' fige l'affichage

Application.ScreenUpdating = True  ' pour dégeler l'affichage

Comment remplacer une macro dans tous fichiers DOT d'un répertoire ?
auteur : SilkyRoad

Sub remplacement_Macro_WordDot() 
Dim Debut As Integer, Lignes As Integer, X As Integer 
Dim Fichier As String, Direction As String 
Dim Doc As Document   
Application.ScreenUpdating = False   'boucle sur tous les fichiers .dot du repertoire 
Direction = "C:\Documents and Settings\michel\dossier" 
Fichier = Dir(Direction & "\*.dot") 
Do While Fichier <> ""   
Set Doc = Documents.Open(Direction & "\" & Fichier)   
	'suppression macro nommée "essai" dans module1  
	With Doc.VBProject.VBComponents("Module1").CodeModule 
	Debut = .ProcStartLine("essai", 0) 
	Lignes = .ProcCountLines("essai", 0) 
	.DeleteLines Debut, Lignes 
	End With 
	
	'ajout macro nommée "MaNouvelleMacro" dans Module1  
	With Doc.VBProject.VBComponents("Module1").CodeModule 
	X = .CountOfLines 
	.InsertLines X + 1, "Sub MaNouvelleMacro()" 
	.InsertLines X + 2, "MsgBox ""Coucou"",VBinformation " 
	.InsertLines X + 3, "End Sub" 
	End With 
	
DoEvents 
Doc.Close True 
Set Doc = Nothing   
Fichier = Dir 
Loop 
Application.ScreenUpdating = True   
End Sub

Peut-on générer les statistiques par le code ?
auteur : bidou
Oui, il faut par contre demander le calcul pour une statistique
Dim objDoc As Word.Document, msg As String

Set objDoc = Application.Documents.Open("d:\tuto.doc")
MsgBox "Le documents contient " & objDoc.ComputeStatistics(wdStatisticPages) & " pages et " & objDoc.ComputeStatistics(wdStatisticWords) & " mots"
Vous pouvez obtenir les statistiques pour
  • wdStatisticCharacters : nombre de caractères
  • wdStatisticCharactersWithSpaces : nombre de caractères avec les espaces
  • wdStatisticLines : nombre de lignes
  • wdStatisticPages : nombre de pages
  • wdStatisticParagraphs : nombre de paragraphes (retour chariot)
  • wdStatisticWords : nombre de mots


Comment isoler une page spécifique dans un document ?
auteur : SilkyRoad

Sub Test()  
	IsolerPage 4 
End Sub     

Public Sub IsolerPage(NumPage As Integer)  
Dim NbLigne As Long  
Dim NombrePage As Integer  
NombrePage = _ 
	ActiveDocument.BuiltInDocumentProperties("Number of Pages")  
	If NombrePage < NumPage Then Exit Sub  
	ActiveDocument.Range.Select  
	Selection.GoTo What:=wdGoToPage, _
 		Which:=wdGoToAbsolute, Count:=NumPage + 1  
	Selection.Move Unit:=wdCharacter, Count:=-1  
	
	If NombrePage = NumPage Then Selection.Move Unit:=wdCharacter, _ 
		Count:=ActiveDocument.Range.Characters.Count  

	NbLigne = Selection.Information(wdFirstCharacterLineNumber)  

	If NombrePage = NumPage Then NbLigne = NbLigne - 1  
	
	Selection.Move Unit:=wdCharacter, Count:=1  

	With Selection 
		.HomeKey Unit:=wdLine, Extend:=wdMove 
		.ExtendMode = True  
		.MoveUp Unit:=wdLine, Count:=NbLigne 
		.ExtendMode = False  
	End With  
	Selection.Copy  
	Documents.Add  
	ActiveDocument.Range.Paste   
	If NumPage < NombrePage Then  
		Selection.Move Unit:=wdCharacter, _ 
			Count:=ActiveDocument.Range.Characters.Count  
		Selection.Delete Unit:=wdCharacter, Count:=1  
	End If 
End Sub

Comment exécuter une macro d'un document Word ?
auteur : SilkyRoad
Nécessite d'activer la référence "Microsoft Word xx.x Object Library".
vba

Dim WordApp As Word.Application

    Set WordApp = CreateObject("Word.Application")
    WordApp.Visible = True
    
    WordApp.Documents.Open ("C:\monDocument.dot")
    WordApp.Run "laMacro"

Comment faire une recherche avec Range qui modifie le format du mot cherché ?
auteur : bidou
Normalement, la sélection ne se fait que si Selection est la cible de la recherche ; Néanmoins, vous pouvez procéder à la sélection en désignant le parent de l'objet Find. Le code suivant encadre le texte GNU

Dim objDoc As Document, objRange As Range

Set objDoc = Application.Documents.Open("c:\jmarc\tuto.doc")
With objDoc.Content.Find
    .ClearFormatting
    Do While .Execute(FindText:="GNU", Forward:=True, Format:=True) = True
        With .Parent
            .StartOf Unit:=wdWord, Extend:=wdExtend
            .Borders.Enable = True
        End With
    Loop
End With

Comment mettre en page le document ?
auteur : bidou
On utilise pour cela l'objet PageSetup de document. Par exemple

With ActiveDocument.PageSetup
        .Orientation = wdOrientLandscape
        .FirstPageTray = wdPrinterDefaultBin
        .OtherPagesTray = wdPrinterDefaultBin
        .SectionStart = wdSectionNewPage
        .OddAndEvenPagesHeaderFooter = True
        .DifferentFirstPageHeaderFooter = True
        .VerticalAlignment = wdAlignVerticalTop
        .SuppressEndnotes = False
        .MirrorMargins = True
End With

Comment fonctionnent les protections Word ?
auteur : bidou
Elles sont de plusieurs sortes. Mot de passe d'accès
objDoc.Password= "passe"
Ce code doit être passé dans la méthode open pour ouvrir le document par le code. Protection spécifique
ActiveDocument.Protect Password:="monpasse", NoReset:=False, Type:=wdAllowOnlyComments
Dans ce cas, seuls les commentaires sont autorisés. Pour ôter la protection, utiliser le type wdNoProtection ou la méthode UnProtect


Comment créer et mettre en forme un en-tête ?
auteur : bidou
Le code suivant crée l'en-tête, centre le texte et le met en gras
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text = "En-tête"
With ActiveDocument.StoryRanges(wdPrimaryHeaderStory)
    .Bold = True
    .ParagraphFormat.Alignment = wdAlignParagraphCenter
End With

Comment atteindre une plage comprise entre deux signets ?
auteurs : Maxence Hubiche, bidou
On utilise la décomposition du range en Start et End
ActiveDocument.Range(ActiveDocument..Bookmarks("sig1").Range.Start, ActiveDocument..Bookmarks("sig2").Range.End).Select 

Comment connaitre les valeurs des twips en VBA ?
auteur : nico-pyright(c)
L'objet Screen n'existant pas en VBA, on peut retrouver ces valeurs en utilisant les fonctions de l'API Win32 :
vba

Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long

Private Const HWND_DESKTOP As Long = 0
Private Const LOGPIXELSX As Long = 88
Private Const LOGPIXELSY As Long = 90

Function TwipsPerPixelX() As Single
Dim lngDC As Long
    lngDC = GetDC(HWND_DESKTOP)
    TwipsPerPixelX = 1440& / GetDeviceCaps(lngDC, LOGPIXELSX)
    ReleaseDC HWND_DESKTOP, lngDC
End Function

Function TwipsPerPixelY() As Single
Dim lngDC As Long
    lngDC = GetDC(HWND_DESKTOP)
    TwipsPerPixelY = 1440& / GetDeviceCaps(lngDC, LOGPIXELSY)
    ReleaseDC HWND_DESKTOP, lngDC
End Function

Comment vider le presse-papier en VBA ?
auteur : rp
L'objet ClipBoard n'existant pas en VBA, il faut utiliser les fonctions de l'API Windows :
vba

'-- Déclaration des fonctions API
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long

Private Sub Commande0_Click()
    OpenClipboard 0 
    EmptyClipboard
    CloseClipboard
End Sub

Comment créer un certificat local pour les macros VBA ?
auteur : ThierryAim
Lorsque le niveau de sécurité intrinsèque des documents Office est réglé sur moyen ou élevé, il est alors impossible d'activer automatiquement les macros d'un document.

La première solution consiste à régler le niveau de sécurité sur faible (Menu Outils >> Macros >> Sécurité...), mais n'est pas très recommandée.

L'autre solution consiste à auto-certifier les macros d'un document.
Un certificat local, valable uniquement sur la machine sur laquelle il est installé, va vous permettre d'éviter le désagrément d'avoir à confirmer l'activation des macros à l'ouverture d'un document, ou pire, la désactivation systématique des macros.

Comment procéder :
  • Rechercher dans le répertoire d'installation de Microsoft Office (généralement C:\Program Files\Microsoft Office\OfficeXX) le programme SelCert.exe
  • Exécuter SelfCert.exe
  • Renseigner le nom du certificat dans la zone de texte et valider
  • Fermer SelfCert.exe
  • Ouvrir le document Office dont les macros doivent être certifiées
  • Dans l'éditeur VBA (Alt-F11), menu Outils >> Signature électronique ...
  • Cliquer sur "Choisir..." et sélectionner le certificat précédemment créé
  • Enregistrer le document
A la prochaine ouverture du document, une alerte de sécurité va apparaître, cocher alors la case "Toujours faire confiance aux macros provenant de... ".

Pour supprimer un certificat existant :
  • Panneau de configuration >> Options Internet
  • Onglet Contenu, cliquer sur Certificats...
  • Sélectionner le certificat et cliquer sur Supprimer


Comment modifier l'entête et/ou le pied de page d'un document Word ?
auteur : SilkyRoad
Nécessite d'activer la référence "Microsoft Word xx.x Object Library" :
vba

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

    Set WordApp = CreateObject("Word.Application")
    WordApp.Visible = True
    Set WordDoc = WordApp.Documents.Open("monDocument.doc")    'adapter le chemin
    With WordDoc.Sections(1)
        .Headers(wdHeaderFooterPrimary).Range.Text = "Le titre"
        .Headers(wdHeaderFooterPrimary).Range.Paragraphs.Alignment = wdAlignParagraphCenter
        .Footers(wdHeaderFooterPrimary).PageNumbers.Add
    End With

Comment modifier les marges d'un document Word ?
auteur : SilkyRoad
Nécessite d'activer la référence "Microsoft Word xx.x Object Library" :
vba

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

    Set WordApp = CreateObject("Word.Application")
    Set WordDoc = WordApp.Documents.Add
    WordApp.Visible = True

    With WordDoc.PageSetup
        .LeftMargin = CentimetersToPoints(1)
        .RightMargin = CentimetersToPoints(1)
        .TopMargin = CentimetersToPoints(1.5)
        .BottomMargin = CentimetersToPoints(2)
    End With

Comment insérer la date du jour dans un signet Word ?
auteur : SilkyRoad
Nécessite d'activer la référence "Microsoft Word xx.x Object Library" :

Dans l'exemple ci-dessous le signet à renseigner doit être nommé "SignetDate"
vba

Dim WordApp As Word.Application
Dim WordDoc As Word.document

    Set WordApp = New Word.Application
    WordApp.Visible = True
    Set WordDoc = WordApp.Documents.Open("monDocument.doc")

    WordDoc.Bookmarks("SignetDate").Range.Text = Format(Now, "dd/mm/yyyy")

Pourquoi travailler avec l'objet Range et l'objet Selection ?
auteur : bidou
Cela permet de gérer des opérations sur une plage sans modifier l'emplacement du point d'insertion. Supposons que je veuille insérer deux signets, l'un sur un mot, l'autre sur le point d'insertion, je peux faire :
Selection.TypeText Text:="Monsieur "
Set objRange = Selection.Words.First.Previous(wdWord)
objRange.Bookmarks.Add "genre"
With ActiveDocument.Bookmarks
    .Add Range:=Selection.Range, Name:="Nom"
    .DefaultSorting = wdSortByName
    .ShowHidden = True
End With

Comment faire un remplacement de toutes les occurrences d'un mot ?
auteur : bidou
Avec la méthode find et les bons paramètres
Set objDoc = Application.Documents.Open("c:\jmarc\tuto.doc")
objDoc.Content.Find.Execute FindText:="GNU", ReplaceWith:="GPL", Replace:=wdReplaceAll

Pourquoi ai-je toujours un texte sélectionné ?
auteur : bidou
Il y a beaucoup de confusion possible entre range et selection or les deux objets sont différents. Pour pouvoir basculer facilement de l'un à l'autre il faut utiliser une variable Range. Prenons un exemple
Dim objDoc As Document

Set objDoc = Application.Documents.Open("c:\jmarc\tuto.doc")
objDoc.Paragraphs(3).Range.Select
objDoc.Paragraphs(3).Range.EndOf wdWord, wdMove
Là, malgré le EndOf, le paragraphe est encore selectionné
Dim objDoc As Document, objRange As Range

Set objDoc = Application.Documents.Open("c:\jmarc\tuto.doc")
objDoc.Paragraphs(3).Range.Words(objDoc.Paragraphs(3).Range.Words.Count - 2).Select
Set objRange = objDoc.Paragraphs(3).Range
objRange.EndOf wdWord, wdMove
objRange.Select
Place le point d'insertion après le troisième paragraphe


Comment sélectionne-t-on avec VBA Word
auteur : bidou
Quelques exemples standards. Sélectionner tout le document
objDoc.Range(0, 0).Select
Selection.MoveEnd wdStory
Aller au début du document
Selection.HomeKey Unit:=wdStory
Aller à la fin du document
Selection.EndKey Unit:=wdStory
Sélectionner une ligne
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Sélectionner le troisième paragraphe
objDoc.Paragraphs(3).Range.Select

Que représente la collection Sentences ?
auteur : bidou
Sentences est une collection renvoyant les "phrases" de son conteneur (document, paragraphe ...). Par phrase on entend tout ce qui est compris entre des points et/ou des retours chariots.
Notez que c'est donc différent des lignes word
Dim objDoc As Document, Phrase As Range

Set objDoc = Application.Documents.Open("D:\tuto.doc")
MsgBox objDoc.Sentences.Count & vbCrLf & objDoc.BuiltInDocumentProperties(wdPropertyLines)
For Each Phrase In objDoc.Sentences
    Phrase.Select
    MsgBox "suite"
Next

Je ne trouve pas la propriété visible d'un document Word 97 ?
auteur : bidou
C'est normal, elle n'existe pas. Pour gérer un document invisible dans word 97, on utilise :
Set objDoc = GetObject("d:\user\tuto.doc")

Peut-on ajouter des raccourcis-clavier par le code ?
auteur : bidou
C'est assez facile. L'exemple suivant affecte la mise en exposant à CTRL+MAJ+E
    CustomizationContext = NormalTemplate
    KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyE, wdKeyControl, wdKeyShift), KeyCategory:=wdKeyCategoryCommand, Command:="Superscript"

Comment mettre en place un moyen d'ouvrir un document à l'endroit de la dernière édition ?
auteur : Lebeau Olivier
Il faut utiliser deux codes, l'un sur l'ouverture et l'autre sur la fermeture du document. Sur l'ouverture, pour atteindre un signet et le supprimer. Sur la fermeture, pour ajouter un signet à l'endroit de la dernière édition.

Sub AutoOpen()
ActiveDocument.Bookmarks("ICI").Select
ActiveDocument.Bookmarks("ICI").Delete
End Sub

Sub AutoClose()
With Selection
    .Bookmarks.Add "ICI"
End With

End Sub

Comment récupérer les fautes d'orthographe contenues dans un document et les sauvegarder dans un fichier texte ?
auteur : Lebeau Olivier
Pour récupérer les fautes d'un document, il faut faire appel à la collection SpellingErrors. Nous allons parcourir les membres ce cette collection, les ajouter à une variable et ensuite, insérer la variable dans un nouveau document qui sera sauvegardé au format texte.

Sub Fautes()
Dim mesFotes
Dim toutesmesfotes

For Each mesFotes In ActiveDocument.SpellingErrors
mesFotes.Select
toutesmesfotes = toutesmesfotes & vbCrLf & Selection
Next mesFotes
Application.Documents.Add
ActiveDocument.Content.InsertAfter toutesmesfotes
ActiveDocument.SaveAs FileName:="c:\temp\mesftes.txt", FileFormat:=wdFormatText
ActiveDocument.Close


End Sub

Comment faire pour changer l'imprimante par défaut en Word ?
auteur : Lebeau Olivier
Pour changer l'imprimante par défaut en Word, c'est n'est pas sur la collection documents qu'il faut agir mais sur l'objet application.

Sub printPDF()

Dim oldprint
oldprint = Application.ActivePrinter
Application.ActivePrinter = "PDFCreator"
ActiveDocument.PrintOut
Application.ActivePrinter = oldprint
End Sub
Le code ci-dessus permet de changer l'imprimante par défaut en activant PDFCreator et après l'impression, change de nouveau l'imprimante par défaut en reprenant l'imprimante du départ.


Pourquoi lorsque je fais appel à un autre programme de la suite office, je reçois un message d'erreur me signalant que le type de données utilisateur est non défini ?
auteur : Lebeau Olivier
Lors de l'appel en VBA d'une application autre que l'application hôte, il est impératif d'ajouter la bibliothèque de cette application à votre projet.

Ne pas ajouter cette référence, revient à utiliser des types de données qui sont inconnus.

On ajoute ces références par le menu "Outils" "Références" de l'éditeur VBE. La boîte de dialogue contient la liste des bibliothèques disponibles.


Est-il possible d'obtenir plusieurs résultats d'une fonction ?
auteur : Lebeau Olivier
En principe, une fonction ne peut renvoyer qu'une seule variable. Partant de là, il est possible d'utiliser une variable de type utilisateur.

Type MyVar
    IntA As Integer
    IntB As Integer
End Type
Voilà un type de donnée défini par l'utilisateur.

Sub MaProc()
Dim MyData As MyVar

With MyData
    .IntA = 10
    .IntB = 20
End With
MyData = monCalcul(MyData)
Debug.Print MyData.IntA, MyData.IntB

End Sub
	
Voilà un procédure qui va faire appel à une fonction et passer en paramètre une variable qui contient 2 valeurs.

Public Function monCalcul(MyDt As MyVar) As MyVar
monCalcul.IntA = MyDt.IntA * 2
monCalcul.IntB = MyDt.IntB / 4

End Function
Notre fonction renvoie bien deux résultats


Comment changer le répertoire par défaut de Word ?
auteur : Lebeau Olivier
Deux méthodes pour changer le répertoire par défaut de Word.
La première est permanente

Application.Options.DefaultFilePath(wdDocumentsPath) = "c:\temp"
La seconde n'est valable que pour la session Word en cours, si vous fermez Word, ce paramètre disparaît.

Application.ChangeFileOpenDirectory "C:\temp"

Comment désactiver un élément du menu ?
auteur : Philippe JOCHMANS
La barre de menu a comme nom Menu Bar

Application.Commandbars("Menu Bar").Controls(2).Enabled = false
Ce code désactive le menu Edition.


Comment mettre le contenu d'un signet en Gras ?
auteur : Lebeau Olivier
Que ce soit pour un signet ou pour un autre objet, vous devez travailler avec l'objet sélection pour pouvoir mettre du texte en gras.

ActiveDocument.Bookmarks(1).range.Select
With Selection
    .text = "Mon Texte"
    .Font.Bold = True
End With
Dans le code ci-avant, en plus de mettre du texte dans le signet, on le met en gras.


Comment appeler une macro se trouvant dans un autre document ?
auteur : Lebeau Olivier
Il est possible d'utiliser une macro se trouvant dans un autre document. Il faut pour cela que le document contenant la procédure soit ouvert.

Documents("MonDocument.docm").MaRoutine
Avec "MaRoutine" le nom de la macro située dans l'autre document.


Comment tester le type de données dans mon code ?
auteur : Lebeau Olivier
Dans le déroulement d'un code, il est parfois intéressant de connaître le type de variable utilisée.

VarType(MaVariable)
Les résultats renvoyés sont sous la forme d'un entier.

Type de donnée Valeur renvoyée Description
vbEmpty 0 Empty (non initialisée)
vbNull 1 Null (aucune donnée valide)
vbInteger 2 Entier
vbLong 3 Entier long
vbSingle 4 Nombre à virgule flottante en simple précision
vbDouble 5 Nombre à virgule flottante en double précision
vbCurrency 6 Valeur monétaire
vbDate 7 Valeur de date
vbString 8 Chaîne
vbObject 9 Objet
vbError 10 Valeur d'erreur
vbBoolean 11 Valeur booléenne
vbVariant 12 Variant (utilisée seulement avec des tableaux de variants)
vbDataObject 13 Objet d'accès aux données
vbDecimal 14 Valeur décimale
vbByte 17 Octet
vbUserDefinedType 36 Variant contenant des types définis par l'utilisateur
vbArray 8192 Tableau

precedent    sommaire    suivant   

Consultez les autres F.A.Q's


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2008  Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com