[Aide] Raisonnement Tableau dynamique

Bonjour,

Je suis en train de réfléchir sur mon raisonnement avant conception de mon programme et je me pose une question par rapport à un point. Je voudrais profiter de votre expérience pour ne pas perdre de temps dans mes tests à réaliser chaque solution pour la comparer.

J'ai un fichier source qui contient les données que je veux importer (je joint un exemple simple à la suite). Son nombre de ligne est variable, et je ne les prend pas toutes, seulement celles qui possède des quantités (dans le fichier joint la structure est moins complexe mais cela reste mon problème).

Ma question est sur le raisonnement comment copier les données du fichier 1 à l'autre. Plusieurs possibilités mais je voudrais celle qui est la mieux réfléchie (rapide).

  • Me balader dans la colonne QTY et dès qu'il y a un nombre supérieur à 0, copier avec du range.value = range.value
    • Inconvénient : super lent car on touche au range des deux Workbooks constamment
  • Compter le nombre de ligne avec une quantité, faire un tableau de taille ce nombre, le remplir et ensuite le coller dans le workbook de destination
    • Inconvénient, au minima 2 boucle sur le nombre de ligne qui peut être très important => résultat : perte de temps
  • Faire un tableau de taille le nombre de ligne du fichier à importer, ne remplir seulement avec les lignes avec une QTY (moitié du tableau) et ne copier que la moitié rempli dans le fichier de destination
    • Inconvénient : Tableau très grand stocké en mémoire pour n'utiliser que la moitié au final
  • Faire un tableau dynamique dont la taille varie à chaque itération du nombre de ligne (Redim tableau ) et en même temps insérer dans le tableau les informations voulues
    • Inconvénient : de nombreux Redim ce qui est lourd pour l'application
  • Solution que je n'ai pas pensé ?

A première vu la solution du tableau dynamique est la meilleure ( 1seule boucle ), mais j'ai vu qu'il n'était pas forcément bon de réaliser un Redim dans une boucle ainsi, car c'était une perte de temps et une action assez lourde pour le système pour la répéter plus de 500 fois.

Donc avec votre expérience et si quelqu'un a déjà été confronté au même problème, quelle solution est la mieux en terme de rapidité mais aussi impact sur système ?

Merci de votre aide.

6a-importer.xlsb (18.15 Ko)

Bonjour Tenders_vba

Tu es sous M365, alors pourquoi ne pas utiliser Power Query efficace et rapide

Il y a pleins de fils à ce sujet

@+

Power Query voudrait dire que le fichier à importer reste toujours le même, sauf que dans mon cas le fichier est une sélection réalisé par l'utilisateur.

Il peux choisir le fichier1 qui contient une configuration type ou fichier2 qui en contient une autre. Sachant que les deux possèdent un nombre de ligne colonne à prendre en compte différent.

Je réalise par le VBA :

  • La sélection du fichier
  • avec un userform, la sélection des colonnes à prendre en compte
  • le choix de différentes configurations à importer

Plus bien d'autres vérifications, trouver la position des informations avec des find comme une position n'est pas fixe (ex : en A1 sur fichier1 et après en B6 sur fichier2).

Donc je vois pas très bien comment je pourrais faire tout cela avec Power Query, que j'utilise par ailleurs dans un second temps dans le fichier qui va recevoir les données.

Rechercher des sujets similaires à "aide raisonnement tableau dynamique"