[VBA]Intégration de données d'un autre classeur

  • Initiateur de la discussion Initiateur de la discussion shouhai
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

shouhai

XLDnaute Nouveau
Bonsoir à tous,



Je travail actuellement sur un macro (Excel 2010) qui me permet de chercher un fichier (browser) afin d'intégrer certaines lignes. Mon programme fonctionne néanmoins il est très lourd et atteint ses limites quand je commence à lui mettre en entré des fichiers avec 60k de lignes ! La dernière fois j'ai mis fin à l'agonie de mon pc après 15 min de traitement.

Donc je recherche quelque chose de plus léger ! Voici déjà le code que j'utilise histoire de ne pas parler dans le vide :
Code:
 Sub AjoutDonnees(chemin As String)
 Dim classeur As Workbook 'Création d'un classeur
 Set classeur = Workbooks.Open(chemin)
 Dim k As Double
 Dim i As Double
 k = 0
 ThisWorkbook.Activate
 ThisWorkbook.Sheets("Donnees").Select
 i = Range("Donnees!A01").CurrentRegion.end(xlDown).Row
 classeur.Activate
 'Traitement du fichier, récupération des types de mouvements : expédition et navette
  'On filtre pour ne garder que les types de mouvements qui nous intéresse
  While Range("Feuil1!A2").Offset(k) <> ""
   If Range("Feuil1!H2").Offset(k) = "Expéd. client (-)" Or Range("Feuil1!H2").Offset(k) = "Navette filiale (-)" Or Range("Feuil1!H2").Offset(k) = "Navette inter-PFL (-)" Or Range("Feuil1!H2").Offset(k) = "Expéd. filiale (-)" Then
      Range("Feuil1!A2:H2").Offset(k).Copy Destination:=ThisWorkbook.Sheets("Donnees").Range("A1").Offset(i)
      i = i + 1
   End If
  k = k + 1
  Wend
  

classeur.Close
End Sub

J'ai essayer quelques trucs pour améliorer par exemple faire un filtre puis coller directement les données sur un autre onglet avant d'ajouter mes données (fait à l'aide de l'enregistreur de macro) mais c'est encore plus long que ce que j'ai maintenant.
En tout cas si quelqu'un à une idée pour réduire la complexité du code je suis preneur !

Je m'excuse d'avance pour les experts je ne suis pas un programmeur ^^

Merci d'avance !
 
Re : [VBA]Intégration de données d'un autre classeur

Bonjour shouhai
Bonjour le fil
Bonjour le forum

ne peux tu mettre en pièce jointe un classeur exemple de ce que tu as et de ce que tu veux (Un extrait de quelques lignes représentatives et non confidentielles)
MERCI PAR AVANCE
Bonne journée
Amicalement
Jean marie
 
Re : [VBA]Intégration de données d'un autre classeur

Bonjour à tous

shouhai:
Peut-être que si tu joignais des fichiers exemples avec des données anonymisées et ton code VBA, tu aurais plus de réponses, non?
Car difficile de faire des tests dans le vide et il semble logique que ce soit au demandeur de fournir un fichier exemple pour résoudre son problème, et pas à chaque membre du forum susceptible de te répondre de tenter de créer un fichier qui existe déjà sur le disque dur du dit demandeur, non?

EDITION: Houps collision, salut JM 😉 Signé: JM
 
Re : [VBA]Intégration de données d'un autre classeur

Bonjour,

Le fichier que je souhaite intégrer est construit de la façon suivante :
8 colonnes, dont une qui contient un type, type que je vérifie et si le type est conforme à l'un des quatre que je souhaite conserver je dois garder toutes la ligne.
Les lignes qui m'intéresse doivent être stockées dans un fichier similaire qui me sert de base de données et qui par conséquent n'est pas vide.
Pour illustrer je veux garder les lignes dont le type est A ou B du ClasseurA pour les mettre à la suite dans ClasseurB.
 

Pièces jointes

Re : [VBA]Intégration de données d'un autre classeur

Bonjour shouhai
Bonjour le fil
Bonjour le forum

dans ton explication tu dit :
Les lignes qui m'intéresse doivent être stockées dans un fichier similaire qui me sert de base de données et qui par conséquent n'est pas vide.
peux expliquer ta démarche
Ton fichier B est donc le fichier que tu décris ci dessus.
tu prends toutes les lignes du classeur A pour les mettre à la suite dans le Classeur B si les Types du Classeur A correspondent à ceux présent dans le classeur B ? tu vois pas mal de Questions
y a t'il des conditions pour importer les lignes des Types correspondants du Classeur A vers le Classeur B
dans l'attente
Bonne Journée
Amicalement
Jean Marie
 
Re : [VBA]Intégration de données d'un autre classeur

Alors je vais préciser, j'extrait le classeur A d'un logiciel, il y a plusieurs type ici noté A, B C etc ...
Sur ce fichier je m'intéresse qu'aux lignes qui ont un certain type par exemple je ne veux que les types A et B.
Une fois que j'ai sélectionné ces lignes je veux les ajouter à la suite de mon classeur B. Mon classeur B contient des données des mois précédents.
Pour le moment je fais le trie dans le classeur A, je parcours le classeur A, quand je trouve une ligne qui m'intéresse qui a le type A ou B je sélectionne l'ensemble de la ligne puis je la colle dans le classeur B !

Merci pour ton aide en tout cas, n'hésite pas à demander si je ne suis pas assez clair et précis !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
602
Réponses
9
Affichages
388
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
507
Réponses
3
Affichages
542
Réponses
5
Affichages
417
Réponses
7
Affichages
726
Réponses
3
Affichages
525
Retour