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
A voir également:

7 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour
ok c'est parti sois patient !
transféré dans forum VBA
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
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
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
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
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
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
personalite Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
 
merci à tous les deux ça marche du tonnerre
0