begin process at 2012 02 15 13:04:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

Imprimer/word/vba/tableau


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Imprimer/word/vba/tableau

dimanche 27 août 2006 à 20:31:29 | Imprimer/word/vba/tableau

ZANUS

Bonsoir à tous

Je vous expose mon problème. J'ai un tableau sur word.Le nombre de colonnes est déterminé. Le nombre de lignes est variable. Je cherche à fractionner mon tableau en plusieurs tableaux. Chacun des nouveaux tableaux doit avoir le même en-tête, celui de départ. Sur excel, pas de problème avec les filtres.
J'utilise le code suivant. Il s'applique à un tableau exemple de 35 lignes. Je cherche à obtenir 7 tableaux (7 parce qu'il y  a 7 groupes) qui ne comptent pas nécessairement le nombre de lignes. Ainsi mon 1er tableau compte 6 lignes, mon second tableau compte 10 lignes. Ce nombre comprend l'en-tête.Connaîtriez-vous exceptée, un passage par excel (copier/coller), une méthode plus simple qui me permet d'aboutir au même résultat?
En effet, je dois repérer les groupes qui m'intéressent et corriger manuellemnt mon code ce qui n'est pas pratique.En effet, dans mon exemple, j'ai un tableau de 35 lignes mais je peux avoir un tableau initial de 250 lignes,mon 1er tableau peut avoir 42 lignes et avoir non pas 7 tableaux mais 3.
 Je précise mais les instructions n'apparaîssent pas ici que je cherche ensuite à imprimer ces  tableaux séparément (7 pour mon exemple).
Rows(1) représente la ligne d'en-tête.

Sub FractionnerTableau()
Set objTable = ActiveDocument.Tables(1)
If objTable.Rows.Count > 2 Then
    objTable.Rows(1).Select
    Selection.Copy
    objTable.Rows(7).Select
       Selection.Paste
    objTable.Rows(7).Select
    Selection.SplitTable
'Fractionner après la 6eme ligne
'J'ai ainsi un 1er tableau de 6 lignes
End If
Set objTable = ActiveDocument.Tables(2)
If objTable.Rows.Count > 2 Then
    objTable.Rows(1).Select
    Selection.Copy
    objTable.Rows(11).Select 
    Selection.Paste
    objTable.Rows(11).Select
    Selection.SplitTable
'J'ai un second tableau,etc...
End If
Set objTable = ActiveDocument.Tables(3)
If objTable.Rows.Count > 2 Then
    objTable.Rows(1).Select
    Selection.Copy
    objTable.Rows(5).Select
      Selection.Paste
    objTable.Rows(5).Select
    Selection.SplitTable
End If
Set objTable = ActiveDocument.Tables(4)
If objTable.Rows.Count > 2 Then
    objTable.Rows(1).Select
    Selection.Copy
    objTable.Rows(12).Select
       Selection.Paste
    objTable.Rows(12).Select
    Selection.SplitTable
End If
Set objTable = ActiveDocument.Tables(5)
If objTable.Rows.Count > 2 Then
    objTable.Rows(1).Select
    Selection.Copy
    objTable.Rows(3).Select
       Selection.Paste
    objTable.Rows(3).Select
    Selection.SplitTable
End If
Set objTable = ActiveDocument.Tables(6)
If objTable.Rows.Count > 2 Then
    objTable.Rows(1).Select
    Selection.Copy
    objTable.Rows(8).Select
          Selection.Paste
    objTable.Rows(8).Select
    Selection.SplitTable
End If
Set objTable = ActiveDocument.Tables(7)
If objTable.Rows.Count > 2 Then
    objTable.Rows(1).Select
    Selection.Copy
    objTable.Rows(3).Select
     Selection.Paste
    objTable.Rows(3).Select
    Selection.SplitTable
End If
End Sub

En espérant avoir été clair, je vous souhaite une bonne fin de soirée et une bonne reprise.
lundi 28 août 2006 à 09:48:56 | Re : Imprimer/word/vba/tableau

bipou

bonjour,

tu peux essayer ceci : en deux partie : d'abord on récupère la liste des fractionnement puis on fractionne.

Sub FractionnerTableau(colonne_rep) ' fonction du n° colonne qui sert au fractionnement
Dim objtable, ligne_total As Integer, ligne As Integer, rep As Range, rep0 As Range
Dim liste_rupture As String, tab_rupture As Variant, i As Integer
Set objtable = ActiveDocument.Tables(1)
ligne_total = objtable.Rows.Count
If ligne_total > 2 Then
    objtable.Sort ExcludeHeader:=True, FieldNumber:=colonne_rep
    ligne = 2
    Set rep0 = objtable.Cell(ligne, colonne_rep).Range
    Do
        ligne = ligne + 1
        Set rep = objtable.Cell(ligne, colonne_rep).Range
        If rep <> rep0 Then
            liste_rupture = liste_rupture & ligne & ","
            Set rep0 = rep
        End If
    Loop Until ligne > ligne_total
    tab_rupture = Split(liste_rupture, ",")
For i = UBound(tab_rupture) - 1 To LBound(tab_rupture) Step -1
    objtable.Rows(1).Select
    Selection.Copy
    objtable.Rows(tab_rupture(i)).Select
    Selection.Paste
    objtable.Rows(tab_rupture(i)).Select
    Selection.SplitTable
Next
End If
Set objtable = Nothing
End Sub
lundi 28 août 2006 à 18:41:51 | Re : Imprimer/word/vba/tableau

ZANUS

Bonsoir

Merci d'avoir répondu. Excuses moi (je ne suis pas un pro de VBA) mais je ne comprends pas trop ta syntaxe. En particulier, je n'arrive pas à lancer la macro (dans Outils/Macro/Macros, je ne la retrouve pas). Impossible d'utiliser le pas à pas détaillé: je n'ai pas de message d'erreur et la procédure ne se déroule pas.Je suppose qu'il faut faire une manipulation du type choisir un n° de colonne mais comment.

Merci encore

mercredi 30 août 2006 à 09:03:53 | Re : Imprimer/word/vba/tableau

bipou

Réponse acceptée !
bonjour

si tu préféres, tu peux remplacer par :

Sub FractionnerTableau()
dim colonne_rep as integer  'n° colonne qui sert au fractionnement
colonne_rep=5 'si c'est la 5eme colonne, sinon tu changes
Dim objtable, ligne_total As Integer, ligne As Integer, rep As Range, rep0 As Range
...
mercredi 30 août 2006 à 20:52:54 | Re : Imprimer/word/vba/tableau

ZANUS

Réponse acceptée !
Merci beaucoup. Ça marche avec juste un petit détail pour ceux qui seraient intéressés. La 1ère  ligne (je ne parle parle pas de la ligne d'en-tête) se retrouve en dernier. Mais ce n'est pas grave puisqu'il y a bien la ligne d'en-tête. J'ai donc bien autant de tableaux avec en-tête que de groupes.

@+



Cette discussion est classée dans : tableau, select, rows, selection, objtable


Répondre à ce message

Sujets en rapport avec ce message

Macro [ par Tumativu ] Bonjour,J'ai fait un relevé de comptes sur Excel avec macro pour les opérations répétitives (salaire, edf, eau, emprunt...). Mon tableau comprend 8 co f***ing checkbox [ par marsupio ] Je fais un tableau sur excel, pour chaque ligne, je met une checkbox qui lorsqu'elles sont cochées, font couper/coller la ligne à laquelle elles font Transfomer une plage (range) en tableau (variant) [ par Estelle_BNP ] Bonjour,j'essaie de créer une macro qui importe une plage de caractères Excel dans un tableau.Lorsque je lance ma macro j'ai le message Erreur d'exécu Tri dans un tableau à position et taille variables [ par dingur ] Bonjour ! J'ai un bout de macro qui me permet de générer un tableau à partir des premières lignes d'une feuille, elles-même récupérées par ailleurs. macro excel [ par nanieb ] Bonjour, <p class="MsoNormal" style="MA Extraction a partir d'onglets sous condition dans le nom de l'onglet. [ par Oldevi ] Bonjour a tous,Comme l'indique le titre de mon message, je souhaite dans une feuille excel, pour chaque onglet, controler s'il contient la cahine de c Remplacement donnée macro VBA [ par jbari49931 ] bonjour,voila je viens de créer une petite macro VBA exel et je suis confronté un un petit soucis que ne comptends pas.ci dessous mon code. Mon soucis erreur 1004 sous excel 2007 [ par khatim ] bonjour voila depuis que je suis sous office 2007 il ya une erreur 1004 qui apparait et lorsque je fais débogage voici ce qui est en jaune merci de me problème de filtrage multicritère et plusieurs colonnes [ par mythiac ] bonjour,j'ai un problème avec un filtre que j'ai créé, qui fonctionne dans certain cas, et qui déraille dans d'autres, je m'explique:j'ai une base de traduction vba [ par loulou411 ] Bonjour <p class="MsoNormal" style="MA


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales