Bonjour à tous, j'ai une macro qui va chercher des valeurs dans un autre classeur excel. Mon fichier contient plusieurs sections dont les lignes sont groupées. J'ai une macro de mise à jour pour chaque section. Lorsque je mets à jour une section, mon tableau existant est effacé et les nouvelles données voulus sont insérer. Le problème est lors de l'exécution de la macro, le groupement de mes sections en-dessous de celle-ci est décaler et créée un désordre dans mes lignes groupées. D'après ce que j'ai trouvé, le problème semble provenir lors de l'exécution de la ligne :
Selection.Insert Shift:=xlDown
Voici mon code entier:
Private Sub MAJ_CS_Mensuel_Click()
Application.ScreenUpdating = False
Dim Mois As String
Dim I As Integer ' Compteur
Dim L As Integer ' Nombre de lignes
Mois = Range("CS_Mois").Text
'_____________________________________________________________________________________________________________
' Tableau de bord utilisé
TB = ThisWorkbook.Name
' Chemin du fichier ciblé
Chemin = "H:\DXA Production\1. GESTION DES SITES\3104 - VARENNES\SUIVI DES COÛTS DE LOCATION\2018\"
' Fichier ciblé
Fichier = "Suivi coûts de location_Varennes_2018.xlsx"
' Feuille où les données sont copiées
wsc = Mois
' Feuille où les données sont collées
wsp = "Tableau de bord"
'_____________________________________________________________________________________________________________
' 0 - Supprimer le tableau existant
Range("CS_Tableau").Select
Selection.EntireRow.Delete
' 1 - Ouvrir le fichier des coûts de sous-traitance
Workbooks.Open (Chemin + Fichier)
' 2 - Sélectionner le rapport mensuel et copier
Workbooks(Fichier).Sheets(wsc).Activate
Workbooks(Fichier).Sheets(wsc).Range("Tableau").Select
Workbooks(Fichier).Sheets(wsc).Range("Tableau").Copy
' 3 - Activer le tableau de bord et insérer le nombre de lignes à ajouter pour le tableau
Workbooks(TB).Activate
Workbooks(TB).Sheets(wsp).Range("CS_Mois").Offset(2, 0).Select
Selection.Insert Shift:=xlDown
' 4 - Coller les valeurs copier
Workbooks(TB).Sheets(wsp).Range("CS_Mois").Offset(2, 0).Select
ActiveCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
' 5 - Donne le nom "CS_Tableau" au tableau copié et groupe les lignes
Selection.Name = "CS_Tableau"
Selection.Rows.Group
' 6 - Ferme le fichier de suivi de coûts
Application.DisplayAlerts = False
Workbooks(Fichier).Close
End Sub
Pour des raisons de confidentialités, je ne peux pas joindre mon fichier original, mais j'ai créer un autre fichier qui illustre le problème présenté.
Merci à tout ceux qui prendront le temps de me répondre!