Demande d'aide macro

Résolu
Bonjour

Qui peut m'aider?
J'ai besoin de faire une macro car j'ai une tâche répétitive (sur 4 000 lignes), que je souhaite automatiser

Dans la feuille base
Pour chaque ligne où la colonne statut ne contient pas « Annulée » + la colonne produit 1 non vide
Alors : recopier dans l'onglet éclatement n°commande, la date et le produit 1.
Si la colonne produit 2 est non vide, alors dans l'onglet éclatement faire une ligne avec n°commande, la date et le produit 2.
Si la colonne produit 3 est non vide, alors dans l'onglet éclatement faire une ligne avec n°commande, la date et le produit 3.
Pour illustrer ma demande, voici le lien du fichier.
https://www.cjoint.com/c/EGcjKPej8lk

Merci à tous et à toutes celles qui prendront la peine de lire ma demande

7 réponses

  1. Contributeur
    rien de tel qu'un petit siestou avant de bidouiller

    ci joint proposition mais il n'y a pas assez de lignes pour tester la rapidité
    http://www.cjoint.com/c/EGcnOyeoCKo
    2
    1. Contributeur
      Bonjour
      ok c'est parti sois patient !
      transféré dans forum VBA
      1
      1. Bonjour
        Merci de te pencher sur la question
        Oui c'est normal

        car il faut que 2 conditions soient respectées :
        la colonne statut ne contient pas « Annulée » + la colonne produit 1 non vide
        0
    2. Bonjour

      Une question
      Dans la feuille base, tu as prévu des colonnes Produit 4, etc ...
      Ces colonnes feront elles aussi l'objet d'un traitement ?

      Cdlmnt
      1
      1. Bonjour et Merci de te pencher également sur ma demande
        En tout je souhaite pouvoir aller jusque produit 5 pour le même traitement
        0
    3. Un début de réponse, à tester

      http://www.cjoint.com/c/EGcl2ZqGMwg

      Michel (salut à toi) va certainement trouver quelque chose de plus rapide

      Cdlmnt
      1
      1. Contributeur
        salut CCM
        Après la sieste !
        mais il faudrait que notre ami personalite fournisse un classeur avec beaucoup de lignes pour faire des test plus efficace
        d'avance merci
        0
    4. Merci à vous 2

      ccm81 : ta proposition est super intéressante mais je bloque encore sur qq lignes (dans le fichier éclatement, je récupère 126 lignes mais pas plus, il doit y avoir un souci avec mon fichier initial qui contient 25 colonnes)
      je dois continuer les tests et vous tiens au courant

      michel : je ne comprends pas : quand je lance la macro, je n'ai rien qui s'affiche, que fais je de mal

      en fait le fichier que je joins ressemble de très très loin au fichier sur lequel je bosse, car sur le véritable fichier il y a des infos confidentielles qui touche nos salariés. La seule info qui ne permet pas de faire le rapprochement avec mon entreprise est la date (elle est très connue dans ma région car elle a le monopole).

      En tout cas merci merci merci merci qu'aurais je fais sans vous?

      je ne clos pas maintenant juste au cas où je ne trouve pas ce qui bloque

      je vous tiens au courant si cela ne vous dérange pas
      0
      1. Contributeur
        bonjour

        manquait devant range !!! (mal réveillé) excuse moi

        Start = Timer
        Application.ScreenUpdating = False 'fige défilement de l'ecran--> confort, rapididité
        Sheets("onséclatesurccm").Range("A2:D20000").Clear 'ettoyage feuille de restitutions
        With Sheets("base")
        Derlig = .Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
        'mémorisation en Ram feeuille base
        T_base = .Range("A2:I" & Derlig)


        j'en profité d'ajoutter une ligne pour aller dans la feuille de restitution
        With Sheets("onséclatesurccm")
        With .Range("A2:D" & Index + 1)
        .Value = T_out
        .Borders.Weight = xlThin
        End With
        .Activate
        End With

        0
        1. ca fonctionne
          J'apprécie que tu ai pris la peine d'expliquer les étapes de la macro ('partie en vert),
          pour que je puisse la comprendre voire la modifier.

          Promis bientôt je me mets au VBA
          0
      2. environ 599 lignes au départ et 1589 à l'arrivée
        pour 0.8 s pour ma macro
        et 0.1 s pour celle de michel !!!
        http://www.cjoint.com/c/EGcpAG2nwOg

        Cdlmnt
        0
        1. merci à tous les deux ça marche du tonnerre
          0