Demande d'aide macro

Résolu
personalite Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -  
personalite Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -
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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour
    ok c'est parti sois patient !
    transféré dans forum VBA
    1
    1. personalite Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
       
      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
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. personalite Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
       
      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
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. personalite Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  7. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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. personalite Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
       
      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
  8. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. personalite Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
       
      merci à tous les deux ça marche du tonnerre
      0