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 :

Trier un tableau avec 2 lignes en header


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Trier un tableau avec 2 lignes en header
    Bonjour,

    ayant parcouru en vain le forum en vue de trouver un réponse, je me résous à ouvrir un topic pour poser la question.

    Je dispose d'un tableau sous word qui a un header sur 2 lignes.
    J'aimerai trier le tableau à partir de la ligne 3 et jusqu'à la fin.

    Comment cela serait-il possible ?

    J'ai d'abord pensé à "capturer" la partie du tableau à trier dans un objet Range puis à trier cet objet. Mais cela ne marche pas.
    A titre illustratif, voici un bout du code qui ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim Nblignes as Integer
    Dim MonRange As Range
     
    Nblignes = wordDoc.Tables(1).Rows.Count
    Set MonRange = wordDoc.Range(Start:=wordDoc.Tables(1).Cell(3, 1).Range.Start, _
         End:=wordDoc.Tables(1).Cell(Nblignes, 5).Range.End)
    MonRange.Sort (...??)
    Comment feriez vous pour trier un tableau selon la 1ere colonne (tri croissant) d'un tableau comportant un header sur 2 lignes ?

    D'avance merci 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,

    Essaie avec un objet Selection au lieu d'un objet Range.
    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 !

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Salut,

    Essaie avec un objet Selection au lieu d'un objet Range.
    Plus précisement Heureux-oli, tu suggères de passer par quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wordDoc.Tables(1).select
    ?

    Comment ferais-tu pour enregistrer plusieurs lignes dans la selection ?

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

    Si tu utilises cette méthode, tu vas sélectionner toute la table, or tu ne veux pas des deux premières lignes.


    Tu dois te positionner sur la prmière colonne de la troisième ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        ActiveDocument.Tables(1).Cell(3, 1).Select
        Selection.EndKey Unit:=wdColumn, Extend:=True
        Selection.EndKey Unit:=wdRow, Extend:=True
        Selection.SortAscending
    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 !

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci
    Il se trouve hélas que la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Selection.EndKey Unit:=wdColumn, Extend:=True
    génère l'erreur d'exécution '438' ("Propriété ou méthode non générée par cet objet) sous le VBA de word 2003.
    Une idée pourquoi ?

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

    J'ai un petit problème, je viens de faire le test su 2003 et il fonctionne chez moi.
    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 !

  7. #7
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Humm, j'ai l'impression que l'expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Selection.EndKey Unit:=wdColumn, Extend:=True
    ne fonctionnement pas parce que je la fais tourner depuis VBA Excel.

    Y aurait-il une reference à activer en plus de la Microsoft Word xx.x Object Library ?

    Quand je fais tourner cette expression sous VBA word 2003, ca fonctionne en effet. Par contre, la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.SortAscending
    trie le tableau dans son ensemble et non pas uniquement la selection.

    Vous avez remarqué le même comportement ?

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

    Non, j'ai le tableau qui est trié sur seulement la sélection ?
    Je vais refaire le test.

    Si la macro tourne sous Excel, il faut ajouter la référence Word au projet.


    Dans le VBE : Outils -> Références -> Microsoft Word
    pour 2003, c'est 11
    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 !

  9. #9
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci pour ces indications.

    Tu m'a débloqué Heureux-oli.

    Le sujet est clos.

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

Discussions similaires

  1. Trier un tableau() avec Sort
    Par ouskel'n'or dans le forum Général VBA
    Réponses: 6
    Dernier message: 02/10/2012, 15h01
  2. tableau avec 1 ligne et 3 colonnes en javascript
    Par lediamant dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/06/2010, 09h32
  3. [C#] Trier un tableau avec IComparable
    Par gilles81 dans le forum C#
    Réponses: 3
    Dernier message: 17/01/2009, 22h46
  4. Comment trier un tableau avec VBScript ?
    Par djokerta dans le forum VBScript
    Réponses: 3
    Dernier message: 27/09/2007, 21h44
  5. Tableau avec une ligne d'en-tête et une colonne fixe
    Par heddicmi dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 22/11/2006, 19h45

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