Bonjour
J'ai des documents à l'origine en HTML (Email ) dans lesquels se trouvent
des tableaux
j'aimerais vérifier que ceux-ci ne soient pas plus larges que la page, afin
de mettre en paysage ou réduire ou convertir en image les tableaux selon .
Le problème c'est lorsque les colonnes d'un même tableau ont une taille
différente
Voici mon code
Sub red_tab()
' rappel conversion 1 cm =28.35 points
ActiveWindow.View.Type = wdPrintView
For Each tableau In ActiveDocument.Tables
tableau.Select
total = 0
On Error GoTo col_fus ' pour gérer les tableau avec des cellules fusionnées
For Each col In tableau.Columns
total = col.Width + total
Next col
GoTo result
col_fus:
'je fais du coup une copie de la première ligne
'que je fusionne mais le première ligne n'est pas
'forcèment la plus large
tableau.Rows(1).Select
toto = Selection.Cells(1).Row
Selection.Copy
Selection.PasteAppendTable
Selection.SplitTable
Selection.MoveUp Unit:=wdLine, Count:=1
Selection.Cells(1).Row.Cells.Merge
total = Selection.Columns.PreferredWidth
Selection.Cells(1).Row.Delete
result:
MsgBox total & " soit en cm :" & total / 28.35
Next
End Sub
Comment faire ? y a t'il une propriété position droite du tableau ?
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Anacoluthe
Bonjour !
'Oliv'' nous a écrit ...
j'aimerais vérifier que ceux-ci ne soient pas plus larges que la page, afin de mettre en paysage ou réduire ou convertir en image les tableaux selon .
Je pense qu'il faut balayer ligne par ligne chaque tableau, faire la somme des largeurs des colonnes et conserver le maximum. Faut ajouter une boucle et un test sur la variable 'Total'
Anacoluthe « Tous les tableaux devraient être de la même taille et de la même couleur de sorte qu'ils seraient interchangeables et que personne n'aurait le sentiment d'en avoir un bon ou un mauvais. » - Andy WARHOL
Bonjour !
'Oliv'' nous a écrit ...
j'aimerais vérifier que ceux-ci ne soient pas plus larges que la page, afin
de mettre en paysage ou réduire ou convertir en image les tableaux selon .
Je pense qu'il faut balayer ligne par ligne chaque tableau,
faire la somme des largeurs des colonnes et conserver le maximum.
Faut ajouter une boucle et un test sur la variable 'Total'
Anacoluthe
« Tous les tableaux devraient être de la même taille et de la même
couleur de sorte qu'ils seraient interchangeables et que personne
n'aurait le sentiment d'en avoir un bon ou un mauvais. »
- Andy WARHOL
j'aimerais vérifier que ceux-ci ne soient pas plus larges que la page, afin de mettre en paysage ou réduire ou convertir en image les tableaux selon .
Je pense qu'il faut balayer ligne par ligne chaque tableau, faire la somme des largeurs des colonnes et conserver le maximum. Faut ajouter une boucle et un test sur la variable 'Total'
Anacoluthe « Tous les tableaux devraient être de la même taille et de la même couleur de sorte qu'ils seraient interchangeables et que personne n'aurait le sentiment d'en avoir un bon ou un mauvais. » - Andy WARHOL
Oliv'
Anacoluthe que je salut a écrit dans %
Bonjour !
'Oliv'' nous a écrit ...
j'aimerais vérifier que ceux-ci ne soient pas plus larges que la page, afin de mettre en paysage ou réduire ou convertir en image les tableaux selon .
Je pense qu'il faut balayer ligne par ligne chaque tableau, faire la somme des largeurs des colonnes et conserver le maximum. Faut ajouter une boucle et un test sur la variable 'Total'
Anacoluthe
Merci Anacoluthe pour cette piste. J'ai modifié ma procédure comme ci-dessous, mais je m'aperçoit que je me leurre si je pense solutionner ainsi ce problème ;-((
En effet le tableau peut ne pas être plus large en taille que la largeur de la page, mais il peut très bien être positionné en tout ou partie en dehors de la page !!! Donc c'est bien la position de la bordure du tableau qu'il convient de vérifier!! Mais comment ? #######################################
Sub red_tab() ' rappel conversion 1 cm (.35 points ActiveWindow.View.Type = wdPrintView MsgBox ActiveDocument.Tables.Count & " tableaux" Max_total_page = 0
For Each tableau In ActiveDocument.Tables Max_total_tableau = 0 tableau.Select
'On Error GoTo col_fus ' pour gérer les tableau avec des cellules fusionnées MsgBox tableau.Rows.Count & " lignes dans ce tableau" For Each ligne In tableau.Rows total_ligne = 0 ligne.Select MsgBox ligne.Cells.Count & " Cellules dans cette ligne"
For Each cellule In ligne.Cells cellule.Select total_ligne = cellule.Width + total_ligne Next cellule
If total_ligne > Max_total_tableau Then Max_total_tableau = total_ligne Next ligne MsgBox total_ligne / 28.35 & " " & Max_total_tableau / 28.35 If Max_total_tableau > Max_total_page Then Max_total_page = Max_total_tableau
Next tableau MsgBox Max_total_page / 28.35 & " " & Max_total_tableau / 28.35 End Sub #######################################
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Have a nice day Oliv' Pour me joindre : http://cerbermail.com/?V8r2o1YHl4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Anacoluthe <nopub_anacoluthe@Ouanadoo.fr> que je salut a écrit dans
%23rOW2VHZFHA.2128@TK2MSFTNGP14.phx.gbl
Bonjour !
'Oliv'' nous a écrit ...
j'aimerais vérifier que ceux-ci ne soient pas plus larges que la
page, afin de mettre en paysage ou réduire ou convertir en image les
tableaux selon .
Je pense qu'il faut balayer ligne par ligne chaque tableau,
faire la somme des largeurs des colonnes et conserver le maximum.
Faut ajouter une boucle et un test sur la variable 'Total'
Anacoluthe
Merci Anacoluthe pour cette piste.
J'ai modifié ma procédure comme ci-dessous, mais je m'aperçoit que je me
leurre si je pense solutionner ainsi ce problème ;-((
En effet le tableau peut ne pas être plus large en taille que la largeur de
la page, mais il peut très bien être positionné en tout ou partie en dehors
de la page !!!
Donc c'est bien la position de la bordure du tableau qu'il convient de
vérifier!!
Mais comment ?
#######################################
Sub red_tab()
' rappel conversion 1 cm (.35 points
ActiveWindow.View.Type = wdPrintView
MsgBox ActiveDocument.Tables.Count & " tableaux"
Max_total_page = 0
For Each tableau In ActiveDocument.Tables
Max_total_tableau = 0
tableau.Select
'On Error GoTo col_fus ' pour gérer les tableau avec des cellules fusionnées
MsgBox tableau.Rows.Count & " lignes dans ce tableau"
For Each ligne In tableau.Rows
total_ligne = 0
ligne.Select
MsgBox ligne.Cells.Count & " Cellules dans cette ligne"
For Each cellule In ligne.Cells
cellule.Select
total_ligne = cellule.Width + total_ligne
Next cellule
If total_ligne > Max_total_tableau Then Max_total_tableau = total_ligne
Next ligne
MsgBox total_ligne / 28.35 & " " & Max_total_tableau / 28.35
If Max_total_tableau > Max_total_page Then Max_total_page =
Max_total_tableau
Next tableau
MsgBox Max_total_page / 28.35 & " " & Max_total_tableau / 28.35
End Sub
#######################################
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
j'aimerais vérifier que ceux-ci ne soient pas plus larges que la page, afin de mettre en paysage ou réduire ou convertir en image les tableaux selon .
Je pense qu'il faut balayer ligne par ligne chaque tableau, faire la somme des largeurs des colonnes et conserver le maximum. Faut ajouter une boucle et un test sur la variable 'Total'
Anacoluthe
Merci Anacoluthe pour cette piste. J'ai modifié ma procédure comme ci-dessous, mais je m'aperçoit que je me leurre si je pense solutionner ainsi ce problème ;-((
En effet le tableau peut ne pas être plus large en taille que la largeur de la page, mais il peut très bien être positionné en tout ou partie en dehors de la page !!! Donc c'est bien la position de la bordure du tableau qu'il convient de vérifier!! Mais comment ? #######################################
Sub red_tab() ' rappel conversion 1 cm (.35 points ActiveWindow.View.Type = wdPrintView MsgBox ActiveDocument.Tables.Count & " tableaux" Max_total_page = 0
For Each tableau In ActiveDocument.Tables Max_total_tableau = 0 tableau.Select
'On Error GoTo col_fus ' pour gérer les tableau avec des cellules fusionnées MsgBox tableau.Rows.Count & " lignes dans ce tableau" For Each ligne In tableau.Rows total_ligne = 0 ligne.Select MsgBox ligne.Cells.Count & " Cellules dans cette ligne"
For Each cellule In ligne.Cells cellule.Select total_ligne = cellule.Width + total_ligne Next cellule
If total_ligne > Max_total_tableau Then Max_total_tableau = total_ligne Next ligne MsgBox total_ligne / 28.35 & " " & Max_total_tableau / 28.35 If Max_total_tableau > Max_total_page Then Max_total_page = Max_total_tableau
Next tableau MsgBox Max_total_page / 28.35 & " " & Max_total_tableau / 28.35 End Sub #######################################
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Have a nice day Oliv' Pour me joindre : http://cerbermail.com/?V8r2o1YHl4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Oliv'
Oliv' <(supprimerceci) que je salut a écrit dans
Anacoluthe que je salut a écrit dans %
Bonjour !
'Oliv'' nous a écrit ...
j'aimerais vérifier que ceux-ci ne soient pas plus larges que la page, afin de mettre en paysage ou réduire ou convertir en image les tableaux selon .
Je pense qu'il faut balayer ligne par ligne chaque tableau, faire la somme des largeurs des colonnes et conserver le maximum. Faut ajouter une boucle et un test sur la variable 'Total'
Anacoluthe
Merci Anacoluthe pour cette piste. J'ai modifié ma procédure comme ci-dessous, mais je m'aperçoit que je me leurre si je pense solutionner ainsi ce problème ;-((
En effet le tableau peut ne pas être plus large en taille que la largeur de la page, mais il peut très bien être positionné en tout ou partie en dehors de la page !!! Donc c'est bien la position de la bordure du tableau qu'il convient de vérifier!! Mais comment ? #######################################
Sub red_tab() ' rappel conversion 1 cm (.35 points ActiveWindow.View.Type = wdPrintView MsgBox ActiveDocument.Tables.Count & " tableaux" Max_total_page = 0
For Each tableau In ActiveDocument.Tables Max_total_tableau = 0 tableau.Select
'On Error GoTo col_fus ' pour gérer les tableau avec des cellules fusionnées MsgBox tableau.Rows.Count & " lignes dans ce tableau" For Each ligne In tableau.Rows total_ligne = 0 ligne.Select MsgBox ligne.Cells.Count & " Cellules dans cette ligne"
For Each cellule In ligne.Cells cellule.Select total_ligne = cellule.Width + total_ligne Next cellule
If total_ligne > Max_total_tableau Then Max_total_tableau > total_ligne Next ligne MsgBox total_ligne / 28.35 & " " & Max_total_tableau / 28.35 If Max_total_tableau > Max_total_page Then Max_total_page > Max_total_tableau
Next tableau MsgBox Max_total_page / 28.35 & " " & Max_total_tableau / 28.35 End Sub #######################################
Il semble qu'il faille comparer la largeur de l'ensemble des colonnes de chaque ligne + la position gauche du tableau par rapport aux marges (ActiveDocument.Tables.Rows.LeftIndent) avec la largeur de la page moins les marges Activedocument.pagesetup.PageWidth - Activedocument.pagesetup.LeftMargin -Activedocument.pagesetup.RightMargin
Qu'en pensez-vous ?
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Have a nice day Oliv' Pour me joindre : http://cerbermail.com/?V8r2o1YHl4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Oliv' <(supprimerceci)catteau@ricour-assurances.fr> que je salut a écrit
dans eTnXhHSZFHA.1544@TK2MSFTNGP10.phx.gbl
Anacoluthe <nopub_anacoluthe@Ouanadoo.fr> que je salut a écrit dans
%23rOW2VHZFHA.2128@TK2MSFTNGP14.phx.gbl
Bonjour !
'Oliv'' nous a écrit ...
j'aimerais vérifier que ceux-ci ne soient pas plus larges que la
page, afin de mettre en paysage ou réduire ou convertir en image les
tableaux selon .
Je pense qu'il faut balayer ligne par ligne chaque tableau,
faire la somme des largeurs des colonnes et conserver le maximum.
Faut ajouter une boucle et un test sur la variable 'Total'
Anacoluthe
Merci Anacoluthe pour cette piste.
J'ai modifié ma procédure comme ci-dessous, mais je m'aperçoit que je
me leurre si je pense solutionner ainsi ce problème ;-((
En effet le tableau peut ne pas être plus large en taille que la
largeur de la page, mais il peut très bien être positionné en tout ou
partie en dehors de la page !!!
Donc c'est bien la position de la bordure du tableau qu'il convient de
vérifier!!
Mais comment ?
#######################################
Sub red_tab()
' rappel conversion 1 cm (.35 points
ActiveWindow.View.Type = wdPrintView
MsgBox ActiveDocument.Tables.Count & " tableaux"
Max_total_page = 0
For Each tableau In ActiveDocument.Tables
Max_total_tableau = 0
tableau.Select
'On Error GoTo col_fus ' pour gérer les tableau avec des cellules
fusionnées MsgBox tableau.Rows.Count & " lignes dans ce tableau"
For Each ligne In tableau.Rows
total_ligne = 0
ligne.Select
MsgBox ligne.Cells.Count & " Cellules dans cette ligne"
For Each cellule In ligne.Cells
cellule.Select
total_ligne = cellule.Width + total_ligne
Next cellule
If total_ligne > Max_total_tableau Then Max_total_tableau > total_ligne Next ligne
MsgBox total_ligne / 28.35 & " " & Max_total_tableau / 28.35
If Max_total_tableau > Max_total_page Then Max_total_page > Max_total_tableau
Next tableau
MsgBox Max_total_page / 28.35 & " " & Max_total_tableau / 28.35
End Sub
#######################################
Il semble qu'il faille comparer la largeur de l'ensemble des colonnes de
chaque ligne + la position gauche du tableau par rapport aux marges
(ActiveDocument.Tables.Rows.LeftIndent) avec la largeur de la page moins les
marges
Activedocument.pagesetup.PageWidth -
Activedocument.pagesetup.LeftMargin -Activedocument.pagesetup.RightMargin
Qu'en pensez-vous ?
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
j'aimerais vérifier que ceux-ci ne soient pas plus larges que la page, afin de mettre en paysage ou réduire ou convertir en image les tableaux selon .
Je pense qu'il faut balayer ligne par ligne chaque tableau, faire la somme des largeurs des colonnes et conserver le maximum. Faut ajouter une boucle et un test sur la variable 'Total'
Anacoluthe
Merci Anacoluthe pour cette piste. J'ai modifié ma procédure comme ci-dessous, mais je m'aperçoit que je me leurre si je pense solutionner ainsi ce problème ;-((
En effet le tableau peut ne pas être plus large en taille que la largeur de la page, mais il peut très bien être positionné en tout ou partie en dehors de la page !!! Donc c'est bien la position de la bordure du tableau qu'il convient de vérifier!! Mais comment ? #######################################
Sub red_tab() ' rappel conversion 1 cm (.35 points ActiveWindow.View.Type = wdPrintView MsgBox ActiveDocument.Tables.Count & " tableaux" Max_total_page = 0
For Each tableau In ActiveDocument.Tables Max_total_tableau = 0 tableau.Select
'On Error GoTo col_fus ' pour gérer les tableau avec des cellules fusionnées MsgBox tableau.Rows.Count & " lignes dans ce tableau" For Each ligne In tableau.Rows total_ligne = 0 ligne.Select MsgBox ligne.Cells.Count & " Cellules dans cette ligne"
For Each cellule In ligne.Cells cellule.Select total_ligne = cellule.Width + total_ligne Next cellule
If total_ligne > Max_total_tableau Then Max_total_tableau > total_ligne Next ligne MsgBox total_ligne / 28.35 & " " & Max_total_tableau / 28.35 If Max_total_tableau > Max_total_page Then Max_total_page > Max_total_tableau
Next tableau MsgBox Max_total_page / 28.35 & " " & Max_total_tableau / 28.35 End Sub #######################################
Il semble qu'il faille comparer la largeur de l'ensemble des colonnes de chaque ligne + la position gauche du tableau par rapport aux marges (ActiveDocument.Tables.Rows.LeftIndent) avec la largeur de la page moins les marges Activedocument.pagesetup.PageWidth - Activedocument.pagesetup.LeftMargin -Activedocument.pagesetup.RightMargin
Qu'en pensez-vous ?
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Have a nice day Oliv' Pour me joindre : http://cerbermail.com/?V8r2o1YHl4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Oliv'
Le pb
j'aimerais vérifier que ceux-ci ne soient pas plus larges que la page, afin de mettre en paysage ou réduire ou convertir en image les tableaux selon . Ma solution après cogitation fumante ;-)))
Sub red_tab() ' rappel conversion 1 cm (.35 points ActiveWindow.View.Type = wdPrintView Max_total_page = 0 For Each tableau In ActiveDocument.Tables Max_total_tableau = 0 tableau.Select 'On Error GoTo col_fus ' pour gérer les tableau avec des cellules fusionnées For Each ligne In tableau.Rows total_ligne = 0 ligne.Select For Each cellule In ligne.Cells cellule.Select total_ligne = cellule.Width + total_ligne + ligne.LeftIndent largeur = Selection.PageSetup.PageWidth - Selection.PageSetup.LeftMargin - Selection.PageSetup.RightMargin If largeur < total_ligne Then MsgBox "attention en dehors" Next cellule If total_ligne > Max_total_tableau Then Max_total_tableau = total_ligne Next ligne If Max_total_tableau > Max_total_page Then Max_total_page = Max_total_tableau Next tableau End Sub
Je reste attentif à vos remarques Merci d'avoir suivi
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Have a nice day Oliv' Pour me joindre : http://cerbermail.com/?V8r2o1YHl4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Le pb
j'aimerais vérifier que ceux-ci ne soient pas plus larges que la
page, afin de mettre en paysage ou réduire ou convertir en image
les tableaux selon .
Ma solution après cogitation fumante ;-)))
Sub red_tab()
' rappel conversion 1 cm (.35 points
ActiveWindow.View.Type = wdPrintView
Max_total_page = 0
For Each tableau In ActiveDocument.Tables
Max_total_tableau = 0
tableau.Select
'On Error GoTo col_fus ' pour gérer les tableau avec des cellules fusionnées
For Each ligne In tableau.Rows
total_ligne = 0
ligne.Select
For Each cellule In ligne.Cells
cellule.Select
total_ligne = cellule.Width + total_ligne + ligne.LeftIndent
largeur = Selection.PageSetup.PageWidth - Selection.PageSetup.LeftMargin -
Selection.PageSetup.RightMargin
If largeur < total_ligne Then MsgBox "attention en dehors"
Next cellule
If total_ligne > Max_total_tableau Then Max_total_tableau = total_ligne
Next ligne
If Max_total_tableau > Max_total_page Then Max_total_page =
Max_total_tableau
Next tableau
End Sub
Je reste attentif à vos remarques
Merci d'avoir suivi
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
j'aimerais vérifier que ceux-ci ne soient pas plus larges que la page, afin de mettre en paysage ou réduire ou convertir en image les tableaux selon . Ma solution après cogitation fumante ;-)))
Sub red_tab() ' rappel conversion 1 cm (.35 points ActiveWindow.View.Type = wdPrintView Max_total_page = 0 For Each tableau In ActiveDocument.Tables Max_total_tableau = 0 tableau.Select 'On Error GoTo col_fus ' pour gérer les tableau avec des cellules fusionnées For Each ligne In tableau.Rows total_ligne = 0 ligne.Select For Each cellule In ligne.Cells cellule.Select total_ligne = cellule.Width + total_ligne + ligne.LeftIndent largeur = Selection.PageSetup.PageWidth - Selection.PageSetup.LeftMargin - Selection.PageSetup.RightMargin If largeur < total_ligne Then MsgBox "attention en dehors" Next cellule If total_ligne > Max_total_tableau Then Max_total_tableau = total_ligne Next ligne If Max_total_tableau > Max_total_page Then Max_total_page = Max_total_tableau Next tableau End Sub
Je reste attentif à vos remarques Merci d'avoir suivi
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Have a nice day Oliv' Pour me joindre : http://cerbermail.com/?V8r2o1YHl4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~