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 -
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
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
-
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
-
Bonjour
ok c'est parti sois patient !
transféré dans forum VBA -
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 -
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 -
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 restitutionWith Sheets("onséclatesurccm")
With .Range("A2:D" & Index + 1)
.Value = T_out
.Borders.Weight = xlThin
End With
.Activate
End With
-
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