IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

[Tableau] Atteindre un tableau dans une forme


Sujet :

VBA Word

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2005
    Messages : 65
    Points : 52
    Points
    52
    Par défaut [Tableau] Atteindre un tableau dans une forme
    Voilà mon problème. Avant, j'avais un tableau que je pouvais atteindre par:
    WordDoc.Tables(iTab).Range.Rows.Add
    avec iTab un compteur de tableaux.

    Malheureusement, dans un souci de mise en page, j'ai inséré mon deuxième tableau (iTab=2) dans un cadre invisible. Du coup, je n'arrive plus à écrire dedans car il ne doit plus être joignable par WordDoc.Tables(iTab)

    Document Word (Word 2000) ici: http://dl.free.fr/bpEsHNDJG/Avoir_Beta.doc


    Voici mon code original:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    Private Sub Form_Load()
     
    ''''''''''''''''''''''''''''''''''
    ' RECUPERATION LIGNE DE COMMANDE '
    ''''''''''''''''''''''''''''''''''
     
    Dim sCommandline As String 'Variable contenant la ligne de commande complète
    Dim Params() As String 'Tableau regroupant tous les paramètres
    Dim NbParam As Long 'Nombre de paramètres
    Dim sWorkingpath As String 'Chemin de l'exe
     
    sWorkingpath = CurDir 'On récupère le directory de travail
    sCommandline = Command() 'Lecture de la ligne de commande
    Params() = Split(sCommandline, " ") 'Permet de découper les différents arguments
    NbParam = UBound(Params) 'UBound() retourne la valeur du dernier index du tableau Params()
     
    '''''''''''''''''''
    ' OUVERTURE EXCEL '
    '''''''''''''''''''
     
    'Dim appExcel As Excel.Application
    'Dim wbExcel As Excel.Workbook
    'Dim wsExcel As Excel.Worksheet
    Dim appExcel As Object
    Dim wbExcel As Object
    Dim wsExcel As Object
     
    Set appExcel = CreateObject("Excel.Application") 'Ouverture de l'application
    Set wbExcel = appExcel.Workbooks.Open(CurDir + "\" + Params(1)) 'Ouverture d'un fichier
    Set wsExcel = wbExcel.Worksheets(1) 'wsExcel correspond à la première feuille du fichier
    appExcel.Visible = True 'Excel non-visible
     
    ''''''''''''''''''
    ' OUVERTURE WORD '
    ''''''''''''''''''
     
    'Dim WordApp As Word.Application 'Object
    'Dim WordDoc As Word.Document ' Object
    Dim WordApp As Object
    Dim WordDoc As Object
    Set WordApp = CreateObject("Word.Application") 'Ouverture de l'application
    Set WordDoc = WordApp.Documents.Open(CurDir + "\" + Params(0)) 'Ouverture du fichier
    WordApp.Visible = True 'Word non-visible
     
    ''''''''''''''''''''''''
    ' INSERTION EXCEL2WORD '
    ''''''''''''''''''''''''
     
    Dim i As Long
    Dim j As Long
    Dim sData() As String
    Dim TMP As String
    Dim iTab As Long
    Dim iIndex As Long
     
    i = 1 'compteur de ligne
    j = 1 'compteur de colonne
     
    'Tant qu'on a une ligne
    While wsExcel.Cells(i, j) <> ""
     
        'On isole le marqueur
        sData() = Split(wsExcel.Cells(i, j), ":")
     
        'On vérifie si il s'agit d'une insertion dans un tableau
        If InStr(1, sData(0), "Tab", 1) = 1 Then
     
            'On récupère le numéro du tableau
            iTab = Int(Right(sData(0), 1))
     
            'On ajoute une ligne au tableau
            WordDoc.Tables(iTab).Range.Rows.Add
     
            'On prend l'index
            iIndex = WordDoc.Tables(iTab).Rows.Count
     
            'On ajoute la première case manuellement (cf. Split de la case)
            WordDoc.Tables(iTab).Columns(j).Cells(iIndex).Range.Text = sData(1)
            j = j + 1
     
            'Tant qu'on est pas au bout de la ligne
            While wsExcel.Cells(i, j) <> ""
     
                'On copie les infos dans le tableau
                WordDoc.Tables(iTab).Columns(j).Cells(iIndex).Range.Text = wsExcel.Cells(i, j)
                j = j + 1
            Wend
     
        'Sinon on marque dans le signet
        Else
            On Error Resume Next
            WordDoc.Bookmarks(sData(0)).Range.Text = sData(1)
        End If
     
        'On incrémente la ligne et on remet à 0 la colonne
        i = i + 1
        j = 1 'Remise à Zero
     
    Wend
     
    '''''''''''''''''''
    ' FERMETURE EXCEL '
    '''''''''''''''''''
    wbExcel.Close 'Fermeture du classeur Excel
    appExcel.Quit 'Fermeture de l'application Excel
     
    'Désallocation mémoire
    Set wsExcel = Nothing
    Set wbExcel = Nothing
    Set appExcel = Nothing
     
    ''''''''''''''''''
    ' FERMETURE WORD '
    ''''''''''''''''''
    sData() = Split(Params(1), ".")
    WordApp.ActiveDocument.SaveAs (CurDir + "\" + sData(0) + ".doc") 'Sauvegarde du fichier
    WordDoc.Close 'Fermeture du document Word
    WordApp.Quit 'Fermeture de l'application Word
     
    'Désallocation mémoire
    Set WordDoc = Nothing
    Set WordApp = Nothing
     
    Unload Me 'On kill l'application
     
    End Sub
    Si quelqu'un a une solution, c'est assez urgent, merci !

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2005
    Messages : 65
    Points : 52
    Points
    52
    Par défaut
    En fait j'ai pas forcément été très clair.

    Je cherche à pouvoir piloter l'insertion de lignes dans le deuxième tableau du document, celui qui se trouve être dans le cadre invisible (cf. doc word).

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2005
    Messages : 65
    Points : 52
    Points
    52
    Par défaut
    J'ai trouvé comment atteindre une zone de texte avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Shapes(1).TextFrame.TextRange.Text
    Mais j'arrive pas à trouver mon tableau...

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2005
    Messages : 65
    Points : 52
    Points
    52
    Par défaut
    Bon j'ai trouvé. Pour ceux que ça interresse j'ai du aller à la main dans toutes les zones de texte pour trouver la bonne...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WordDoc.Shapes(4).GroupItems(1).TextFrame.TextRange.Tables(1)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD-2007] Récupérer un tableau (Table) dans une forme (Shape)
    Par Australia dans le forum VBA Word
    Réponses: 3
    Dernier message: 14/09/2011, 09h27
  2. Réponses: 8
    Dernier message: 12/07/2010, 15h43
  3. Afficher un tableau (fixe) dans une form
    Par Lnmex dans le forum VB.NET
    Réponses: 3
    Dernier message: 05/07/2010, 08h50
  4. Réponses: 6
    Dernier message: 03/02/2006, 19h45
  5. Un tableau toujours en haut dans une cellule
    Par Furius dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/12/2005, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo