Remplacer données dans tableau en conservant les formules dans des colonnes
Bonjour,
J'ai un fichier source et un fichier destination. Le fichier source contient des données dans 7 colonnes. Le fichier destination contient les mêmes 7 colonnes + 6 colonnes avec des formules (des formules recherche(), dateval(), annee() etc.).
Chaque 2 semaines j'ai des nouvelles données (nombre de lignes différent). Je voudrais remplacer les données présentes en conservant les formules. Le chemin du fichier source se trouve dans la cellule C11 de la feuille "Hyp" dans le fichier destination.
J'obtiens Erreur d'exécution '1004' : La méthode PasteSpecial de la class Range a échoué. Pour le moment, voici mon code.
Sub Copier_coller()
'chemin
Dim cellule As Object
Dim chemin As String
'workbooks
Dim wb_source As Workbook
Dim wb_dest As Workbook
'worksheets
Dim ws_source As Worksheet
Dim ws_dest As Worksheet
Dim ws_hyp As Worksheet
'dernières lignes
Dim source_derniere_ligne As Long
Dim dest_derniere_ligne As Long
Set wb_dest = ThisWorkbook
Set ws_dest = wb_dash.Sheets("Dest")
Set ws_hyp = wb_dash.Sheets("Hyp")
'Identifier le chemin pour récupérer les données
Set cellule = ws_hyp.Range("C11")
chemin = cellule.Value
Set wb_source = Application.Workbooks.Open(chemin & "\SOURCE.XLSX")
Set ws_source = wb_source.Sheets(1)
'Trouver la dernière ligne de la source des données
source_derniere_ligne = ws_source.Cells(Rows.Count, 1).End(xlUp).Row
'Trouver la dernière ligne dans la feuille destination (pour supprimer la plage)
dest_derniere_ligne = ws_dest.Cells(Rows.Count, 1).End(xlUp).Row
'Supprimer les données dans la feuille période
Range(Cells(2, 1), Cells(dest_derniere_ligne, 13)).Delete
'Copier les données de la source
Range(ws_source.Cells(2, 1), ws_source.Cells(source_derniere_ligne, 13)).Copy
'Coller les données dans la période
ws_periode.Range("A2").PasteSpecial Paste:=xlPasteSpecialValues
End SubJ'ai aussi essayé sans le PasteSpecial, donc ce code : ws_dest.Range("A2").Paste
J'obtiens "Erreur d'exécution '438': Propriété ou méthode non gérée par cet objet". Ma syntaxe est-elle mauvaise ?
Pour l'instant je n'ai pas pu vérifier si cette méthode me permettait de conserver les formules dans le tableau destination. Y a-t-il une méthode plus simple ou plus "juste" à utiliser ?
De plus, quand j'exécute mon code et que l'erreur apparaît, les données ne sont pas encore supprimées (même si l'erreur concerne une ligne qui arrive plus loin). Est-ce normal?
Merci d'avance pour votre aide
Bonjour,
C'est normal, le "dash"?
Set wb_dest = ThisWorkbook
Set ws_dest = wb_dash.Sheets("Dest")
Set ws_hyp = wb_dash.Sheets("Hyp")J'ai voulu modifier certains noms mais j'ai oublié de le modifier ici, c'est "dest" à la place.
(Car je fais un dashboard, qui est en fait la destination. Je trouvais ça plus pratique pour expliquer ici. Désolé pour l'erreur.)