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 :

Fenêtre permettant de copier/coller les lignes d'un tableau vers un autre tableau


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 2
    Points
    2
    Par défaut Fenêtre permettant de copier/coller les lignes d'un tableau vers un autre tableau
    Bonjour,

    Je me lance depuis peu dans le VBA, et j'ai besoin de bcp d'aide.

    Je travaille sur un document word, contenant plusieurs tableaux, mais pour l'exemple, je me limiterai a 2 tableaux (tab1 et tab2) comme illustré sur l'image. Nom : doc_tab.jpeg
Affichages : 669
Taille : 64,8 Ko. J'ai crée des bookmarks pour chacun de mes tableaux.

    J'aimerai créer une macro qui me permette de sélectionner avec une liste déroulante le tableau et sa ligne que je veux copier (tab1 et ligne Etape 2 sur l'image) ainsi que le deuxieme tableau et sa ligne de destination (l'endroit ou sera coller la ligne copiée, tab2 et ligne Etape 4 sur l'image) .
    Est-ce possible de créer cela en VBA ? Et si oui comment ?

    D'avance merci bcp.
    Images attachées Images attachées  

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Doursal Voir le message
    Bonjour,

    Avez-vous regardé le tutoriel d'Olivier LEBEAU vba-word ?

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    Avez-vous regardé le tutoriel d'Olivier LEBEAU vba-word ?
    Bonjour,

    J'ai fait pas mal de biblio pour comprendre le vba. Je n'ai pas regardé ce tutoriel en particulier.

    J'ai cru comprendre qu'avec des userforms, on peut créer des fenêtres comportant des combobox. Cependant, je ne sais pas comment faire en sorte que le contenu de mes combobox soit le contenu texte de la premiere colonne de mon tableau, faire une copie d'une ligne d'un tableau vers un autre tableau, et faire en sorte que le bouton "valider" active ma copie.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Doursal Voir le message
    Au niveau des userforms, vous retrouverez beaucoup de similitudes avec ceux d'Excel. C'est au niveau du VBA Word que cela change pas mal si vous comparez avec le VBA Excel, et l'enregistreur de macros n'est pas aussi facile à manier. Le tutoriel d'Olivier LEBEAU vous donne une bonne approche.

    Avez vous déjà préparé un document avec votre userform, ses combobox et vos deux tables ?

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    ...
    Oui, j'ai fait le userform. Par contre, dans la fonction "CommandButton1_Click() ", je n'arrive pas a définir mes tableaux avec ces lignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set Doc = ActiveDocument
    Set Tabl1 = Doc.Bookmarks("Tab1").Range.Tables(1)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Doursal Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set Doc = ActiveDocument
    Set Tabl1 = Doc.Tables(1)

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set Doc = ActiveDocument
    Set Tabl1 = Doc.Tables(1)

    Je vais avoir bcp de tableaux dans mon document. C'est pour cela que je préfére utiliser des bookmarks afin d'appeler le bon tableau.

  8. #8
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Voici mon userform:
    Nom : Userform.png
Affichages : 553
Taille : 24,7 Ko

    Niveau code, j'ai comme fonctions
    • Userform_Initialize: pour l'instant, j'ai défini la liste de ma combobox en dur, mais a la fin, j'aimerai que ça soit rempli de façon dynamique en fonction du nombre de ligne du tableau selectionne (je ne sais pas encore le faire)
    • CommandButton1_click: je déclare les deux tableaux de mon document grâce aux bookmarks, et je fais des tests. Je reçois une erreur me disant "error 5941, the request member of the collection does not exist" pour la ligne *Set Tabl1 = Doc.Bookmarks("Tab1").Range.Tables(1)*

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Doursal Voir le message
    Pouvez-vous mettre votre document en ligne sans données confidentielles ?

  10. #10
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Pouvez-vous mettre votre document en ligne sans données confidentielles ?
    Je ne le puis malheureusement. C'est pour cela que j'illustre au maximum mes messages à l'aide d'images.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Doursal Voir le message
    Un exemple avec vos captures d'écran de votre premier message est suffisant.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Doursal Voir le message
    Je vais avoir bcp de tableaux dans mon document. C'est pour cela que je préfére utiliser des bookmarks afin d'appeler le bon tableau.
    Vous pourriez également utiliser la propriété Title de vos tableaux pour les reconnaître facilement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub DonnerUnTitreAUneTable()
     
      With ActiveDocument
           .Tables(1).Title = "Table 1"
           .Tables(2).Title = "Table 2"
      End With
     
    End Sub
    Un exemple pour récupérer une table d'après son titre :
    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
     
    Function TableSelectionnee(ByVal DocEnCours As Document, ByVal TitreTable As String) As Integer
     
    Dim CtrI As Long
     
        With DocEnCours
             For CtrI = 1 To .Tables.Count
                 If .Tables(CtrI).Title = TitreTable Then TableSelectionnee = CtrI
             Next CtrI
        End With
     
    End Function
     
    Sub TestTableSelectionnee()
     
     Dim MaTable_2 As Table
     
         Set MaTable_2 = ActiveDocument.Tables(TableSelectionnee(ActiveDocument, "Table 2"))
         MsgBox MaTable_2.Title
     
    End Sub

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Doursal Voir le message
    Voici l'erreur que j'obtiens lorsque je clique sur validate
    Voir mon message précédent.

  14. #14
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Voir mon message précédent.
    Je ne connaissais pas cette technique. Merci.

    Neanmoins, quel est le probleme aevc les bookmarks ici ? Je ne comprends pas.

    Car mon document possède plusieurs tableaux. Seuls quelques tableaux vont être traites. Numéroter les tableaux n'est pas une solution envisageable dans la mesure où tout ajout de tableau par la suite rendrait ma macro obsolète (je serai obligée de la mettre à jour). Je cherche un solution dynamique, indépendante du nombre de tableaux du document et des modifications qui peuvent avoir lieu par la suite.

  15. #15
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    C'est pour cela que j'aimerai savoir quelle est la marche a suivre pour :
    1. avoir des listes dynamique qui, en fct du tableau sélectionné dans le premier combobox, me donne la liste des étapes correspondantes (nombre de ligne -1 du tableau)
    2. idem pour le tableau de destination
    3. appuyer sur le bouton valider afin que la ligne sélectionnée soit copier dans le tableau de destination.

    Dans quelle fonction dois-je déclarer mes tableaux ?
    Ou mettre le code pour copier/coller les éléments sélectionnés dans mon userform ?
    Comment gérer le bouton valider qui pour l'instant me donne une erreur quand j'appuie dessus.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Doursal Voir le message
    Neanmoins, quel est le probleme avec les bookmarks ici ?
    Je ne vois plus votre message. L'idée de travailler avec un signet englobant un tableau est une mauvais solution si à un moment donné vous devez remplacer votre tableau, car le signet va disparaître. Dans ce cas, il vous faut travailler plutôt avec des signets de position, descendre d'une ligne et récupérer l'index de la table.

    Car mon document possedent plusieurs tableaux. Seuls quelques tableaux vont etre traites. Nemeroter les tableaux n'est pas une solution envisageable dans la mesure ou tout ajout de tableau par la suite rendrait ma macro obsolete. Je cherche un solution dynamique, independante du nombre de tableaux du document et des modification qui peuvent avoir lieu.
    Justement, la technique donnant un titre à votre tableau vous permet de travailler sans connaître le numéro d'index des tableaux.

  17. #17
    Invité
    Invité(e)
    Par défaut
    Pouvez-vous mettre en ligne vos différentes procédures ?

  18. #18
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message

    Justement, la technique donnant un titre à votre tableau vous permet de travailler sans connaître le numéro d'index des tableaux.
    Le numéro d'index intervient pourtant dans la déclaration même du tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Tables(1).Title = "Table 1"
           .Tables(2).Title = "Table 2"
    Pour des raisons de praticité, il me sera bien plus simple de travailler avec des bookmarks, puisque mon tableau ne sera pas remplacer, que d'autres tableaux peuvent être ajouter avant/après, et que la création d'un bookmarks dans word est simple.

    Merci toutefois pour cette approche qui pourra m’être utile pour d'autres cas.

  19. #19
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Doursal Voir le message
    Vous n'avez pas regardé l'utilisation de la fonction. Pour récupérer le tableau, je travaille uniquement avec son titre.

  20. #20
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Voici mon code pour le moment:

    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
     
     
    Private Sub ComboBox3_Change()
     
    End Sub
     
     
     
    Private Sub CommandButton1_Click()
     
        Dim doc As Document
        Dim Table_1 As Table
        Dim Table_2 As Table
     
        Dim maCell As Range
     
        Dim TableBookmarkName As String
     
        Set doc = ActiveDocument
        Set Table_1 = doc.Bookmarks("Tab1").Range.Tables(1)   'erreur ici
        Set Table_2 = doc.Bookmarks("Tab2").Range.Tables(1)  
     
        Set maCell = Table_1.Cell(2, 3).Range
        MsgBox "Contenu tableau: " & maCell
     
        Me.CommandButton1.Caption = "Valide !!"
        MsgBox Me.ComboBox1.Value
     
    End Sub
     
    Private Sub UserForm_Initialize()
     
        'UserForm_Init_Module
        Dim myTabl_Box1() As String
        ReDim myTabl_Box1(6)
     
        myTabl_Box1(1) = "Tab1"
        myTabl_Box1(2) = "Tab2"
        myTabl_Box1(3) = "Tab3"
        myTabl_Box1(4) = "Tab4"
        myTabl_Box1(5) = "Tab5"
        myTabl_Box1(6) = "Tab6"
     
        Me.ComboBox1.List() = myTabl_Box1
     
     
        Dim myTabl_Box2() As String
        ReDim myTabl_Box2(4)
     
        myTabl_Box2(1) = "Etape 1"
        myTabl_Box2(2) = "Etape 2"
        myTabl_Box2(3) = "Etape 3"
        myTabl_Box2(4) = "Etape 4"
     
        Me.ComboBox2.List() = myTabl_Box2
     
     
        Dim myTabl_Box3() As String
        ReDim myTabl_Box3(6)
     
        myTabl_Box3(1) = "Tab1"
        myTabl_Box3(2) = "Tab2"
        myTabl_Box3(3) = "Tab3"
        myTabl_Box3(4) = "Tab4"
        myTabl_Box3(5) = "Tab5"
        myTabl_Box3(6) = "Tab6"
     
        Me.ComboBox3.List() = myTabl_Box3
     
     
        Dim myTabl_Box4() As String
        ReDim myTabl_Box4(5)
     
        myTabl_Box4(1) = "Etape 1"
        myTabl_Box4(2) = "Etape 2"
        myTabl_Box4(3) = "Etape 3"
        myTabl_Box4(4) = "Etape 4"
        myTabl_Box4(5) = "Etape 5"
     
        Me.ComboBox4.List() = myTabl_Box4
     
     
    End Sub
     
     
    Private Sub ComboBox1_Change()
     
        Debug.Print Me.ComboBox1.Value          
        MsgBox Me.ComboBox1.Value
     
    End Sub
     
    Private Sub ComboBox1_CopyStep()
     
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Copier-coller les lignes selectionnées en conservant la mise en forme.
    Par syd0112 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 27/03/2017, 16h47
  2. [XL-2007] Réaliser une recherche dans une colonne et copier coller les lignes
    Par Georges50 dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 13/11/2013, 15h39
  3. Outil VBA sur ArcGis : Copier/coller les lignes dans une table attributaire
    Par Alexiis dans le forum SIG : Système d'information Géographique
    Réponses: 2
    Dernier message: 26/09/2013, 16h15
  4. copier coller toutes les lignes d'un onglet vers un autre
    Par lili3183 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/11/2012, 18h31
  5. [XL-MAC 2004] copier/coller les données d'une période vers autre feuille
    Par Wawa07 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/05/2011, 12h10

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