[WORD 2010] Sélectionner et déplacer une ligne dans un tableau

Sélectionner et déplacer une ligne dans un tableau [WORD 2010] - VB/VBA/VBS - Programmation

Marsh Posté le 11-03-2013 à 16:25:49    

Bonjour à toutes et à tous,
 
Débutante en VBA, je cherche à savoir comment sélectionner la 2ème ligne d'un tableau défini, la copier et coller uniquement le contenu 1 ligne en dessous. J'ai un modèle avec ce fameux tableau positionné à la fin du document, et je voudrais que les personnes qui utiliseront le document puissent incrémenter automatiquement la version chaque fois qu'ils auront à modifier leur texte. Petit détail supplémentaire, la ligne que je souhaite recopier contient des champs insérés par signets et ceux-ci doivent rester en place uniquement sur la 2ème ligne, pas sur les autres lignes du tableau (je ne sais pas si je suis très claire... :heink: )  
 
Je pensais utiliser  
 

Code :
  1. WordDocument.Tables(5).Rows(2).Range.Copy


 
mais d'autres tableaux pourront être rajoutés dans mon document, du coup le n° de table risque de changer.
 
J'ai donc défini un signet sur mon tableau mais quand j'utilise le code pour appeler le signet je sélectionne la totalité de la table et non juste la ligne qui m'intéresse
 

Code :
  1. Selection.GoTo What:=wdGoToBookmark, Name:="Tableau_V"


 
J'ai essayé de "bidouiller" avec l'aide de Word (F1) et différentes informations glanées sur le net mais je n'ai obtenu que des erreurs de compilation... Je n'emploie certainement pas les bons arguments au bon endroit. Je reconnais volontiers que je ne sais pas trop quoi placer où.
 

Code :
  1. ActiveDocument.Bookmarks("Tableau_V" ).Selection.Rows (2)
  2. ActiveDocument.Bookmarks("Tableau_V" ).Range.Rows (2)


 
Merci à celles et ceux qui voudront bien me donner quelques explications sur la marche à suivre.

Message cité 1 fois
Message édité par iratihel le 11-03-2013 à 16:26:27
Reply

Marsh Posté le 11-03-2013 à 16:25:49   

Reply

Marsh Posté le 11-03-2013 à 16:58:07    

Re Bonjour,
 
J'ai trouvé une solution à mon problème mais il me manque des éléments de code pour arriver exactement au résultat recherché...
 

Code :
  1. Private Sub CommandButton1_Click()
  2.   With Selection
  3.   .GoTo What:=wdGoToBookmark, Name:="Tableau_V_l2"
  4.    .Copy
  5.    .InsertRowsBelow
  6.    .PasteSpecial DataType:=wdPasteText
  7. End With
  8. End Sub


 
J'ai modifié mon signet pour qu'il sélectionne la ligne qui m'intéresse.
Mais je rencontre maintenant un nouveau soucis. La ligne que je copie ne se colle pas correctement. Elle contient des champs automatiques. En début de document, je définis tous les champs qui seront utilisés. En l'occurence, pour ma ligne, il s'agit de la date d'enregistrement (LastSave), du nom de l'auteur, du nom du relecteur et du nom de l'approbateur. Or quand je copie/colle cette ligne, les champs sont copiés n'importe comment. Je mets une image, ça sera plus parlant:
 
http://img15.hostingpics.net/pics/640684tableau.jpg
 
Je fais un collage spécial du texte dans mon code. Si je fais un simple copier/coller, les champs sont collés en même temps, ce qui ne m'intéresse pas car le but du tableau est de conserver l'historique des modifications du document.
 
Quelqu'un aurait une petite idée? Merci!!

Reply

Marsh Posté le 12-03-2013 à 00:18:53    

 
            Salutations.   Le deuxième message m'a quelque peu refroidi mais déjà je n'avais pas eu le temps de répondre au premier …

iratihel a écrit :

 […]     J'ai donc défini un signet sur mon tableau mais quand j'utilise le code pour appeler le signet
           je sélectionne la totalité de la table et non juste la ligne qui m'intéresse
 

Code :
  1. Selection.GoTo What:=wdGoToBookmark, Name:="Tableau_V"



            Donc à ce stade, il ne faut plus partir du document mais exploiter plutôt la sélection, dans le genre :

      Selection.Tables(1).Rows(2).Copy

            Même si ce n'est pas le premier tableau du document, en utilisant donc la sélection en cours
            il ne peut y avoir qu'un seul tableau, d'où le .Tables(1)
 
            Cela ne solutionne pas hélas le deuxième message mais là je suis dans le brouillard
            car je n'arrive pas à bien visualiser la problématique rencontrée, désolé …
            En espérant qu'un spécialiste de Word passe ici, bonne continuation.
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed