Copies de colonnes si valeurs dans cellule

Bonjour à tous,

Faisant suite à ma demande d'hier : https://forum.excel-pratique.com/viewtopic.php?f=2&t=139516, j'ai continué à développer ma macro. J'ai un peu avancé, mais j'arrive à un nouveau point bloquant à mon faible niveau.

Je vous mets un fichier exemple en pièce jointe, qui ne contient pas de macro. Je ne peux pas vous mettre le fichier sur lequel je travaille car c'est un sujet confidentiel.

J'ai un tableau dans lequel l'affichage d'un résultat dans l'une des colonnes est conditionné par les valeurs d'autres colonnes. Exemple dans le fichier fourni, la colonne D de la feuille "calcul" est conditionnée par les résultats de la colonne C. Si la valeur en C est supérieure à 5, le numéro indiqué en colonne A s'affiche en colonne D.

J'aimerais procéder à un copier-coller de données de la Feuille "Calcul" dans la Feuille "Conclusion", en suivant ces règles:

  • La colonne D de la Feuille 1 passe en colonne A de la feuille 2, la C passe en B, la A passe en C et la B passe en D, comme présenté dans le fichier exemple.
  • Les valeurs commencent à la ligne 2 sur la feuille "calcul", mais commenceront en ligne 5 sur la feuille "conclusion"
  • Je ne veux copier-coller les données que lorsque que la colonne D de la feuille "Calcul" affiche un résultat.
  • le nombre de ligne peut varier d'un jour à l'autre. Une fois 15 lignes, l'autre fois 854 par exemple.

Est-ce que quelqu'un saurait m'aider sur cette macro?

Bonne journée

Bonjour,

Ci-joint une proposition en VBA.

Bouben

Bonjour bouben,

Merci beaucoup, ça a l'air de parfaitement marcher.

J'ai une de ces marges de progression sur le VBA, c'est très motivant.

Je vais essayer d'appliquer ça à mon fichier.

Encore merci.

ça a l'air de parfaitement fonctionner quand je l'applique à mon fichier, c'est génial. Merci.

Juste une question. Je vois que tu as déchargé la mémoire à la fin de la macro avec "Set Nothing".

Si j'intègre une macro de ce type comme étant une étape dans une macro bien plus grosse, est-ce que je peux décharger la mémoire en cours de route, ou il faut que j'attende la fin de ma macro?

Par exemple, si je défini au début de ma macro ma feuille 1 comme étant oSh1, et que seule la première étape de ma macro concerne cette feuille alors que le reste de la macro travaille sur les feuilles 2 à 8, est-ce qu'à la fin de la première étape je peux appliquer "Set oSh1 = Nothing" avant que la macro ne continue sur les autres feuilles ou il faut que j'attende la fin du programme ?

Hello,

La destruction de l'objet (set = nothing) peut être faite dès que tu n'as plus besoin de l'objet.

Pour information, si tu essaies d'utiliser un objet qui a été détruit (ou qui n'a pas été instancié), tu seras alerté par une erreur 91 : "Variable objet ou variable de bloc With non définie".

Je n'ai jamais rencontré de problème de mémoire en détruisant les objets seulement en fin de procédure. Toutefois, je n'écris pas de procédures de 1000 lignes, difficilement maintenables, donc ne peux pas confirmer qu'un grand nombre d'objets créés entraîne ce type de problème !

Bouben

Merci beaucoup pour ta réponse.

Rechercher des sujets similaires à "copies colonnes valeurs"