XL 2013 Recopie de données d'une feuille à une autre

Skilea

XLDnaute Nouveau
Bonjour à tous,

Je récupère une macro excel qui ne marche pas bien et que je dois corriger, mais je n'arrive pas à trouver le problème. Peut-être pouvez-vous m'aider ?
Je précise que je suis loin d'être une experte du VBA ...

Pour expliquer le fonctionnement :

On a deux feuilles (AFMon_Del et ADMon_Del) avec chacune une table liée à des listes SharePoint.
On doit donc dans un premier temps actualiser les données Sharepoint (RefreshAll), puis dans un second temps, on concatène les deux tables dans une seule table finale qui est dans la feuille "Bundle_Tracking".

La macro est lancée par un bouton situé sur la feuille finale "Bundle_Tracking".

Voilà le code :

VB:
Sub Refresh_D_Data_Af()

Show
DoEvents

'Clearing filters

Range("Table_KPI_Generator_Bundle_V1[[#Headers],[_id]]").Select

If ActiveWorkbook.ActiveSheet.FilterMode Or _
   ActiveWorkbook.ActiveSheet.AutoFilterMode Then _
   ActiveWorkbook.ActiveSheet.ShowAllData


ActiveWorkbook.RefreshAll
DoEvents

Concatenate_Tables
DoEvents

Sheets("Bundle_Tracking").Range("A1").Select

Hide
DoEvents

MsgBox "Data has been updated", vbOKOnly
End Sub

A priori "ActiveWorkbook.RefreshAll" doit mettre à jour les liens Sharepoint --> Ca ça marche car si je regarde mes deux onglets, les données sont à jour.

Ensuite, la fonction "Concatenate_Tables" doit concaténer les tables. C'est là que ça ne marche pas. Je n'ai aucun message d'erreur qui s'affiche, pourtant, les données ne sont pas copiées.
Sachant que si je relance une deuxième fois la macro, cette fois, les données sont copiées.
C'est comme si la concaténation se faisait avant que le refresh soit fini. Est-ce possible ?
J'ai testé d'ajouter un Sleep de 10 secondes avant la fonction Concatenate_Tables mais ça n'a rien changé ...

Voilà le code de la fonction Concatenate_Tables :

VB:
Sub Concatenate_Tables()
Dim MainTableD As ListObject
On Error Resume Next

Set MainTableD = ThisWorkbook.Sheets("Bundle_Tracking").ListObjects("Table_KPI_Generator_Bundle_V1")

'Sheets("Bundle_Tracking").Range("Table_KPI_Generator_Bundle_V1[[#Headers],[O Sent]:[C Need]]").Columns.Hidden = False

'Nettoyage Tableau
If Not MainTableD.DataBodyRange Is Nothing Then MainTableD.DataBodyRange.Delete

'Liste des Feuilles / Tables D

Dim ListeFeuillesTables(1 To 2, 1 To 2) As String  '1 to x,  1 To Y : X =Nombre de feuilles concernées Y=Nombre de lignes (code) nécessaires

ListeFeuillesTables(1, 1) = "AFMon_Del"
ListeFeuillesTables(1, 2) = "Table_KPI_Generator_AF_V1"
ListeFeuillesTables(2, 1) = "ADMon_Del"
ListeFeuillesTables(2, 2) = "Table_KPI_Generator_AD_V1"


Dim i As Integer
For i = 1 To 2          '1 to x Nombre de feuilles concernées

    'Refresh des tables D
    ThisWorkbook.Sheets(ListeFeuillesTables(i, 1)).ListObjects(ListeFeuillesTables(i, 2)).Refresh
    'If i = 1 Then ActiveWorkbook.Connections("KPI_Generator_AF_V1").Refresh
  
    'Verification présence de données dans le tableau
        If Not ThisWorkbook.Sheets(ListeFeuillesTables(i, 1)).ListObjects(ListeFeuillesTables(i, 2)).DataBodyRange Is Nothing Then
        If MainTableD.DataBodyRange Is Nothing Then
      
        'Copy vers Tableau
            ThisWorkbook.Sheets(ListeFeuillesTables(i, 1)).ListObjects(ListeFeuillesTables(i, 2)).DataBodyRange.Copy MainTableD.Range.Cells(1, 1).Offset(MainTableD.Range.Rows.Count - 1, 0)
        Else
            ThisWorkbook.Sheets(ListeFeuillesTables(i, 1)).ListObjects(ListeFeuillesTables(i, 2)).DataBodyRange.Copy MainTableD.Range.Cells(1, 1).Offset(MainTableD.Range.Rows.Count, 0)
        End If
    
    End If
Next


ThisWorkbook.Sheets("Bundle_Tracking").Select
Range("Table_KPI_Generator_Bundle_V1").Select
Selection.RowHeight = 14.25

'Sheets("Table_Full_AF").Visible = False
'Sheets("Bundle_Tracking").Range("Table_KPI_Generator_Bundle_V1[[#Headers],[O Sent]:[C Need]]").Columns.Hidden = True

Sheets("Bundle_Tracking").Range("A1").Select


End Sub

Avez-vous une idée de ce qui coince ?

Merci d'avance !!
 

Discussions similaires

Réponses
11
Affichages
236
Réponses
4
Affichages
165