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

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 !
 

ChTi160

XLDnaute Barbatruc
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
 

Staple1600

XLDnaute Barbatruc
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
 

shouhai

XLDnaute Nouveau
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

  • classeurA.xlsx
    10 KB · Affichages: 51
  • classeurB.xlsx
    9.6 KB · Affichages: 65
  • classeurA.xlsx
    10 KB · Affichages: 66
  • classeurB.xlsx
    9.6 KB · Affichages: 66
  • classeurA.xlsx
    10 KB · Affichages: 60
  • classeurB.xlsx
    9.6 KB · Affichages: 69

ChTi160

XLDnaute Barbatruc
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
 

shouhai

XLDnaute Nouveau
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 !
 

Discussions similaires