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 :

Calculer le nombre de tableaux dans un fichier word


Sujet :

VBA Word

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Points : 36
    Points
    36
    Par défaut Calculer le nombre de tableaux dans un fichier word
    Bonjour,

    J'ai créé une macro qui me permet de récupérer des données issus de tabelaux contenues dans un fichier Word vers un fichier Excel.

    Mes questions :
    Comment calculer le nombre de Tables dans mon fichier word?
    Comment utiliser ce nombre de façon dynamique dans : For i = 1 To 65 (donc à la place de 65).


    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Sub Imp_EVTS()
     
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
     
        Set WordApp = CreateObject("word.application")
        WordApp.Visible = True    'Word reste masqué pendant l'opéraion
        Set WordDoc = WordApp.Documents.Open("C:\IT2.docx")     
     
        ActiveDocument.Repaginate
        MsgBox ActiveDocument.BuiltinDocumentProperties(wdPropertyPages)
     
          For i = 1 To 65
          WordDoc.Tables(i).Rows(1).Range.Copy
          Sheets("Feuil1").Select
          Range("A" & 1 + i).PasteSpecial xlPasteValues
          WordDoc.Tables(i).Rows(2).Range.Copy
          Range("B" & 1 + i).PasteSpecial xlPasteValues
          WordDoc.Tables(i).Rows(3).Range.Copy
          Range("C" & 1 + i).PasteSpecial xlPasteValues
          WordDoc.Tables(i).Rows(4).Range.Copy
          Range("D" & 1 + i).PasteSpecial xlPasteValues
          WordDoc.Tables(i).Rows(5).Range.Copy
          Range("E" & 1 + i).PasteSpecial xlPasteValues
          WordDoc.Tables(i).Rows(6).Range.Copy
          Range("F" & 1 + i).PasteSpecial xlPasteValues
          WordDoc.Tables(i).Rows(7).Range.Copy
          Range("G" & 1 + i).PasteSpecial xlPasteValues
     
       Next i
     
     
        'WordDoc.Tables(1).Rows(3).Range.Copy
        'Sheets("Feuil1").Select
     
        'Range("B1").PasteSpecial xlPasteValues
     
        WordDoc.Close
        WordApp.Quit
     
    End Sub
    Merci d'avance pour votre aide,

  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
    Salut,


    On peut toujours faire une boucle sur les tableaux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim oTbl As Table
     
    For Each oTbl in ActiveDocument.Tables
    ...
    ...
    ...
    Next oTbl

  3. #3
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut Pierrea,

    Citation Envoyé par Pierrea4564 Voir le message
    Comment calculer le nombre de Tables dans mon fichier word?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Tables.Count
    Comment utiliser ce nombre de façon dynamique dans : For i = 1 To 65 (donc à la place de 65).
    La solution de Heureux-Oli fonctionne bien mais tu peux aussi utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    aNbTableaux = ActiveDocument.Tables.Count
    For i = 1 To aNbTableaux
    @+

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Points : 36
    Points
    36
    Par défaut
    Salut !
    J'ai utilisé la solution de Sepia. Ca marche très bien.
    Merci beaucoup !!!

  5. #5
    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
    Salut,

    Si tu veux une boucle sur une variable, on peut alors gagner deux lignes de code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 1 to ActiveDocument.Tables.Count

  6. #6
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut Pierrea4564,

    Citation Envoyé par Heureux-oli Voir le message
    Salut,

    Si tu veux une boucle sur une variable, on peut alors gagner deux lignes de code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 1 to ActiveDocument.Tables.Count
    Attention, c'est volontairement que j'ai utilisé une variable. En effet, en techniques algorithmiques, il ne faut pas utiliser un indice de boucle que tu fais varier dans ta boucle ou un indice de fin que tu fais varier. n effet, imagine que tu supprimes des tableaux ou que tu en dupliques, à chaque tour de boucle, la valeur ActiveDocument.Tables.Count est modifiée mais en fonction de paramètres assez subtils (comme le langage ou les options de compilation), cette valeur peut être chargée avant et ne pas réévaluée à chaque tour de la boucle ==> tu ne sais pas combien tu vas faire de tour. Pour les puristes, j'ai même un exemple d'une boucle avec une fin sur ActiveDocument.Tables.Count qui plante Word (Word 2003 PC mais pas Word 2004 Mac car sur Mac, Word est moins rapide donc l'OS lui dit qu'il le temps de recalculer, c'est trop fun) car elle contient une suppression de tableaux dans la boucle.

    Comme ce cas n'est pas évident, j'ai préféré t'envoyer un code qui marche toujours pour une question purement didactique. Néanmoins le code d'Heureux-Oli fonctionne très bien (s'il n'y a pas de suppression/ajout de tableaux dans la boucle) et c'est souvent comme ça que j'utilise mes boucles sur des tableaux mais c'est parce que je sais ce que je fais (enfin, j'espère ).

    @+

  7. #7
    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
    Salut,

    heu, si le nombre d'objets de la collection est changé, dans tous les cas on a une erreur.

    Avec une variable
    si j'ai deux tables, j'en ajoute une, seules deux seront traitées.
    si j'ai deux tables, j'en supprime une, j'ai un indice de table qui n'existe plus.

    Le retard d'actualisation de count, je n'ai pas encore rencontré.

  8. #8
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut
    Salut,

    Tu as raison, Heureux-Oli, il faut évidemment mettre à jour la variable sinon on a en effet le même problème.

    @+

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

Discussions similaires

  1. Calcul du nombre de lignes dans un fichier texte en JavaScript
    Par developppez dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 29/08/2017, 08h13
  2. Calculer le nombre de mots dans un fichier texte
    Par attounsi dans le forum Pascal
    Réponses: 0
    Dernier message: 22/11/2013, 21h03
  3. [Toutes versions] Comparer plusieurs tableaux dans plusieurs fichiers word
    Par Respecting dans le forum Word
    Réponses: 1
    Dernier message: 14/12/2012, 22h17
  4. Comparaison de base et calculs du nombre d'éléments dans Bas
    Par BXDSPORT dans le forum Bases de données
    Réponses: 3
    Dernier message: 19/07/2004, 08h00
  5. Réponses: 2
    Dernier message: 02/03/2004, 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