Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1500 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [RESOLU]Sélection d'un tableau Word

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU]Sélection d'un tableau Word

n°1241952
TAM136
Posté le 09-11-2005 à 09:19:21  profilanswer
 

Bonjour à tous,
 
Je souhaite créer une macro qui me permette de sélectionner un tableau sur Word 97 avec un nombre de colonnes que je connais (ce nombre est fixe et défini) mais avec un nombre de lignes variable. Je souhaite en outre imprimer le tableau.  Quelle macro dois-je utiliser.
Par ailleurs, j'aimerai savoir si on peut toujours sur Word sélectionner uniquement certaines lignes en plus de la première ligne (ma ligne d'en-tête autrement dit), le critèe de sélection étant dans une colonne? Sur EXcel, il n' y a pas de problème sauf que pour l'impression c'est fastidieux car il faut aller à chaque fois dans Fichier/Imprimer. Donc s'il y a plusieurs critères, c'est long.
Quelqu'un peut-il m'aider pour tout ça. Merci d'avance.


Message édité par TAM136 le 19-03-2006 à 16:52:21
mood
Publicité
Posté le 09-11-2005 à 09:19:21  profilanswer
 

n°1242864
Epena
Posté le 10-11-2005 à 07:14:59  profilanswer
 

Le code suivant va pouvoir sélectionner le deuxième tableau du document actif et imprimer la selection.
    ActiveDocument.Tables(2).Select
    ActiveDocument.PrintOut Range:=wdPrintSelection, Copies:=1

n°1249565
TAM136
Posté le 21-11-2005 à 09:05:22  profilanswer
 

Merci pour la réponse mais cette macro va imprimer tout le tableau. Comment faire si je ne eux imprimer qu'une partie (comment intégrer mon critère de sélection selon lequel je veux que telle ou telle ligne soit imprimée), le critèe se trouvant dans une colonne.

n°1251124
Epena
Posté le 22-11-2005 à 22:54:14  profilanswer
 

Je ne pense pas que l'on puisse selectionner plusieurs lignes différentes dans Word à la différence d'excel. Je te propose un code perfectible pour contouner le problème qui consiste à masquer (en fait incomplètement) les lignes à ne pas imprimer et les rétablir à l'identique après impression.
 
Sub ImprimerTableau() 'soit 1 tableau > 17 lignes que l'on veut imprimer sauf les lignes 2,5, 8, 12, 15, 17  
   Dim i
   Dim MaLigne As Variant
   Dim Ligne()
        MaLigne = Array(2, 5, 8, 12, 15, 17) 'numéro de ligne à masquer
ReDim Ligne(UBound(MaLigne) + 1, 2)
    For i = 0 To UBound(MaLigne)
        Ligne(i + 1, 0) = MaLigne(i)    'remplir le tableau
    Next i
For i = 1 To UBound(MaLigne) + 1
    ActiveDocument.Tables(2).Rows(Ligne(i, 0)).Select   'Selectionne la ligne du tableau et ramène la police à 1 (0 = erreur)
    Ligne(i, 1) = Selection.Font.Size
    Selection.Font.Size = 1
    ActiveDocument.Tables(2).Rows(Ligne(i, 0)).HeightRule = wdRowHeightAtLeast
    Ligne(i, 2) = ActiveDocument.Tables(2).Rows(Ligne(i, 0)).Height    'hauteur de ligne à masquer
    ActiveDocument.Tables(2).Rows(Ligne(i, 0)).Height = 0               ' masque la ligne dans la limite de la taille de la police
    ActiveDocument.Tables(2).Rows(Ligne(i, 0)).Borders(wdBorderBottom).Visible = False  'masque la bordure inférieure toujours visible
Next i
    ActiveDocument.Tables(2).Select
    ActiveDocument.PrintOut Range:=wdPrintSelection, Copies:=1
For i = 1 To UBound(MaLigne) + 1
    ActiveDocument.Tables(2).Rows(Ligne(i, 0)).Height = Ligne(i, 2)  'restituer la hauteur des lignes masquées
    ActiveDocument.Tables(2).Rows(Ligne(i, 0)).Select   'restituer la taille de la  police
    Selection.Font.Size = Ligne(i, 1)
    ActiveDocument.Tables(2).Rows(Ligne(i, 0)).Borders(wdBorderBottom).Visible = True  'rétabli la bordure inférieure si elle existe
Next i
End Sub

n°1251247
TAM136
Posté le 23-11-2005 à 09:34:54  profilanswer
 

Merci beaucoup. J'avais pensé à masquer les lignes mais en passant par l'enregistreur.Ma macro était très longue et ne fonctionnait pas à tous les coups.

n°1264276
TAM136
Posté le 12-12-2005 à 08:29:22  profilanswer
 

Pour les personnes éventuellement intéréssées, j'ai créé un code permettant de sélectionner les lignes qu'on veut et qu'on veut imprimer sous réserve que les lignes que l'on souhaite sélectionner se suivent mais avec pour intérêt de faire toujours apparaître la ligne d'en-tête. J'ai pris pour exemple un tableau de 10 lignes dont la ligne d'en-tête (la ligne 1). Ce code peut être amélioré (je suis un débutant en VBA).
 
Selection.Tables(1).Rows(4).Select 'Sélectionner la ligne 4
    Selection.MoveDown Unit:=wdLine, Count:=6, Extend:=wdExtend 'Sélectionner les lignes 5 à 9
        With Selection.Font
        .Hidden = True ' Masquer les lignes 4 à 9
        End With
        ActiveDocument.PrintOut Copies:=1
      Selection.Tables(1).Rows(2).Select 'Sélectionner la ligne 2
    Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend 'Sélectionner la ligne 3
        With Selection.Font
        .Hidden = True ' Masquer les lignes 2 à 3
        End With
Selection.Tables(1).Rows(4).Select 'Sélectionner la ligne 4
    Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend 'Sélectionner la ligne 5
        With Selection.Font
        .Hidden = False ' Démasquer les lignes 4 à 5
        ActiveDocument.PrintOut Copies:=1
        .Hidden = True ' Masquer les lignes 4 à 5
        End With
      Selection.Tables(1).Rows(6).Select 'Sélectionner la ligne 6
    Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend 'Sélectionner la ligne 7
        With Selection.Font
        .Hidden = False ' Démasquer les lignes 6 à 7
        ActiveDocument.PrintOut Copies:=1
        .Hidden = True ' Masquer les lignes 6 à 7
        End With
 Selection.Tables(1).Rows(8).Select 'Sélectionner la ligne 8
    Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend 'Sélectionner la ligne 9
        With Selection.Font
        .Hidden = False ' Démasquer les lignes 8 à 9
        End With
        ActiveDocument.PrintOut Copies:=1


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [RESOLU]Sélection d'un tableau Word

 

Sujets relatifs
[Delphi] tableau et pointeur[Résolu][VB .net] Drag & drop entre deux applications
[RESOLU] CSS : id de H1overflow: auto et tableau
[VB] Ouvrir une page internet [résolu][resolu][PHP] extraction d'un operateur dans une string
[resolu] DOM (XML) : insertion d'un élément avant un autreComment fermer document word sans message avec vba?
Comprendre la fonction ord en pascal [Résolu][resolu] Access ??
Plus de sujets relatifs à : [RESOLU]Sélection d'un tableau Word


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR