Dans un document Word, avec de nombreux liens vers des tableaux Excel, je
souhaite insérer des tableaux en format paysage, en conservant mes en-tête et
pieds de pages en format portrait. La seule méthode que j'ai trouvée consiste
à faire une image du tableau Excel, mais sa rotation est désastreuse pour el
graphisme des caractères. Si accesoirement je pouvais conserver le lien
dynamique, ce serait mieux, mais ce n'est pas absolument indispensable.
Comment faire?
Dans un document Word, avec de nombreux liens vers des tableaux Excel, je
souhaite insérer des tableaux en format paysage, en conservant mes en-tête et
pieds de pages en format portrait. La seule méthode que j'ai trouvée consiste
à faire une image du tableau Excel, mais sa rotation est désastreuse pour el
graphisme des caractères. Si accesoirement je pouvais conserver le lien
dynamique, ce serait mieux, mais ce n'est pas absolument indispensable.
Comment faire?
Dans un document Word, avec de nombreux liens vers des tableaux Excel, je
souhaite insérer des tableaux en format paysage, en conservant mes en-tête et
pieds de pages en format portrait. La seule méthode que j'ai trouvée consiste
à faire une image du tableau Excel, mais sa rotation est désastreuse pour el
graphisme des caractères. Si accesoirement je pouvais conserver le lien
dynamique, ce serait mieux, mais ce n'est pas absolument indispensable.
Comment faire?
Bonjour à toi aussi,
Olivier Lebel a présenté l'énoncé suivant :Dans un document Word, avec de nombreux liens vers des tableaux Excel, je
souhaite insérer des tableaux en format paysage, en conservant mes en-tête et
pieds de pages en format portrait. La seule méthode que j'ai trouvée consiste
à faire une image du tableau Excel, mais sa rotation est désastreuse pour el
graphisme des caractères. Si accesoirement je pouvais conserver le lien
dynamique, ce serait mieux, mais ce n'est pas absolument indispensable.
Comment faire?
Il y a plusieurs solutions...
Mais il faut attendre le robot de service...
Circé
Bonjour à toi aussi,
Olivier Lebel a présenté l'énoncé suivant :
Dans un document Word, avec de nombreux liens vers des tableaux Excel, je
souhaite insérer des tableaux en format paysage, en conservant mes en-tête et
pieds de pages en format portrait. La seule méthode que j'ai trouvée consiste
à faire une image du tableau Excel, mais sa rotation est désastreuse pour el
graphisme des caractères. Si accesoirement je pouvais conserver le lien
dynamique, ce serait mieux, mais ce n'est pas absolument indispensable.
Comment faire?
Il y a plusieurs solutions...
Mais il faut attendre le robot de service...
Circé
Bonjour à toi aussi,
Olivier Lebel a présenté l'énoncé suivant :Dans un document Word, avec de nombreux liens vers des tableaux Excel, je
souhaite insérer des tableaux en format paysage, en conservant mes en-tête et
pieds de pages en format portrait. La seule méthode que j'ai trouvée consiste
à faire une image du tableau Excel, mais sa rotation est désastreuse pour el
graphisme des caractères. Si accesoirement je pouvais conserver le lien
dynamique, ce serait mieux, mais ce n'est pas absolument indispensable.
Comment faire?
Il y a plusieurs solutions...
Mais il faut attendre le robot de service...
Circé
Merci et bonjour. Je ne suis pas sûr de comprendre ce qu'est le robot de
service. Joke ou technique?Bonjour à toi aussi,
Olivier Lebel a présenté l'énoncé suivant :Dans un document Word, avec de nombreux liens vers des tableaux Excel,
je
souhaite insérer des tableaux en format paysage, en conservant mes
en-tête et
pieds de pages en format portrait. La seule méthode que j'ai trouvée
consiste
à faire une image du tableau Excel, mais sa rotation est désastreuse
pour el
graphisme des caractères. Si accesoirement je pouvais conserver le lien
dynamique, ce serait mieux, mais ce n'est pas absolument indispensable.
Comment faire?
Il y a plusieurs solutions...
Mais il faut attendre le robot de service...
Circé
Merci et bonjour. Je ne suis pas sûr de comprendre ce qu'est le robot de
service. Joke ou technique?
Bonjour à toi aussi,
Olivier Lebel a présenté l'énoncé suivant :
Dans un document Word, avec de nombreux liens vers des tableaux Excel,
je
souhaite insérer des tableaux en format paysage, en conservant mes
en-tête et
pieds de pages en format portrait. La seule méthode que j'ai trouvée
consiste
à faire une image du tableau Excel, mais sa rotation est désastreuse
pour el
graphisme des caractères. Si accesoirement je pouvais conserver le lien
dynamique, ce serait mieux, mais ce n'est pas absolument indispensable.
Comment faire?
Il y a plusieurs solutions...
Mais il faut attendre le robot de service...
Circé
Merci et bonjour. Je ne suis pas sûr de comprendre ce qu'est le robot de
service. Joke ou technique?Bonjour à toi aussi,
Olivier Lebel a présenté l'énoncé suivant :Dans un document Word, avec de nombreux liens vers des tableaux Excel,
je
souhaite insérer des tableaux en format paysage, en conservant mes
en-tête et
pieds de pages en format portrait. La seule méthode que j'ai trouvée
consiste
à faire une image du tableau Excel, mais sa rotation est désastreuse
pour el
graphisme des caractères. Si accesoirement je pouvais conserver le lien
dynamique, ce serait mieux, mais ce n'est pas absolument indispensable.
Comment faire?
Il y a plusieurs solutions...
Mais il faut attendre le robot de service...
Circé
J'ai supprimer mon message, est ce bon ?
J'ai supprimer mon message, est ce bon ?
J'ai supprimer mon message, est ce bon ?
Mmmm...Je ne ferai pas de commentaire sur le robot de service.
Concernant la rotation de ton tableau Excel, j'ai retrouvé ça, qui
fonctionnait parfaitement (je ne m'en suis plus servi depuis très longtemps.
Essaie.
Option Explicit
Option Base 1
Dim TabFormules()
Public TotLig As Byte, TotCol As Byte
Dim l As Byte, C As Byte
Sub RotationSurSelection()
Dim L2 As Long, L1 As Long
Dim C1 As Integer, C2 As Integer, N As Byte
Dim F1, Calc As Boolean, Réponse As Long
Calc = Application.Calculation
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Set F1 = ActiveSheet
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
If TotLig = 1 And TotCol = 1 Then
If ActiveCell.CurrentRegion.Cells.Count = 1 Then
MsgBox "Veuillez sélectionner le tableau à transposer !"
Exit Sub
Else
Réponse = MsgBox("Sélection non valide." & Chr(13) & _
"Voulez-vous utiliser la zone en courscomme sélection ?", _
vbYesNo + vbQuestion, "Transposition de tableau")
If Réponse = vbNo Then Exit Sub
ActiveCell.CurrentRegion.Select
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
End If
End If
Call ConversionFormules(TotLig, TotCol)
Sheets.Add.Move After:=Sheets(Worksheets.Count)
ActiveSheet.Name = "Transpose"
F1.Select
Selection.Copy
Sheets("Transpose").Activate
ActiveSheet.Paste Destination:¬tiveSheet.Cells(TotCol + 1, 1)
C1 = 1
For L2 = TotCol + 1 To TotCol + TotLig
C2 = 1
L1 = TotCol
For C2 = 1 To TotCol
Cells(L2, C2).Cut (Cells(L1, C1))
L1 = L1 - 1
Next C2
C1 = C1 + 1
Next L2
With Range("A1").CurrentRegion
..HorizontalAlignment = xlGeneral
..VerticalAlignment = xlBottom
..WrapText = False
..Orientation = 90
..ShrinkToFit = False
..MergeCells = False
..EntireColumn.AutoFit
End With
For C = 1 To Range("A1").CurrentRegion.Columns.Count
For l = 1 To Range("A1").CurrentRegion.Rows.Count
If Range(TabFormules(l, C, 2)).HasFormula = True And (TabFormules(l, C, 4))
Then
Call RemplFormule(l, C)
End If
Next l
Next C
If Calc = True Then Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub '_________________________________________________
Sub AnnuleRotationSurSelection()
Dim L2 As Long, L1 As Long, N As Byte
Dim C1 As Integer, C2 As Integer, Réponse As Long
Dim F1, Calc As Boolean
Calc = Application.Calculation
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Set F1 = ActiveSheet
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
If TotLig = 1 And TotCol = 1 Then
If ActiveCell.CurrentRegion.Cells.Count = 1 Then
MsgBox "Veuillez sélectionner le tableau à transposer !"
Exit Sub
Else
Réponse = MsgBox("Sélection non valide." & Chr(13) & _
"Voulez-vous utiliser la zone en cours comme sélection ?", _
vbYesNo + vbQuestion, "Annulation de transposition de tableau")
If Réponse = vbNo Then Exit Sub
ActiveCell.CurrentRegion.Select
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
End If
End If
Call AnnConversionFormules(TotLig, TotCol)
Sheets.Add.Move After:=Sheets(Worksheets.Count)
ActiveSheet.Name = "AnnuleTranspose"
F1.Select
Selection.Copy
Sheets("AnnuleTranspose").Activate
ActiveSheet.Paste Destination:¬tiveSheet.Cells(TotCol + 1, 1)
C1 = TotLig
For L2 = TotCol + 1 To TotCol + TotLig
C2 = 1
L1 = 1
For C2 = 1 To TotCol
Cells(L2, C2).Cut (Cells(L1, C1))
L1 = L1 + 1
Next C2
C1 = C1 - 1
Next L2
With Range("A1").CurrentRegion
..HorizontalAlignment = xlGeneral
..VerticalAlignment = xlBottom
..WrapText = False
..Orientation = 0
..ShrinkToFit = False
..MergeCells = False
End With
For C = 1 To Range("A1").CurrentRegion.Columns.Count
For l = 1 To Range("A1").CurrentRegion.Rows.Count
If Range(TabFormules(l, C, 2)).HasFormula = True And (TabFormules(l, C, 4))
Then
Call RemplFormule(l, C)
End If
Next l
Next C
If Calc = True Then Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub ' __________________________________________________
Sub ConversionFormules(TotLig As Byte, TotCol As Byte)
ReDim TabFormules(TotCol, TotLig, 4)
For C = 1 To TotCol
For l = 1 To TotLig
TabFormules(C, l, 1) = Cells(l, C).Address(0, 0)
TabFormules(C, l, 2) = Cells(TotCol + 1 - C, l).Address(0, 0)
If Cells(l, C).HasFormula = True Then TabFormules(C, l, 3) = Cells(l,
C).FormulaLocal
Next l
Next C
For C = 1 To TotCol
For l = 1 To TotLig
If Not IsEmpty(TabFormules(C, l, 3)) Then
Call Conversion(l, C)
End If
Next l
Next C
End Sub '_________________________________________________
Private Sub Conversion(l As Byte, C As Byte)
Dim U As Integer, V As Integer, W As Integer, X As Integer, Y As Integer, Z
As Integer
Mmmm...Je ne ferai pas de commentaire sur le robot de service.
Concernant la rotation de ton tableau Excel, j'ai retrouvé ça, qui
fonctionnait parfaitement (je ne m'en suis plus servi depuis très longtemps.
Essaie.
Option Explicit
Option Base 1
Dim TabFormules()
Public TotLig As Byte, TotCol As Byte
Dim l As Byte, C As Byte
Sub RotationSurSelection()
Dim L2 As Long, L1 As Long
Dim C1 As Integer, C2 As Integer, N As Byte
Dim F1, Calc As Boolean, Réponse As Long
Calc = Application.Calculation
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Set F1 = ActiveSheet
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
If TotLig = 1 And TotCol = 1 Then
If ActiveCell.CurrentRegion.Cells.Count = 1 Then
MsgBox "Veuillez sélectionner le tableau à transposer !"
Exit Sub
Else
Réponse = MsgBox("Sélection non valide." & Chr(13) & _
"Voulez-vous utiliser la zone en courscomme sélection ?", _
vbYesNo + vbQuestion, "Transposition de tableau")
If Réponse = vbNo Then Exit Sub
ActiveCell.CurrentRegion.Select
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
End If
End If
Call ConversionFormules(TotLig, TotCol)
Sheets.Add.Move After:=Sheets(Worksheets.Count)
ActiveSheet.Name = "Transpose"
F1.Select
Selection.Copy
Sheets("Transpose").Activate
ActiveSheet.Paste Destination:¬tiveSheet.Cells(TotCol + 1, 1)
C1 = 1
For L2 = TotCol + 1 To TotCol + TotLig
C2 = 1
L1 = TotCol
For C2 = 1 To TotCol
Cells(L2, C2).Cut (Cells(L1, C1))
L1 = L1 - 1
Next C2
C1 = C1 + 1
Next L2
With Range("A1").CurrentRegion
..HorizontalAlignment = xlGeneral
..VerticalAlignment = xlBottom
..WrapText = False
..Orientation = 90
..ShrinkToFit = False
..MergeCells = False
..EntireColumn.AutoFit
End With
For C = 1 To Range("A1").CurrentRegion.Columns.Count
For l = 1 To Range("A1").CurrentRegion.Rows.Count
If Range(TabFormules(l, C, 2)).HasFormula = True And (TabFormules(l, C, 4))
Then
Call RemplFormule(l, C)
End If
Next l
Next C
If Calc = True Then Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub '_________________________________________________
Sub AnnuleRotationSurSelection()
Dim L2 As Long, L1 As Long, N As Byte
Dim C1 As Integer, C2 As Integer, Réponse As Long
Dim F1, Calc As Boolean
Calc = Application.Calculation
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Set F1 = ActiveSheet
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
If TotLig = 1 And TotCol = 1 Then
If ActiveCell.CurrentRegion.Cells.Count = 1 Then
MsgBox "Veuillez sélectionner le tableau à transposer !"
Exit Sub
Else
Réponse = MsgBox("Sélection non valide." & Chr(13) & _
"Voulez-vous utiliser la zone en cours comme sélection ?", _
vbYesNo + vbQuestion, "Annulation de transposition de tableau")
If Réponse = vbNo Then Exit Sub
ActiveCell.CurrentRegion.Select
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
End If
End If
Call AnnConversionFormules(TotLig, TotCol)
Sheets.Add.Move After:=Sheets(Worksheets.Count)
ActiveSheet.Name = "AnnuleTranspose"
F1.Select
Selection.Copy
Sheets("AnnuleTranspose").Activate
ActiveSheet.Paste Destination:¬tiveSheet.Cells(TotCol + 1, 1)
C1 = TotLig
For L2 = TotCol + 1 To TotCol + TotLig
C2 = 1
L1 = 1
For C2 = 1 To TotCol
Cells(L2, C2).Cut (Cells(L1, C1))
L1 = L1 + 1
Next C2
C1 = C1 - 1
Next L2
With Range("A1").CurrentRegion
..HorizontalAlignment = xlGeneral
..VerticalAlignment = xlBottom
..WrapText = False
..Orientation = 0
..ShrinkToFit = False
..MergeCells = False
End With
For C = 1 To Range("A1").CurrentRegion.Columns.Count
For l = 1 To Range("A1").CurrentRegion.Rows.Count
If Range(TabFormules(l, C, 2)).HasFormula = True And (TabFormules(l, C, 4))
Then
Call RemplFormule(l, C)
End If
Next l
Next C
If Calc = True Then Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub ' __________________________________________________
Sub ConversionFormules(TotLig As Byte, TotCol As Byte)
ReDim TabFormules(TotCol, TotLig, 4)
For C = 1 To TotCol
For l = 1 To TotLig
TabFormules(C, l, 1) = Cells(l, C).Address(0, 0)
TabFormules(C, l, 2) = Cells(TotCol + 1 - C, l).Address(0, 0)
If Cells(l, C).HasFormula = True Then TabFormules(C, l, 3) = Cells(l,
C).FormulaLocal
Next l
Next C
For C = 1 To TotCol
For l = 1 To TotLig
If Not IsEmpty(TabFormules(C, l, 3)) Then
Call Conversion(l, C)
End If
Next l
Next C
End Sub '_________________________________________________
Private Sub Conversion(l As Byte, C As Byte)
Dim U As Integer, V As Integer, W As Integer, X As Integer, Y As Integer, Z
As Integer
Mmmm...Je ne ferai pas de commentaire sur le robot de service.
Concernant la rotation de ton tableau Excel, j'ai retrouvé ça, qui
fonctionnait parfaitement (je ne m'en suis plus servi depuis très longtemps.
Essaie.
Option Explicit
Option Base 1
Dim TabFormules()
Public TotLig As Byte, TotCol As Byte
Dim l As Byte, C As Byte
Sub RotationSurSelection()
Dim L2 As Long, L1 As Long
Dim C1 As Integer, C2 As Integer, N As Byte
Dim F1, Calc As Boolean, Réponse As Long
Calc = Application.Calculation
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Set F1 = ActiveSheet
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
If TotLig = 1 And TotCol = 1 Then
If ActiveCell.CurrentRegion.Cells.Count = 1 Then
MsgBox "Veuillez sélectionner le tableau à transposer !"
Exit Sub
Else
Réponse = MsgBox("Sélection non valide." & Chr(13) & _
"Voulez-vous utiliser la zone en courscomme sélection ?", _
vbYesNo + vbQuestion, "Transposition de tableau")
If Réponse = vbNo Then Exit Sub
ActiveCell.CurrentRegion.Select
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
End If
End If
Call ConversionFormules(TotLig, TotCol)
Sheets.Add.Move After:=Sheets(Worksheets.Count)
ActiveSheet.Name = "Transpose"
F1.Select
Selection.Copy
Sheets("Transpose").Activate
ActiveSheet.Paste Destination:¬tiveSheet.Cells(TotCol + 1, 1)
C1 = 1
For L2 = TotCol + 1 To TotCol + TotLig
C2 = 1
L1 = TotCol
For C2 = 1 To TotCol
Cells(L2, C2).Cut (Cells(L1, C1))
L1 = L1 - 1
Next C2
C1 = C1 + 1
Next L2
With Range("A1").CurrentRegion
..HorizontalAlignment = xlGeneral
..VerticalAlignment = xlBottom
..WrapText = False
..Orientation = 90
..ShrinkToFit = False
..MergeCells = False
..EntireColumn.AutoFit
End With
For C = 1 To Range("A1").CurrentRegion.Columns.Count
For l = 1 To Range("A1").CurrentRegion.Rows.Count
If Range(TabFormules(l, C, 2)).HasFormula = True And (TabFormules(l, C, 4))
Then
Call RemplFormule(l, C)
End If
Next l
Next C
If Calc = True Then Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub '_________________________________________________
Sub AnnuleRotationSurSelection()
Dim L2 As Long, L1 As Long, N As Byte
Dim C1 As Integer, C2 As Integer, Réponse As Long
Dim F1, Calc As Boolean
Calc = Application.Calculation
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Set F1 = ActiveSheet
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
If TotLig = 1 And TotCol = 1 Then
If ActiveCell.CurrentRegion.Cells.Count = 1 Then
MsgBox "Veuillez sélectionner le tableau à transposer !"
Exit Sub
Else
Réponse = MsgBox("Sélection non valide." & Chr(13) & _
"Voulez-vous utiliser la zone en cours comme sélection ?", _
vbYesNo + vbQuestion, "Annulation de transposition de tableau")
If Réponse = vbNo Then Exit Sub
ActiveCell.CurrentRegion.Select
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
End If
End If
Call AnnConversionFormules(TotLig, TotCol)
Sheets.Add.Move After:=Sheets(Worksheets.Count)
ActiveSheet.Name = "AnnuleTranspose"
F1.Select
Selection.Copy
Sheets("AnnuleTranspose").Activate
ActiveSheet.Paste Destination:¬tiveSheet.Cells(TotCol + 1, 1)
C1 = TotLig
For L2 = TotCol + 1 To TotCol + TotLig
C2 = 1
L1 = 1
For C2 = 1 To TotCol
Cells(L2, C2).Cut (Cells(L1, C1))
L1 = L1 + 1
Next C2
C1 = C1 - 1
Next L2
With Range("A1").CurrentRegion
..HorizontalAlignment = xlGeneral
..VerticalAlignment = xlBottom
..WrapText = False
..Orientation = 0
..ShrinkToFit = False
..MergeCells = False
End With
For C = 1 To Range("A1").CurrentRegion.Columns.Count
For l = 1 To Range("A1").CurrentRegion.Rows.Count
If Range(TabFormules(l, C, 2)).HasFormula = True And (TabFormules(l, C, 4))
Then
Call RemplFormule(l, C)
End If
Next l
Next C
If Calc = True Then Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub ' __________________________________________________
Sub ConversionFormules(TotLig As Byte, TotCol As Byte)
ReDim TabFormules(TotCol, TotLig, 4)
For C = 1 To TotCol
For l = 1 To TotLig
TabFormules(C, l, 1) = Cells(l, C).Address(0, 0)
TabFormules(C, l, 2) = Cells(TotCol + 1 - C, l).Address(0, 0)
If Cells(l, C).HasFormula = True Then TabFormules(C, l, 3) = Cells(l,
C).FormulaLocal
Next l
Next C
For C = 1 To TotCol
For l = 1 To TotLig
If Not IsEmpty(TabFormules(C, l, 3)) Then
Call Conversion(l, C)
End If
Next l
Next C
End Sub '_________________________________________________
Private Sub Conversion(l As Byte, C As Byte)
Dim U As Integer, V As Integer, W As Integer, X As Integer, Y As Integer, Z
As Integer
Bonjour AB,
Je ne suis pas sur d ecomprendre tout ce que tu écris ni ce qu'il faut en
faire, mais ce que je constate c'est que je n'ai sans odut epas été très
clair dans ma question.
Bon, j'ai un tableau Excel. Je sais bien sûr l'imprimer en paysage ou en
portrait. Je ne cherche pas vraiment à le transposer (rendre les colonnes en
lignes et vice versa). En fait, j'ai sans doute compliqué la chose en parlant
d'Excel. Fondamentalement, j'ai un gros fichier de 100 pages en Word, avec
des en-têtes et des pieds de pages horizontaux (en portrait) à chaque page.
Mais j'ai un tableau qui est trop long pour tenir dans la petite dimension de
la page, et que je souhaite mettre dans la grande dimension (en fait , c'est
plutôt une vingtaine de tableaux Excel, en lien dynamique avec les comptes de
l'association). Si je fais une section avec un format paysage, mes en-tête et
pieds de page apparaissent dans la grande dimension, ce qui fait qu'on ne
voit plus les numéros de page lorsque les pages sont agrafées. J'ai pensé à
faire une image du tableau Excel, et à la faire tourner dans Word, mais le
résultat est pitoyable, les caractères sont à peine lisibles. En passant par
Acrobat, et en la faisant tourner dans Acrobat, en zoomant suffisament (i.e.
plus large que l'écran) et en utilisant l'outil de capture instantané, on
arrive à faire une iamge correcte. Néanmoins, cela présente deux
inconvénients: d'une part c'est relativement fastidieux, mais soit, en
revanche, je perds mes liens dynamiques, ce qui est plus genant si entre
temps le comptable a changé des choses.
Aurais-tu une meilleure piste?Mmmm...Je ne ferai pas de commentaire sur le robot de service.
Concernant la rotation de ton tableau Excel, j'ai retrouvé ça, qui
fonctionnait parfaitement (je ne m'en suis plus servi depuis très longtemps.
Essaie.
Option Explicit
Option Base 1
Dim TabFormules()
Public TotLig As Byte, TotCol As Byte
Dim l As Byte, C As Byte
Sub RotationSurSelection()
Dim L2 As Long, L1 As Long
Dim C1 As Integer, C2 As Integer, N As Byte
Dim F1, Calc As Boolean, Réponse As Long
Calc = Application.Calculation
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Set F1 = ActiveSheet
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
If TotLig = 1 And TotCol = 1 Then
If ActiveCell.CurrentRegion.Cells.Count = 1 Then
MsgBox "Veuillez sélectionner le tableau à transposer !"
Exit Sub
Else
Réponse = MsgBox("Sélection non valide." & Chr(13) & _
"Voulez-vous utiliser la zone en courscomme sélection ?", _
vbYesNo + vbQuestion, "Transposition de tableau")
If Réponse = vbNo Then Exit Sub
ActiveCell.CurrentRegion.Select
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
End If
End If
Call ConversionFormules(TotLig, TotCol)
Sheets.Add.Move After:=Sheets(Worksheets.Count)
ActiveSheet.Name = "Transpose"
F1.Select
Selection.Copy
Sheets("Transpose").Activate
ActiveSheet.Paste Destination:¬tiveSheet.Cells(TotCol + 1, 1)
C1 = 1
For L2 = TotCol + 1 To TotCol + TotLig
C2 = 1
L1 = TotCol
For C2 = 1 To TotCol
Cells(L2, C2).Cut (Cells(L1, C1))
L1 = L1 - 1
Next C2
C1 = C1 + 1
Next L2
With Range("A1").CurrentRegion
..HorizontalAlignment = xlGeneral
..VerticalAlignment = xlBottom
..WrapText = False
..Orientation = 90
..ShrinkToFit = False
..MergeCells = False
..EntireColumn.AutoFit
End With
For C = 1 To Range("A1").CurrentRegion.Columns.Count
For l = 1 To Range("A1").CurrentRegion.Rows.Count
If Range(TabFormules(l, C, 2)).HasFormula = True And (TabFormules(l, C, 4))
Then
Call RemplFormule(l, C)
End If
Next l
Next C
If Calc = True Then Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub '_________________________________________________
Sub AnnuleRotationSurSelection()
Dim L2 As Long, L1 As Long, N As Byte
Dim C1 As Integer, C2 As Integer, Réponse As Long
Dim F1, Calc As Boolean
Calc = Application.Calculation
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Set F1 = ActiveSheet
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
If TotLig = 1 And TotCol = 1 Then
If ActiveCell.CurrentRegion.Cells.Count = 1 Then
MsgBox "Veuillez sélectionner le tableau à transposer !"
Exit Sub
Else
Réponse = MsgBox("Sélection non valide." & Chr(13) & _
"Voulez-vous utiliser la zone en cours comme sélection ?", _
vbYesNo + vbQuestion, "Annulation de transposition de tableau")
If Réponse = vbNo Then Exit Sub
ActiveCell.CurrentRegion.Select
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
End If
End If
Call AnnConversionFormules(TotLig, TotCol)
Sheets.Add.Move After:=Sheets(Worksheets.Count)
ActiveSheet.Name = "AnnuleTranspose"
F1.Select
Selection.Copy
Sheets("AnnuleTranspose").Activate
ActiveSheet.Paste Destination:¬tiveSheet.Cells(TotCol + 1, 1)
C1 = TotLig
For L2 = TotCol + 1 To TotCol + TotLig
C2 = 1
L1 = 1
For C2 = 1 To TotCol
Cells(L2, C2).Cut (Cells(L1, C1))
L1 = L1 + 1
Next C2
C1 = C1 - 1
Next L2
With Range("A1").CurrentRegion
..HorizontalAlignment = xlGeneral
..VerticalAlignment = xlBottom
..WrapText = False
..Orientation = 0
..ShrinkToFit = False
..MergeCells = False
End With
For C = 1 To Range("A1").CurrentRegion.Columns.Count
For l = 1 To Range("A1").CurrentRegion.Rows.Count
If Range(TabFormules(l, C, 2)).HasFormula = True And (TabFormules(l, C, 4))
Then
Call RemplFormule(l, C)
End If
Next l
Next C
If Calc = True Then Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub ' __________________________________________________
Sub ConversionFormules(TotLig As Byte, TotCol As Byte)
ReDim TabFormules(TotCol, TotLig, 4)
For C = 1 To TotCol
For l = 1 To TotLig
TabFormules(C, l, 1) = Cells(l, C).Address(0, 0)
TabFormules(C, l, 2) = Cells(TotCol + 1 - C, l).Address(0, 0)
If Cells(l, C).HasFormula = True Then TabFormules(C, l, 3) = Cells(l,
C).FormulaLocal
Next l
Next C
For C = 1 To TotCol
For l = 1 To TotLig
If Not IsEmpty(TabFormules(C, l, 3)) Then
Call Conversion(l, C)
End If
Next l
Next C
End Sub '_________________________________________________
Private Sub Conversion(l As Byte, C As Byte)
Dim U As Integer, V As Integer, W As Integer, X As Integer, Y As Integer, Z
As Integer
Bonjour AB,
Je ne suis pas sur d ecomprendre tout ce que tu écris ni ce qu'il faut en
faire, mais ce que je constate c'est que je n'ai sans odut epas été très
clair dans ma question.
Bon, j'ai un tableau Excel. Je sais bien sûr l'imprimer en paysage ou en
portrait. Je ne cherche pas vraiment à le transposer (rendre les colonnes en
lignes et vice versa). En fait, j'ai sans doute compliqué la chose en parlant
d'Excel. Fondamentalement, j'ai un gros fichier de 100 pages en Word, avec
des en-têtes et des pieds de pages horizontaux (en portrait) à chaque page.
Mais j'ai un tableau qui est trop long pour tenir dans la petite dimension de
la page, et que je souhaite mettre dans la grande dimension (en fait , c'est
plutôt une vingtaine de tableaux Excel, en lien dynamique avec les comptes de
l'association). Si je fais une section avec un format paysage, mes en-tête et
pieds de page apparaissent dans la grande dimension, ce qui fait qu'on ne
voit plus les numéros de page lorsque les pages sont agrafées. J'ai pensé à
faire une image du tableau Excel, et à la faire tourner dans Word, mais le
résultat est pitoyable, les caractères sont à peine lisibles. En passant par
Acrobat, et en la faisant tourner dans Acrobat, en zoomant suffisament (i.e.
plus large que l'écran) et en utilisant l'outil de capture instantané, on
arrive à faire une iamge correcte. Néanmoins, cela présente deux
inconvénients: d'une part c'est relativement fastidieux, mais soit, en
revanche, je perds mes liens dynamiques, ce qui est plus genant si entre
temps le comptable a changé des choses.
Aurais-tu une meilleure piste?
Mmmm...Je ne ferai pas de commentaire sur le robot de service.
Concernant la rotation de ton tableau Excel, j'ai retrouvé ça, qui
fonctionnait parfaitement (je ne m'en suis plus servi depuis très longtemps.
Essaie.
Option Explicit
Option Base 1
Dim TabFormules()
Public TotLig As Byte, TotCol As Byte
Dim l As Byte, C As Byte
Sub RotationSurSelection()
Dim L2 As Long, L1 As Long
Dim C1 As Integer, C2 As Integer, N As Byte
Dim F1, Calc As Boolean, Réponse As Long
Calc = Application.Calculation
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Set F1 = ActiveSheet
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
If TotLig = 1 And TotCol = 1 Then
If ActiveCell.CurrentRegion.Cells.Count = 1 Then
MsgBox "Veuillez sélectionner le tableau à transposer !"
Exit Sub
Else
Réponse = MsgBox("Sélection non valide." & Chr(13) & _
"Voulez-vous utiliser la zone en courscomme sélection ?", _
vbYesNo + vbQuestion, "Transposition de tableau")
If Réponse = vbNo Then Exit Sub
ActiveCell.CurrentRegion.Select
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
End If
End If
Call ConversionFormules(TotLig, TotCol)
Sheets.Add.Move After:=Sheets(Worksheets.Count)
ActiveSheet.Name = "Transpose"
F1.Select
Selection.Copy
Sheets("Transpose").Activate
ActiveSheet.Paste Destination:¬tiveSheet.Cells(TotCol + 1, 1)
C1 = 1
For L2 = TotCol + 1 To TotCol + TotLig
C2 = 1
L1 = TotCol
For C2 = 1 To TotCol
Cells(L2, C2).Cut (Cells(L1, C1))
L1 = L1 - 1
Next C2
C1 = C1 + 1
Next L2
With Range("A1").CurrentRegion
..HorizontalAlignment = xlGeneral
..VerticalAlignment = xlBottom
..WrapText = False
..Orientation = 90
..ShrinkToFit = False
..MergeCells = False
..EntireColumn.AutoFit
End With
For C = 1 To Range("A1").CurrentRegion.Columns.Count
For l = 1 To Range("A1").CurrentRegion.Rows.Count
If Range(TabFormules(l, C, 2)).HasFormula = True And (TabFormules(l, C, 4))
Then
Call RemplFormule(l, C)
End If
Next l
Next C
If Calc = True Then Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub '_________________________________________________
Sub AnnuleRotationSurSelection()
Dim L2 As Long, L1 As Long, N As Byte
Dim C1 As Integer, C2 As Integer, Réponse As Long
Dim F1, Calc As Boolean
Calc = Application.Calculation
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Set F1 = ActiveSheet
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
If TotLig = 1 And TotCol = 1 Then
If ActiveCell.CurrentRegion.Cells.Count = 1 Then
MsgBox "Veuillez sélectionner le tableau à transposer !"
Exit Sub
Else
Réponse = MsgBox("Sélection non valide." & Chr(13) & _
"Voulez-vous utiliser la zone en cours comme sélection ?", _
vbYesNo + vbQuestion, "Annulation de transposition de tableau")
If Réponse = vbNo Then Exit Sub
ActiveCell.CurrentRegion.Select
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
End If
End If
Call AnnConversionFormules(TotLig, TotCol)
Sheets.Add.Move After:=Sheets(Worksheets.Count)
ActiveSheet.Name = "AnnuleTranspose"
F1.Select
Selection.Copy
Sheets("AnnuleTranspose").Activate
ActiveSheet.Paste Destination:¬tiveSheet.Cells(TotCol + 1, 1)
C1 = TotLig
For L2 = TotCol + 1 To TotCol + TotLig
C2 = 1
L1 = 1
For C2 = 1 To TotCol
Cells(L2, C2).Cut (Cells(L1, C1))
L1 = L1 + 1
Next C2
C1 = C1 - 1
Next L2
With Range("A1").CurrentRegion
..HorizontalAlignment = xlGeneral
..VerticalAlignment = xlBottom
..WrapText = False
..Orientation = 0
..ShrinkToFit = False
..MergeCells = False
End With
For C = 1 To Range("A1").CurrentRegion.Columns.Count
For l = 1 To Range("A1").CurrentRegion.Rows.Count
If Range(TabFormules(l, C, 2)).HasFormula = True And (TabFormules(l, C, 4))
Then
Call RemplFormule(l, C)
End If
Next l
Next C
If Calc = True Then Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub ' __________________________________________________
Sub ConversionFormules(TotLig As Byte, TotCol As Byte)
ReDim TabFormules(TotCol, TotLig, 4)
For C = 1 To TotCol
For l = 1 To TotLig
TabFormules(C, l, 1) = Cells(l, C).Address(0, 0)
TabFormules(C, l, 2) = Cells(TotCol + 1 - C, l).Address(0, 0)
If Cells(l, C).HasFormula = True Then TabFormules(C, l, 3) = Cells(l,
C).FormulaLocal
Next l
Next C
For C = 1 To TotCol
For l = 1 To TotLig
If Not IsEmpty(TabFormules(C, l, 3)) Then
Call Conversion(l, C)
End If
Next l
Next C
End Sub '_________________________________________________
Private Sub Conversion(l As Byte, C As Byte)
Dim U As Integer, V As Integer, W As Integer, X As Integer, Y As Integer, Z
As Integer
Bonjour AB,
Je ne suis pas sur d ecomprendre tout ce que tu écris ni ce qu'il faut en
faire, mais ce que je constate c'est que je n'ai sans odut epas été très
clair dans ma question.
Bon, j'ai un tableau Excel. Je sais bien sûr l'imprimer en paysage ou en
portrait. Je ne cherche pas vraiment à le transposer (rendre les colonnes en
lignes et vice versa). En fait, j'ai sans doute compliqué la chose en parlant
d'Excel. Fondamentalement, j'ai un gros fichier de 100 pages en Word, avec
des en-têtes et des pieds de pages horizontaux (en portrait) à chaque page.
Mais j'ai un tableau qui est trop long pour tenir dans la petite dimension de
la page, et que je souhaite mettre dans la grande dimension (en fait , c'est
plutôt une vingtaine de tableaux Excel, en lien dynamique avec les comptes de
l'association). Si je fais une section avec un format paysage, mes en-tête et
pieds de page apparaissent dans la grande dimension, ce qui fait qu'on ne
voit plus les numéros de page lorsque les pages sont agrafées. J'ai pensé à
faire une image du tableau Excel, et à la faire tourner dans Word, mais le
résultat est pitoyable, les caractères sont à peine lisibles. En passant par
Acrobat, et en la faisant tourner dans Acrobat, en zoomant suffisament (i.e.
plus large que l'écran) et en utilisant l'outil de capture instantané, on
arrive à faire une iamge correcte. Néanmoins, cela présente deux
inconvénients: d'une part c'est relativement fastidieux, mais soit, en
revanche, je perds mes liens dynamiques, ce qui est plus genant si entre
temps le comptable a changé des choses.
Aurais-tu une meilleure piste?Mmmm...Je ne ferai pas de commentaire sur le robot de service.
Concernant la rotation de ton tableau Excel, j'ai retrouvé ça, qui
fonctionnait parfaitement (je ne m'en suis plus servi depuis très longtemps.
Essaie.
Option Explicit
Option Base 1
Dim TabFormules()
Public TotLig As Byte, TotCol As Byte
Dim l As Byte, C As Byte
Sub RotationSurSelection()
Dim L2 As Long, L1 As Long
Dim C1 As Integer, C2 As Integer, N As Byte
Dim F1, Calc As Boolean, Réponse As Long
Calc = Application.Calculation
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Set F1 = ActiveSheet
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
If TotLig = 1 And TotCol = 1 Then
If ActiveCell.CurrentRegion.Cells.Count = 1 Then
MsgBox "Veuillez sélectionner le tableau à transposer !"
Exit Sub
Else
Réponse = MsgBox("Sélection non valide." & Chr(13) & _
"Voulez-vous utiliser la zone en courscomme sélection ?", _
vbYesNo + vbQuestion, "Transposition de tableau")
If Réponse = vbNo Then Exit Sub
ActiveCell.CurrentRegion.Select
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
End If
End If
Call ConversionFormules(TotLig, TotCol)
Sheets.Add.Move After:=Sheets(Worksheets.Count)
ActiveSheet.Name = "Transpose"
F1.Select
Selection.Copy
Sheets("Transpose").Activate
ActiveSheet.Paste Destination:¬tiveSheet.Cells(TotCol + 1, 1)
C1 = 1
For L2 = TotCol + 1 To TotCol + TotLig
C2 = 1
L1 = TotCol
For C2 = 1 To TotCol
Cells(L2, C2).Cut (Cells(L1, C1))
L1 = L1 - 1
Next C2
C1 = C1 + 1
Next L2
With Range("A1").CurrentRegion
..HorizontalAlignment = xlGeneral
..VerticalAlignment = xlBottom
..WrapText = False
..Orientation = 90
..ShrinkToFit = False
..MergeCells = False
..EntireColumn.AutoFit
End With
For C = 1 To Range("A1").CurrentRegion.Columns.Count
For l = 1 To Range("A1").CurrentRegion.Rows.Count
If Range(TabFormules(l, C, 2)).HasFormula = True And (TabFormules(l, C, 4))
Then
Call RemplFormule(l, C)
End If
Next l
Next C
If Calc = True Then Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub '_________________________________________________
Sub AnnuleRotationSurSelection()
Dim L2 As Long, L1 As Long, N As Byte
Dim C1 As Integer, C2 As Integer, Réponse As Long
Dim F1, Calc As Boolean
Calc = Application.Calculation
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Set F1 = ActiveSheet
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
If TotLig = 1 And TotCol = 1 Then
If ActiveCell.CurrentRegion.Cells.Count = 1 Then
MsgBox "Veuillez sélectionner le tableau à transposer !"
Exit Sub
Else
Réponse = MsgBox("Sélection non valide." & Chr(13) & _
"Voulez-vous utiliser la zone en cours comme sélection ?", _
vbYesNo + vbQuestion, "Annulation de transposition de tableau")
If Réponse = vbNo Then Exit Sub
ActiveCell.CurrentRegion.Select
TotLig = Selection.Rows.Count
TotCol = Selection.Columns.Count
End If
End If
Call AnnConversionFormules(TotLig, TotCol)
Sheets.Add.Move After:=Sheets(Worksheets.Count)
ActiveSheet.Name = "AnnuleTranspose"
F1.Select
Selection.Copy
Sheets("AnnuleTranspose").Activate
ActiveSheet.Paste Destination:¬tiveSheet.Cells(TotCol + 1, 1)
C1 = TotLig
For L2 = TotCol + 1 To TotCol + TotLig
C2 = 1
L1 = 1
For C2 = 1 To TotCol
Cells(L2, C2).Cut (Cells(L1, C1))
L1 = L1 + 1
Next C2
C1 = C1 - 1
Next L2
With Range("A1").CurrentRegion
..HorizontalAlignment = xlGeneral
..VerticalAlignment = xlBottom
..WrapText = False
..Orientation = 0
..ShrinkToFit = False
..MergeCells = False
End With
For C = 1 To Range("A1").CurrentRegion.Columns.Count
For l = 1 To Range("A1").CurrentRegion.Rows.Count
If Range(TabFormules(l, C, 2)).HasFormula = True And (TabFormules(l, C, 4))
Then
Call RemplFormule(l, C)
End If
Next l
Next C
If Calc = True Then Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub ' __________________________________________________
Sub ConversionFormules(TotLig As Byte, TotCol As Byte)
ReDim TabFormules(TotCol, TotLig, 4)
For C = 1 To TotCol
For l = 1 To TotLig
TabFormules(C, l, 1) = Cells(l, C).Address(0, 0)
TabFormules(C, l, 2) = Cells(TotCol + 1 - C, l).Address(0, 0)
If Cells(l, C).HasFormula = True Then TabFormules(C, l, 3) = Cells(l,
C).FormulaLocal
Next l
Next C
For C = 1 To TotCol
For l = 1 To TotLig
If Not IsEmpty(TabFormules(C, l, 3)) Then
Call Conversion(l, C)
End If
Next l
Next C
End Sub '_________________________________________________
Private Sub Conversion(l As Byte, C As Byte)
Dim U As Integer, V As Integer, W As Integer, X As Integer, Y As Integer, Z
As Integer