macro pour copier deux colonnes d'un tableau xls vers un un doc word

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

fabancel

XLDnaute Junior
Bonjour le forum.

Je voudrais créer une macro qui :

- sélectionne deux colonnes séparées
- copie ces deux colonnes
- ouvre un doc word
- colle les deux colonnes sur le doc word.

J'ai deux soucis :
- la macro excel n'enregistre pas l'instruction d'ouverture du doc sur word.
- après avoir copié mes deux colonnes séparées depuis excel, quand je les colle sur word, ça colle aussi toutes les colonnes qui étaient entre les deux.

Je mets le classeur en PJ. Il s'agit des colonnes G et L.

Merci beaucoup pour votre aide.
 

Pièces jointes

Re : macro pour copier deux colonnes d'un tableau xls vers un un doc word

Bonjour,

Teste ce qui suit. La feuille cible est "module interrogation" et les deux colonnes sont "A" et "C", adapte si nécessaire :
Code:
Sub ExcelVersWord()

    Dim Tbl()
    Dim Plage As Range
    Dim AppWord As Object
    Dim Doc As Object
    Dim TableWd As Object
    Dim I As Integer
    Dim J As Integer

    With Worksheets("module interrogation")
        
        'défini la plage pour la 1ère colonne ici, colonne "A"
        Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
        
        'dimensionne le tableau à 2 dimensions (pour les 2 colonnes)
        'Attention, ici les 2 colonnes doivent avoir le même nombre de cellules
        'sinon, redimensionner une nouvelle fois le tableau avec "Preserve"
        ReDim Tbl(1 To 2, 1 To Plage.Count)
        
        'stocke les valeurs dans la 1ère dimension
        For I = 1 To Plage.Count
        
            Tbl(1, I) = Plage(I)
            
        Next I
        
        'défini la plage pour la 2ème colonne ici, colonne "C"
        Set Plage = .Range(.Cells(1, 3), .Cells(.Rows.Count, 3).End(xlUp))
        
        'stocke les valeurs dans la 2ème dimension
        For I = 1 To Plage.Count
        
            Tbl(2, I) = Plage(I)
            
        Next I

    End With
    
    'crée une instance de Word
    Set AppWord = CreateObject("Word.Application")
    
    With AppWord
    
        .Visible = True
        
        'ajoute un document
        Set Doc = .Documents.Add
        
        With Doc
            
            'crée la table Word aux dimensiuon du tableau
            Set TableWd = .Tables.Add(.Range, _
                                      UBound(Tbl, 2), _
                                      UBound(Tbl, 1), _
                                      1, _
                                      1)
            
            With TableWd
            
                'ajoute les valeurs
                For I = 1 To UBound(Tbl, 2)
                
                    For J = 1 To UBound(Tbl, 1)
                    
                        .Cell(I, J).Range.Text = Tbl(J, I)
                    
                    Next J
                    
                Next I
                
            End With
            
        End With
        
    End With
    
End Sub

Hervé.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour