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 20/05/2011, 13h13   #1
Invité régulier
 
Inscription : mars 2009
Messages : 18
Détails du profil
Informations personnelles :
Âge : 53

Informations forums :
Inscription : mars 2009
Messages : 18
Points : 6
Points : 6
Par défaut Deplacement entre titres de même niveau

Bonjour à tous

J'ai écris cette petite routine permettant de déplacer la sélection d'un titre à un autre titre de même niveau.

Cela dit, pour plus de sécurité et pour ne pas effectuer un boucle sans fin, je souhaiterais sortir de la boucle Do....Loop Until, si la sélection se trouve en haut ou en bas du document.

J'ai tenté le code suivant dans la boucle :
If Selection.Bookmarks("\Para") = ActiveDocument.Bookmarks("\StartOfDoc") Then Exit Domais il ne fonctionne pas

Voici mon code
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
Public Sub DeplacerSelectionTitre(ByVal QuelSens As String)
Dim MonNiveau As Byte
'On déactive la mise à jour de l'écran
Application.ScreenUpdating = False
    With Selection
    'on verifie que le point d'insersion correspond à un titre
        If .ParagraphFormat.OutlineLevel < wdOutlineLevelBodyText Then
            'On deplace le point d'insersion au debut du paragraphe
                .StartOf Unit:=wdParagraph
            'on enregistre le niveau du point d'insersion
                MonNiveau = .ParagraphFormat.OutlineLevel
            'On deplace le curseur dans le sens selectionné
            Select Case QuelSens
                Case "Suivant"
                    Do
                        .GoTo what:=wdGoToHeading, Which:=wdGoToNext
                    Loop Until .ParagraphFormat.OutlineLevel = MonNiveau
                Case "Precedent"
                    Do
                        .GoTo what:=wdGoToHeading, Which:=wdGoToPrevious
                    Loop Until .ParagraphFormat.OutlineLevel = MonNiveau
            End Select
        Else
            MsgBox "Veuillez déplacer la selection sur un niveau de titre!...", vbInformation + vbOKOnly, "Attention......"
        End If
        .Select
    End With
'On réactive la mise à jour de l'écran
Application.ScreenUpdating = True
End Sub
Si quelqu'un à une solution d'avance merci
Cordialement
Serge
Sergio06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 19h07   #2
Membre actif
 
Avatar de Souriane
 
Femme Guylaine C.
Assistant aux utilisateurs
Inscription : septembre 2009
Messages : 157
Détails du profil
Informations personnelles :
Nom : Femme Guylaine C.
Âge : 39
Localisation : Canada

Informations professionnelles :
Activité : Assistant aux utilisateurs
Secteur : Service public

Informations forums :
Inscription : septembre 2009
Messages : 157
Points : 153
Points : 153
Bonjour,

Je remplacerais :
Code :
Selection.Bookmarks("\Para") = ActiveDocument.Bookmarks("\StartOfDoc")
par
Code :
ActiveDocument.Bookmarks("\Sel") = ActiveDocument.Bookmarks("\StartOfDoc")
Car "\Para" = Paragraphe(s) sélectionné(s) et "\StartOfDoc" = Début du document
et à mon avis, StartOfDoc est un point d'insertion (donc pas de caractères) et Para est un paragraphe au complet.

"\Sel" quant à lui = Sélection OU point d'insertion

Donc, \StartOfDoc peut être = à \Sel.

Est-ce que ça fait du sens? Je n'ai pas testé cependant mais c'est une piste de solution...

Bonne chance et svp, indiquer (pour usage futur sur le forum) si ça fonctionne ou pas. Merci!

Souriane
Souriane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 08h57   #3
Invité régulier
 
Inscription : mars 2009
Messages : 18
Détails du profil
Informations personnelles :
Âge : 53

Informations forums :
Inscription : mars 2009
Messages : 18
Points : 6
Points : 6
bonjour

Merci Souriane pour ces infos, je vais tester dans mon programme si ca fonctionne.

Cela dit, j'avais trouvé un bidouillage avec un compteur qui s'incrementait à chaque boucle avec une sortie forcée dés que celui ci atteignait une certaine valeur.

Dans tout les cas merci encore
Cordialement
Serge
Sergio06 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 16h17.


 
 
 
 
Partenaires

Hébergement Web