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 29/01/2008, 09h57   #1
Invité de passage
 
Inscription : janvier 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 13
Points : 4
Points : 4
Par défaut boucle avec EOF

Bonjour,
je voudrais faire une boucle qui se termine à la fin d'un fichier.
Je n'ai pas trouvé de quoi m'aider dans ce que j'ai lu ici (et encore moins dans l'aide de Word).
voici un de mes essais :

Do While Not EOF
.../...
Loop

Merci d'avance de bien vouloir m'aider.
Cordialement,
Jean-Marie
jmcemoa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 14h30   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Une boucle sur quoi ?

Sur les paragraphes, les phrases, les mots, les lettres, .....

En général, en VBA, on boucle sur un objet qui se trouve dans une collection.

Dis nous quel boucle tu veux fair et pour quel résultat.
__________________
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 29/01/2008, 14h48   #3
Invité de passage
 
Inscription : janvier 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 13
Points : 4
Points : 4
Bonjour Heureux-oli
et merci de me répondre
Mon but est d'imprimer différents documents dont la liste est contenu dans un tableau (1 seule colonne avec titre) dans le fichier "liste impression.doc".
Je bute sur "Do While Not EOF"
voici le routine que j'essaye :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub impression()
   Dim imprim As String
    Documents.Open FileName:="liste impression.doc"
    Selection.HomeKey Unit:=wdStory
    Do While Not EOF
        Selection.MoveRight Unit:=wdCell
        Selection.Copy
        imprim = Selection
        Documents.Open FileName:=imprim
        Application.PrintOut
        ActiveDocument.Close
    Loop
    ActiveDocument.Close
End Sub
J'espère que mes explications sont assez claires
Cordialement,
Jean-Marie
jmcemoa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 15h13   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Pour une table, il y a une autre méthode plus efficace.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
Dim tbl as table
dim i as integer
dim oDoc as Document
set tbl = activeDocument.rows.count
 
For i = 1 to tbl.Rows.count
    set oDoc =  Document.open FileName:=tbl.cell(i,1)
    oDoc.PrintOut
    oDoc.Close
    set oDoc = Nothing
next i
__________________
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 29/01/2008, 15h44   #5
Invité de passage
 
Inscription : janvier 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 13
Points : 4
Points : 4
j'aurais souhaité une réponse pour la boucle mais ...

Comme je ne suis pas trés doué en VBA, j'ai néanmoins essayé la routine afin d'en apprendre un peu plus.
J'ai malheureusement été bloqué sur la ligne
set oDoc = Document.open FileName:=tbl.cell(i,1)
avec le message : erreur de compilation - erreur de syntaxe
et cela dés le début.
J'ai surement du faire une erreur quelque part, mais où ?

Voici le fichier en question pour voir ce que j'ai fait
Fichiers attachés
Type de fichier : doc liste impression.doc (34,0 Ko, 3 affichages)
jmcemoa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 16h29   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Excuse moi, j'ai oublié un morceau.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub test()
Dim oTbl As Table
Dim i As Integer
 
Set oTbl = ActiveDocument.Tables(1)
For i = 2 To oTbl.Rows.Count
    SET oDoc = Documents.Open FileName:=Left(oTbl.Cell(i, 1).Range.Text, Len(oTbl.Cell(i, 1).Range.Text) - 2)
    oDoc.PrintOut
    oDoc.close
    set oDoc = Nothing
Next i
 
End Sub
Mais dans ton tableau, il manque le chemin du fichier en plus du nom.

Le principe de cette boucle :
On compte le nombre de ligne de la table, on adresse chaque cellule Cell(i,1) pour en récupérer le contenu.
Dans le cas d'une table While Not EOF // Wend ne fonctionne pas.
__________________
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 29/01/2008, 18h23   #7
Invité de passage
 
Inscription : janvier 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 13
Points : 4
Points : 4
Désolé de t'embêter encore, mais le problème persiste sur la ligne :
"SET oDoc = Documents.Open FileName:=Left(oTbl.Cell(i, 1).Range.Text, Len(oTbl.Cell(i, 1).Range.Text) - 2)"

Le chemin a été mis en tête pour éviter les répititions.

J'avoue mon incompréhension car je ne "vois" pas ce qui cloche.
Jean-Marie



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 29/01/2008 par jmcemoa  (aidé de "Heureux-oli")
'
    ChangeFileOpenDirectory _
           ActiveDocument.Path & "\"
Dim oTbl As Table
Dim i As Integer
 
Set oTbl = ActiveDocument.Tables(1)
For i = 2 To oTbl.Rows.Count
    SET oDoc = Documents.Open FileName:=Left(oTbl.Cell(i, 1).Range.Text, Len(oTbl.Cell(i, 1).Range.Text) - 2)
    oDoc.PrintOut
    oDoc.Close
    Set oDoc = Nothing
Next i
 
End Sub
jmcemoa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 18h57   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Ne me frappe pas tout de suite !

Quand on met un = il faut des ()


Code :
SET oDoc = Documents.Open (FileName:=Left(oTbl.Cell(i, 1).Range.Text, Len(oTbl.Cell(i, 1).Range.Text) - 2))
__________________
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 29/01/2008, 19h14   #9
Invité de passage
 
Inscription : janvier 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 13
Points : 4
Points : 4
Je n'oserais pas te frapper, surtout maintenant que cela fonctionne.
De plus, j'aurais appris de nouvelles choses et ça, c'est un plus.

Encore merci à toi, à ta patience et à ton dévouement.
Jean-Marie


PS : le mois n'étant pas fini, je peux encore te souhaiter mes meilleurs voeux pour 2008
Bonne année et bonne santé
jmcemoa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 20h32   #10
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Merci, mais pour la prochaine question où tu es satisfait de nos service, clique sur .
Je vais le faire, mais en principe, c'est la façon de dire Ok tout baigne.
__________________
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
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h54.


 
 
 
 
Partenaires

Hébergement Web