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/08/2006, 20h58   #1
Invité de passage
 
Inscription : août 2006
Messages : 5
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 5
Points : 2
Points : 2
Par défaut Supprimer les lignes vides d'un document Word

Bonsoir à toutes et à tous,

dans une macro, je ne parviens pas à trouver comment s'y prendre pour supprimer toutes les lignes vides d'un document Word.

Je vous remercie d'avance de votre aide.

Bonne soirée !
Jerfa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2006, 07h53   #2
Membre régulier
 
Enseignant
Inscription : août 2006
Messages : 141
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : août 2006
Messages : 141
Points : 70
Points : 70
Envoyer un message via MSN à Lexot2
Bonjour

Voici un code qui supprime les lignes vides, sur un document de 200 lignes à l'origine (nblignes ). La suppression s'effectue de la fin au début du document.
Pas de gestion d'erreurs, ni de test de fin de document, car je suis débutant en Word. Pas de souci à avoir, le code fonctionne!
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
Dim nblignes As Integer
 
Sub Supprime_lignes_vides()
 
    Selection.EndKey Unit:=wdStory
 
    For nblignes = 1 To 200
        Selection.HomeKey Unit:=wdLine
        Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        If Selection = Chr(13) Then
            Selection.Delete Unit:=wdCharacter, Count:=1
        Else
            Selection.MoveUp Unit:=wdLine, Count:=1
        End If
    Next nblignes  
 
End Sub
Lexot2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2006, 10h46   #3
Invité de passage
 
Inscription : août 2006
Messages : 5
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 5
Points : 2
Points : 2
Je te remercie, Lexot2, ça fonctionne.

Bonne journée à toi !
Jerfa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2006, 11h57   #4
Invité de passage
 
Inscription : août 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 20
Points : 3
Points : 3
Par défaut Une autre solution, qui ne repose pas sur le nombre de lignes

Bonjour,

ton problèle de ligne vides reviens à supprimer les retour-chariots inutiles dans tout ton document.
Tu peux utiliser les caractères génériques pour ça afin de faire la manip sans tenir compte du nombre de ligne de ton document.

Fais un "rechercher - remplacer" simple en cochant la case "utiliser les caractères génériques"...

Dans la zone "rechercher", tape la commande suivante :
"^13{2;}"
(^13 est le code à employer pour le retour chariot lorsque tu utilise les caractères génériques, le {2;} signifie "2 ou plus"...

Dans la zone remplacer, tape
"^p"
^p est le code à employer pour le retour chariot lorsque tu n'utilise pas les caractères génériques.

Cette commande va donc remplacer toutes les suites de "deux ou plus" retour chariot par un seul. Résultat, toutes tes lignes vides disparraissent...

Une macro pour faire ça de manière répétitive ?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Sub LignesVides()
' Pour supprimer toutes les lignes vides d'un document Word
    Selection.Find.Execute
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^13{2;}" ' rechercher partout 2 ou + retour chariots
        .Replacement.Text = "^p" ' remplacer par un retour chariot
        .Forward = True
        .Wrap = wdFindContinue
        .MatchWildcards = True ' Usage des caractères génériques
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Et voila !
kitcreanet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2006, 16h12   #5
Invité de passage
 
Inscription : août 2006
Messages : 5
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 5
Points : 2
Points : 2
Merci kitcreanet.

Ça paraît si simple une fois que c'est dit... C'est ça l'élégance ! hihi

Bonne fin de journée à toi !
Jerfa 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 09h58.


 
 
 
 
Partenaires

Hébergement Web