Copie de données d'un dossier Excel à autre
Résolu/Fermé
7ossam
Messages postés
80
Date d'inscription
jeudi 3 mai 2012
Statut
Membre
Dernière intervention
30 décembre 2022
-
Modifié le 29 juin 2018 à 15:14
7ossam Messages postés 80 Date d'inscription jeudi 3 mai 2012 Statut Membre Dernière intervention 30 décembre 2022 - 2 juil. 2018 à 09:02
7ossam Messages postés 80 Date d'inscription jeudi 3 mai 2012 Statut Membre Dernière intervention 30 décembre 2022 - 2 juil. 2018 à 09:02
A voir également:
- Copie de données d'un dossier Excel à autre
- Liste déroulante excel - Guide
- Mettre un mot de passe sur un dossier - Guide
- Copie cachée - Guide
- Aller à la ligne excel - Guide
- Si et excel - Guide
1 réponse
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 778
Modifié le 29 juin 2018 à 15:49
Modifié le 29 juin 2018 à 15:49
Bonjour,
Peut-être :
Peut-être :
Sub Export_Données() Dim Workbook_Export_SAP As Workbook Dim source As Range, destination As Range Dim Feuille_Export_SAP As Worksheet, Feuille_Suivi As Worksheet Application.ScreenUpdating = False 'Ouvrir le classeur Workbook_Export_SAP Set Workbook_Export_SAP = Workbooks.Open("L:\Export SAP Réservations\Réservations en cours_SAP.XLS") 'Source = la 1ère feuille de Workbook_Export_SAP : Set Feuille_Export_SAP = Workbook_Export_SAP.Worksheets(1) With Feuille_Export_SAP Set source = .Range("D" & .Rows.Count).End(xlUp) Set source = .Range("A1", .Cells(source.Row, "R")) End With 'Destination = Feuil1 de classeur Feuille_Suivi Set Feuille_Suivi = ThisWorkbook.Worksheets("Feuil1") With Feuille_Suivi Set destination = .Range("A" & .Rows.Count).End(xlUp).Offset(1) End With 'Copie des données de l'EXPORT: source.Copy destination ' Effacer les données de la source source.Offset(1).Clear 'Je ferme le classeur Export SAP Workbook_Export_SAP.Close True MsgBox "Export terminé" End Sub
29 juin 2018 à 16:34
Merci pour la proposition de solution.
Alors, à la première exécution il a fait buggé mon fichier Excel.
En relançant une deuxième fois, il n'y a pas eu un message d'erreur. Sauf que ce n'est pas le résultat que je voulais.
En effet, il a copié seulement la première ligne de mon fichier Source dans le fichier Destination. Et, à la fin, il a effacé les données de mon fichier Source (je voulais les conserver et effacer celles de mon fichier Destination avant de faire la copie).
Je viens de le relancer et ça a fonctionné! Je ne comprends pas alors pourquoi ça n'a pas marché ni la première ni la deuxième fois.
Mais merci, tout de même, pour l'aide!
Juste une autre petite question:
Comme la base de donnée que je copie peut atteindre les 6000 lignes fois 18 colonnes (colonnes jusqu'à R). y'a-t-il un moyen d'améliorer la méthode de copier? Avec des tableaux?
Merci encore.
29 juin 2018 à 17:29
1) Alors, à la première exécution il a fait buggé mon fichier Excel.
- Y aurait-il d'autres macro dans ton fichier ?
2) En effet, il a copié seulement la première ligne de mon fichier Source dans le fichier Destination.
- C'est qu'il n'y a qu'une donnée dans la colonne D du fichier source (en D1). C'est cette colonne que tu utilises pour mesurer la taille du tableau de données.
Et, à la fin, il a effacé les données de mon fichier Source
- C'est effectivement le rôle de la ligne 22
(je voulais les conserver et effacer celles de mon fichier Destination avant de faire la copie).
- Pas facile à deviner, vu l'endroit où se situe le commentaire !!!
Ceci de devrait mieux correspondre à ton besoin (tel que je l'ai compris) :
29 juin 2018 à 22:00
Je n'utilise qu'une seule macro;
La colonne D contenait plusieurs valeurs (environ 6000).
Je crois que c'est à cause de la quantité de données que j'ai dans ce fichier que ça a planté. Car il a pas mal ramé avant de planter. et quand je l'ai relancé et que j'ai vu qu'il n'avait copié qu'une seule ligne (celle des titres) alors j'ai été vérifié mon fichier Source et j'ai remarqué que j'avais tout perdu (j'ai fait une copie pour les tests).
Quant à la clarté du message que j'ai posté:
<<
' J 'efface toute la plage en dessous de la A1:R1 (les titres du tableau):
Feuille_Suivi.Activate
Set Feuille_Suivi = Nothing
Feuille_Suivi.Range("A1:R" & n).Select
ActiveSheet.Paste
>>
J'ai pensé que c'était compréhensible, que je voulais effacer les données de la plage <<A 1:Rn >> de la Feuille_Suivi...
Merci pour le coup de main.
29 juin 2018 à 22:18
« La colonne D contenait plusieurs valeurs (environ 6000).
Je crois que c'est à cause de la quantité de données que j'ai dans ce fichier que ça a planté »
Ce serait surprenant, env. 110000 valeurs, c'est relativement faible, à moins que ton PC ne dispose que de très très peu de mémoire vive disponible.
« j'ai été vérifié mon fichier Source et j'ai remarqué que j'avais tout perdu »
Je viens de te dire que c'est normal, c'est à cause de la ligne 22 (que j'ai supprimé dans le dernier code) :
Il y a certainement une autre raison au plantage précédent mais il sera difficile de l'identifier. De toute façon le premier code ne donne pas le résultat attendu.
Est-ce que le dernier code (post #3) fonctionne correctement ?
30 juin 2018 à 18:55
C'est fort probable! C'est un PC assez vieux.
Inutile de le rappeler je l'avais bien lue, la ligne en question, la première fois et j'ai fait une copie de mon fichier et j'ai fait tout de même un test pour voir ce que ça allait donner à la fin.
Je t'ai cité ce que j'ai écrit dans ma question car tu as dit "Pas facile à deviner, vu l'endroit où se situe le commentaire !!! " alors que j'ai pensé, au moment de l'écrire, que ce n'était pas très confondant ... Mais certes, j'aurais pu être beaucoup plus clair ...
Malheureusement je ne peux pas le tester tout de suit. Je dois attendre le lundi. Je te tiendrai au courant.
Merci