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 :

Que fait cette procédure ? [WD-365]


Sujet :

VBA Word

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Août 2017
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 52
    Points : 28
    Points
    28
    Par défaut Que fait cette procédure ?
    Bonjour
    Débutant, j'examine des morceaux de procédure pour intégrer les rudiments du VBA de Word

    Quelqu'un pourrait-il m'expliquer "en français" ce que va faire cette procédure...

    Merci

    For i = 1 To ActiveDocument.Paragraphs(22).Range.Words.Count - 1
    If ActiveDocument.Paragraphs(22).Range.Words(i) = "-" Then
    firstP = True
    End If
    If Not firstP Then
    prénom = prénom & "_"
    End If

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    bonjour le code est simple à comprendre on scrute le document et ses paragraphes et si on trouve un tiret à ce moment-là pas besoin de concaténer le prénom

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Août 2017
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 52
    Points : 28
    Points
    28
    Par défaut
    Merci...mais c'est surtout le rôle de "Count-1" qui me pose question...comment fonctionne t-il ?

  4. #4
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Pour éviter le -1 il faut mettre i à zéro
    Consulter le MSDN pour plus de renseignements.

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La boucle parcoure tous les mots du paragraphe 22. La propriété Count est commune à toutes les collections (ici la collection est Words)

    Pour mieux comprendre le code, tester la procédure ci-dessous en modifiant la valeur de la constante Pn pour afficher les mots du paragraphe choisi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub t()
      Const Pn As Integer = 2 ' Numéro du paragraphe
      Dim i As Integer
      Dim m As String
      Dim firstp As Boolean
      With ActiveDocument.Paragraphs(Pn).Range
        For i = 1 To .Words.Count - 1
          m = m & vbCrLf & i & ") " & .Words(i)
        Next
      End With
      MsgBox m
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Août 2017
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 52
    Points : 28
    Points
    28
    Par défaut
    merci pour cet exemple...ce qui me "chiffonne" c'est la présence de "-1" derrière Count. Pourquoi cette syntaxe ?
    Quand je supprime le "-1", ça fonctionne tout aussi bien... je sais, je pinaille sans doute mais il ne doit pas être là sans raison....

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le saut de paragraphe est compté comme un mot.

    Voir le code modifié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub t()
      Const Pn As Integer = 1 ' Numéro du paragraphe
      Dim i As Integer
      Dim m As String
      Dim c As Integer  ' Nombre de mots
      With ActiveDocument.Paragraphs(Pn).Range
        c = .Words.Count
        m = "Il y a " & c & " mots dans le paragraphe"
        For i = 1 To .Words.Count
          m = m & vbCrLf & i & ") " & .Words(i)
        Next
        m = m & vbCrLf & "Code Ascii du dernier mot = " & Asc(.Words(c))
      End With
      MsgBox m
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Août 2017
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 52
    Points : 28
    Points
    28
    Par défaut
    Ok .. merci pour cette précision

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

Discussions similaires

  1. Que fait cette fonction ?
    Par masterix59 dans le forum Débuter
    Réponses: 2
    Dernier message: 16/11/2007, 21h13
  2. que fait cette fonction ?
    Par salseropom dans le forum C
    Réponses: 21
    Dernier message: 12/10/2006, 18h33
  3. [Tableaux] Mais que fait cette condition exactement?
    Par pierrot10 dans le forum Langage
    Réponses: 5
    Dernier message: 21/09/2006, 12h36
  4. que fait la procédure SP_EXECUTESp_execute
    Par SILO dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 23/08/2006, 13h04
  5. Que fait cette requête?
    Par noinneh dans le forum Langage SQL
    Réponses: 8
    Dernier message: 12/10/2005, 19h38

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