IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Do While et nombre de pages pas mis à jour


Sujet :

VBA Word

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 39
    Points : 26
    Points
    26
    Par défaut Do While et nombre de pages pas mis à jour
    Je voudrais faire une boucle qui ajoute des retours chariot jusqu'à la fin de la page. J'ai fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim Plage As Range
    Do While ActiveDocument.BuiltInDocumentProperties(wdPropertyPages) = 1
    Set Plage = ActiveDocument.Range(Start:=ActiveDocument.Range.End - 1, End:=ActiveDocument.Range.End - 1)
    Plage = Chr(10)
    MsgBox ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)
    Loop
    Mais ça ne marche pas, ça boucle à l'infini en mettant qu'il n'y a que 1 page, alors que si j'arrête la boucle, il y a déjà bcp plus de 2 pages

    Pourtant, "ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)", me donne bien le bon nombre de pages si je met les retour à la main par exemple ou dans d'autre partie du programme...
    Une idée ?

    EDIT : Il faut en fait repaginer le document pour mettre à jour les numeros de pages
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Repaginate

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Ta boucle tourne sans arrêt, parce que tu n'as pas d'incrémentation.

    Sans incrémentation, c'est avec une boucle For Next quand tu ne détermines pas de pas.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 39
    Points : 26
    Points
    26
    Par défaut
    Heuuu ... Si ça marche justement (j'ai fait un edit et mis résolu ), c'était juste qu'il fallait mettre à jour le nombre de page dans la boucle comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Do While ActiveDocument.BuiltInDocumentProperties(wdPropertyPages) = 1
        Set Plage = ActiveDocument.Range(Start:=ActiveDocument.Range.End - 1, End:=ActiveDocument.Range.End - 1)
        Plage = Chr(11)
        ActiveDocument.Repaginate
    Loop
    En effet, je n'ai pas d'incrémentation, mais la boucle s'arrete bien quand le nombre de passage à la ligne est assez important pour déborder sur la page 2.

    P.S : Je ne comprends pas pourquoi une boucle for Next serait plus approprié vu que ce n'est pas un compteur que je veux : je ne sais sais pas combien de retours à la ligne il me faut pour déborder sur une autre page, je ne sais donc pas le nombre d'itération à effectuer, while me semble plus adapté, non ?

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Citation Envoyé par Acivurt Voir le message
    Heuuu ... Si ça marche justement (j'ai fait un edit et mis résolu ), c'était juste qu'il fallait mettre à jour le nombre de page dans la boucle comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Do While ActiveDocument.BuiltInDocumentProperties(wdPropertyPages) = 1
        Set Plage = ActiveDocument.Range(Start:=ActiveDocument.Range.End - 1, End:=ActiveDocument.Range.End - 1)
        Plage = Chr(11)
        ActiveDocument.Repaginate
    Loop
    En effet, je n'ai pas d'incrémentation, mais la boucle s'arrete bien quand le nombre de passage à la ligne est assez important pour déborder sur la page 2.

    P.S : Je ne comprends pas pourquoi une boucle for Next serait plus approprié vu que ce n'est pas un compteur que je veux : je ne sais sais pas combien de retours à la ligne il me faut pour déborder sur une autre page, je ne sais donc pas le nombre d'itération à effectuer, while me semble plus adapté, non ?
    Je n'ai pas dit qu'une boucle For Next serait mieux appropriée, juste que dans une boucle For Next, il n'est pas nécessaire d'avoir un incrément.

    Désolé, je pensais que le résolu était accidentel !

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 39
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Je n'ai pas dit qu'une boucle For Next serait mieux appropriée, juste que dans une boucle For Next, il n'est pas nécessaire d'avoir un incrément.

    Désolé, je pensais que le résolu était accidentel !
    Pas de souci
    C'est un peu HS vu que mon problème est résolu, mais je ne comprends pas pourquoi une For Next n'a pas besoin d'increment ? Justement le Next est une incrémentation non ?
    Et dans Do {While/Until} il faut un incrément obligatoirement ? La aussi je suis un peu dépassé ...
    Tu pense que je dois mettre un For Next dans mon cas ? Comment l'adpater je vois pas trop comment remplacer mon While par un For

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub boucle()
    Dim x, y As Integer
    y = 10
    For x = 1 To y
    Debug.Print x
    Next x
     
    End Sub
    Essaie ce code, tu verras qu'il ne faut pas d'incrémentation.

    Si tu ajoutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub boucle()
    Dim x, y As Integer
    y = 10
    For x = 1 To y step 2
    Debug.Print x
    Next x
     
    End Sub
    Avec le pas de 2 tu auras une incrémentation de 2 par boucle.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 39
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub boucle()
    Dim x, y As Integer
    y = 10
    For x = 1 To y
    Debug.Print x
    Next x
     
    End Sub
    Essaie ce code, tu verras qu'il ne faut pas d'incrémentation.

    Si tu ajoutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub boucle()
    Dim x, y As Integer
    y = 10
    For x = 1 To y step 2
    Debug.Print x
    Next x
     
    End Sub
    Avec le pas de 2 tu auras une incrémentation de 2 par boucle.
    J'ai bien saisi le notion de For Next, seulement comment l'utiliser quand on ne connais pas la valeur de y comme dans mon cas ? Il peut en avoir 3 comme 15 deq sautq de ligne avant de déborder sur la page.

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    C'était un exemple, je n'ai jamais dit que tu devais l'utiliser.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. champs pas mis à jour mais en valeur "0"
    Par Alminar dans le forum Word
    Réponses: 2
    Dernier message: 18/10/2007, 20h49
  2. [ADO.NET]Apparament mon delete n'est pas mis à jour.Quoi que?
    Par lrx94 dans le forum Accès aux données
    Réponses: 4
    Dernier message: 05/12/2006, 15h33
  3. innerHTML, code HTML pas mis à jour
    Par highman dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/10/2006, 14h55
  4. trigger champ pas mis à jour
    Par Magohamoths dans le forum Développement
    Réponses: 2
    Dernier message: 06/10/2006, 09h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo