Question
Copier-coller un tableau dans Word
- StefaneB
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 7
- Remerciements reçus 0
dans un document word existant, j'ai besoin de copier-coller un tableau, présent dans ce document, plusieurs fois.
Mais differentes tentatives échouent à chaque fois.
Soit je colle le tableau juste en dessous du précédent mais dans ce cas je n'ai pas 2 tableaux mais un seul.
Soit je colle le tableau sur le précédent.
Je voudrais que mes tableaux soient les uns en dessous des autres avec un saut de ligne.
Voici mon bout de code qui ne fonctionne pas
[code:1]
$Doc = $Word.documents.Open($Target)
$Selection = $Word.selection
$Table = $doc.Tables
$TableBul = $Table.Item(9)
$Range = $TableBul.range
$Range.Copy()
$Selection.EndOf(15)
$Selection.MoveDown()
$Selection.TypeParagraph()
$Range.PasteAndFormat(17)
[/code:1]
Merci de votre aide.
Message édité par: Stefane, à: 16/05/14 13:56<br><br>Message édité par: Stefane, à: 16/05/14 13:57
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Stefane écrit:
Essaie AVANT la copie d'ajoutert un saut de ligne, i.e. un nouveau paragraphe.Je voudrais que mes tableaux soient les uns en dessous des autres avec un saut de ligne.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- StefaneB
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 7
- Remerciements reçus 0
Le saut de ligne se fait en début de document.
J'ai essayé ca:
[code:1]
$TableBul = $Table.Item(9)
$Range = $TableBul.range
$Selection.TypeParagraph()
$Range.Copy()
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Enregistre ta manipulation dans une macro, puis consulte le code généré. Cela peut te donner une solution ou à défaut une piste.Je n'y arrive pas.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- StefaneB
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 7
- Remerciements reçus 0
Mon problème est que je n'arrive pas mettre le focus où je veux.
Si j'arrivais à déplacer le focus juste dessous mon tableau ce serait bon.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
procedure TForm1.ChangeTableaux;
// les tableaux imbriqués ne sont pas gérés
{ if Tableau.Cell(myRows,myCols).Tables.count<>0
then Log.Lines.Add('tableaux imbriqué'+InttoStr(Tableau.Cell(myRows,myCols).Tables.count));
}
var
CelluleText,
S :String;
Tableau : Table;
I,CountTableau :Integer;
CurrentRow : Row;
myCols,NbCol : Integer;
myRows,NbRow : Integer;
Number,
Unit_ : OleVariant;
ParagraphPrecedent : Paragraph;
monStyle : Olevariant;
begin
S:='<tableau width=\"80%\">'+CrLf;
CountTableau:=WordDocument1.Tables.Count;
Log.Lines.Add(Format('Mise en forme des tableaux[%d]', [CountTableau]));
If CountTableau=0
Then Exit;
ProgressBar1.Position:=0;
ProgressBar1.Max:=CountTableau;
Number:=1;
Unit_:=wdParagraph;
For I:=1 to CountTableau do
begin
// Récupére un tableau
Tableau:=WordDocument1.Tables.item(1);
// sélectionne le paragraphe qui précède la sélection.
Tableau.Select;
ParagraphPrecedent:=WordApplication1.Selection.Paragraphs.item(1).Previous(number);
// Insére un paragraph aprés celui mémorisé
ParagraphPrecedent.Range.InsertParagraphAfter;
ParagraphPrecedent:=ParagraphPrecedent.Next(Number);
// Evite d'insérer du texte avec le style du paragraph précédant le tableau
// Il peut s'agir d'un titre et dans ce cas la liste est insérée au format Titre
monStyle:=Integer(wdStyleNormal);
ParagraphPrecedent.Range.Set_Style(monStyle);
// Récupére le nombre de ligne total
NbRow := Tableau.Rows.Count;
//Lecture du tableau ligne 1 colonne1
// ligne 1 colonne2 ...
For myRows:=1 to NbRow do
begin
// Récupére la ligne courante
CurrentRow:=Tableau.Rows.Item(myRows);
// Récupére le nombre de colonne de la ligne courante
NbCol:=CurrentRow.Cells.count;
Application.ProcessMessages;
if myRows= 1
then S:=S+'<entete>'+CrLf
else S:=S+'<ligne>'+CrLf;
For myCols:=1 to NbCol do
begin
CelluleText:=Traite_MotsParagraph(Tableau.Cell(myRows,myCols).Range.Words,SansBaliseBR);
S:=S+'<colonne>'+CelluleText+'</colonne>'+Crlf;
end;
if myRows= 1
then S:=S+'</entete>'+CrLf
else S:=S+'</ligne>'+Crlf;
end;
S:=S+'</tableau>';
Tableau.Delete;
// Insére le texte à la position du tableau courant ( supprimé )
ParagraphPrecedent.Range.insertBefore(S);
ProgressBar1.Position:=ProgressBar1.Position+1;
end;
ProgressBar1.Position:=CountTableau;
end;
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Copier-coller un tableau dans Word