Bonjour à tous
j'ai un problème de macros VBA que je n'arrive pas à résoudre depuis quelques jours:
J'ai mon tableau dans Excel 2010 qui possède environ 260 lignes et je cherche à le découper en plusieurs plus petit tableau qui serons ensuite coller dans Word (2010)
l'un à la suite de l'autre.
je cherche donc à copier les lignes qui contiènnent le chiffre 21,22,23 ..... dans la première collonne (A) puis les coller dans word à un endrois précis ( par exemple à un signet ) ou meme l'un à la suite de l'autre. chaque groupe de ligne (Excel) contenant le chiffre 21 feras un tableau dans Word, idem pour le chiffre 22 et ainsi de suite.
De plus il faudrais que, si on modifie le document Excel (si on ajoute une ligne, modifie une ligne, supprime une ligne) les tableaux se mettent à jour dans word automatiquement.
j'ai déjàs commencer à coder dans Excel en vba :
Le code si dessous me permet de selectionner les lignes qui contiènnent le chiffre 21 dans la première collonne et de copier les ligne pour les collre à un signet dans word
Dans mon code il me manque la partie "mise à jour" puisque quand je relance ma macro il recolle le tableau dans l'autre dejas existant au lieu de "l'écraser".
( ma macro ne travaille que sur les lignes contenant le chiffre 21, sinon c'est trop compliquer pour moi, mais il faudras au final que la macro recherche les différents chiffre)
Si quelqu'un avais une solution pour coller mes différents tableaux à différent signet ou l'un à la suite de l'autre, ( je préfèrerais la première solution qui est de coller à différent signet)
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 Sub copie_dans_word() Dim oExcel As New Excel.Application Dim PlageUtile As Range Dim Ligne As Range Dim Origine As Worksheet Dim i As Integer 'Créer une instance de word Set oWord = CreateObject("Word.Application") 'définition de l'origine dans Excel Set Origine = Worksheets("num1") Set PlageUtile = Range(Origine.Cells(3, 1), Origine.Cells(1, 1).SpecialCells(xlLastCell)) 'Copier une plage depuis Excel For Each Ligne In PlageUtile.Rows If Ligne.Cells(1, 1).Value = "21" Then Ligne.Copy 'Ouvrir un nouveau document oWord.Documents.Open "C:\Users\admin\Documents\doc2.docx" 'rendre le document word visible oWord.Visible = True 'cherche le signet dans la feuille word 'oWord.Selection.Goto Name:="signet1" 'Coller la plage dans Word 'oWord.Selection.PasteAndFormat (wdPasteDefault) End If Next End Sub
Partager