Bonjour.
Après presque 2 jours de recherches infructueuse pour créer une macro, je viens solliciter votre aide.
Voici mon besoin :
Je voudrais copier toutes les valeurs des cellules de la colonne B d'un tableau Excel nommé Tableau1 situé dans une feuille nommée Test1 dans la première cellule vide de la colonne B d'un tableau Excel nommé Tableau2, situé dans une feuille nommée Test2.
Voici mon code actuel qui me renvoi une erreur :
Systématiquement, je reçois l'erreur 9 "L'indice n'appartient pas à la sélection".
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 Sub CopierValeursColonneB() Dim wsSource As Worksheet Dim wsDest As Worksheet Dim sourceTable As ListObject Dim destTable As ListObject Dim sourceRange As Range Dim destRange As Range Dim nextRow As Long ' Définir les feuilles de calcul Set wsSource = ThisWorkbook.Sheets("Test2") Set wsDest = ThisWorkbook.Sheets("Test1") ' Définir les tableaux Set sourceTable = wsSource.ListObjects("Tableau1") Set destTable = wsDest.ListObjects("Tableau2") ' Définir la plage de cellules à copier (colonne B du tableau source) Set sourceRange = sourceTable.ListColumns("B").DataBodyRange ' Trouver la première cellule vide dans la colonne B du tableau de destination With destTable.ListColumns("B").DataBodyRange If .Cells(.Cells.Count).Value <> "" Then nextRow = .Cells(.Cells.Count).Row + 1 Else nextRow = .Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1 End If End With ' Définir la plage de cellules de destination Set destRange = destTable.ListColumns("B").DataBodyRange.Cells(nextRow, 1).Resize(sourceRange.Rows.Count, 1) ' Copier les valeurs des cellules de la colonne B du tableau source vers la colonne B du tableau de destination destRange.Value = sourceRange.Value End Sub
Si j'utilise cette macro sur des plages de données (en l'adaptant), la copie des données se fait bien.
Avez-vous une idée d'où provient le problème ?
Partager