Modification de macro
Bonjour à tous,
j'ai un ami qui m'avait réalisé une macro, mais depuis un certain temps cela ne fonctionne plus trop bien et j'aimerai une petite amélioration.
Je vous joins un fichier.
Le fichier que j'extrai de SAP me donne des données qui sont mise par ordre
croissant de la colonne C, soit M100, M200, M300 en feuil1, puis par jour
et moi je veux un classement uniquement par jour.
La macro est sur la feuille COOIS, je fais une extraction depuis SAP que je viens coller en A1. Je vous ai mis l'extraction telle quelle se présente en Feuil 1.
Si je veux vider ma page, je fais un ctrl +M et quand j'ai collé en A1, je fais un Ctrl+P, la macro s'active et range comme il faut, sauf que maintenant j'ai 3 lignes (17, 18, 19) qui sont en trop et qui sont déja présentes en F, G, H.
Le petit supplément, c'est concernant les lignes M300 qui ne se placent pas correctement par jour, il y a un M300 tout les 2 jours et là il ne me laisse pas d'espace.
Merci de votre retour.
René
Salut,
Je trouve que tes macros existantes ne sont pas faciles à retravailler. Elles ont apparemment été crées entièrement à l'aide de l'enregistreur de macro et pas nettoyées du tout.
J'ai donc essayé de comprendre la philosophie de ton fichier et ai créé ma propre macro (également en partie à l'aide de l'enregistreur
Pour l'instant, tu vas sur la feuille "Raccourci" et tu cliques sur le bouton "Go". Mon code va chercher sur la feuille 1 les renseignements qu'il reporte sur la feuille "COOIS". Sur la feuille 1, si une cellule de la colonne C a une cellule vide en dessous d'elle, c'est les données de la ligne en dessous qui sont reportées sur la feuille "COOIS"., autrement c'est les données de la ligne elle-même. De la colonne G, seuls les 4 derniers chiffres sont reportés. Je n'ai pas compris l'idée de n'utiliser qu'une partie des données de la colonne F, donc pour l'instant j'ai repris les données de la colonne F en entier. Edit du 24.04 à 8:00 : Parmi les deux dates, j'ai choisi celle de la colonne I.
Si je suis parti dans la bonne direction, indique-moi ce qui doit encore être corrigé.
Cordialement.
Merci pour ton travail, j'ai quelques modifs à te demander.
Je me suis peuxc être mal expliqué dans mon premiere demande
ce que je recherche , c'est de ne retrouver sur la feuille COOIS que les lignes qui sont marqués avec ZP10 en colonne F.
J'ai mis sur la feuille exemple ce que je voudrais retrouver après avoir fais la macro, avec la police, l'encadrement les cellules grisées pour le samedi et Dimanche.
Je ne sais pas si cela est possible, merci de me revenir.
René
Salut René,
Ca ne ressemble plus trop à ta première demande
Voici un nouvel essai.
Cordialement.
Bonjour,
excuse moi pour le travail fait pour rien,
cela me mets une erreur quand je clique sur "GO"
Erreur d'execution 1004
Impossible de renomer une feuille comme une autre feuille, une bibliotheque d'objets referencée ou un classeur referencé par visual basic
Concernant l'extraction de SAP, je la fais 1 fois par semaine, les données évolues constament et je peux le faire n'importe quel jour.
Je te laisse la main
René
Salut René,
C'est un peu bizarre, chez moi ça passe sur deux PC différents sans problème.
Utilises-tu mon fichier ou as-tu transféré le code dans un autre fichier ? Si c'est cette dernière version, as-tu une feuille nommée "Provisoire" dans ton fichier ?
Autrement peux-tu indiquer sur quelle ligne du code reste bloquée la macro (ligne en jaune dans Visual-Basic) ?
OU ALORS, si tu sais le faire, modifie le code dans le Module 3 en remplaçant "Provisoire" par par exemple "Provisoire_xxx" dans les deux lignes ci-dessous :
.....
ActiveSheet.Name = "Provisoire"
.....
Sheets("Provisoire").Delete
....ainsi, si tu as une autre feuille, une bibliotheque d'objets référencée ou un classeur référencé par visual basic déjà appelé "Provisoire", ça ne devrait plus causer de problème.
A te relire.
Cordialement.
Salut René,
C'est un peu bizarre, chez moi ça passe sur deux PC différents sans problème.
Utilises-tu mon fichier ou as-tu transféré le code dans un autre fichier ? Si c'est cette dernière version, as-tu une feuille nommée "Provisoire" dans ton fichier ?
Autrement peux-tu indiquer sur quelle ligne du code reste bloquée la macro (ligne en jaune dans Visual-Basic) ?
OU ALORS, si tu sais le faire, modifie le code dans le Module 3 en remplaçant "Provisoire" par par exemple "Provisoire_xxx" dans les deux lignes ci-dessous :
.....
ActiveSheet.Name = "Provisoire"
.....
Sheets("Provisoire").Delete
....ainsi, si tu as une autre feuille, une bibliotheque d'objets référencée ou un classeur référencé par visual basic déjà appelé "Provisoire", ça ne devrait plus causer de problème.
A te relire.
Cordialement.
Bonjour,
dans le module 3, cela reste bloqué sur la ligne
Do Until ActiveCell = "" ' report des autres dates
Pourquoi est ce qu'une feuille provisoire se crée quand je clique sur "GO"
A te relire.
René
RE,
C'est la solution de facilité que j'ai trouvée afin de pouvoir traiter tes données facilement (Colonne C complétée, transformation de tes dates au format "texte" en format "Date", tri, etc.). Mais cette feuille est effacée tout à la fin.r.gouet a écrit :Pourquoi est ce qu'une feuille provisoire se crée quand je clique sur "GO"
As-tu essayé mon histoire de modifier le code ? Est-ce que ça bloque au même endroit que le première fois ?r.gouet a écrit :dans le module 3, cela reste bloqué sur la ligne
Do Until ActiveCell = "" ' report des autres dates
D'autres membres ont essayé ce code ? Est-ce que ça bloque aussi chez eux ?
A te relire.
Bonjour
J'ai essayé et cela plante
Cela vient du fait que outre les date sont au format texte mais qu'en France le . (point) n'est pas considéré comme séparateur de date
Je propose comme formule à mettre en colonne Q
Range("Q1").FormulaR1C1 = "=(LEFT(RC9,2) & ""/"" & MID(RC9,4,2) & ""/"" & RIGHT(RC9,2))*1"Et normalement (pas vérifié) on ne doit pas avoir d'inversion du mois/jour comme cela arrive quand on utilise la fonction Replace ( le point "." par le slash "/")
A tester bien sur
@Yvouille Peut être une solution pour l'autre post https://forum.excel-pratique.com/excel/probleme-de-tri-par-vba-t30033.html
Car je n'ai pas d'autre solution
Salut Banzai,
Merci pour ton intervention. Concernant cet autre fil, je me permettrai de continuer la discussion de l'autre côté afin de ne pas tout mélanger.
J'ai testé ta proposition chez moi et ça fonctionne également bien en Suisse
Je ne comprends cependant pas ce que ça change, puisque - après avoir transformé la "date-format texte" en "date-format date" par ce *1, je mets encore un format de date international dans mon code.
Range("Q1").FormulaR1C1 = "=RC[-8]*1"
Range("Q1").NumberFormat = "dd/mm/yyyy;@"Allez René, je me tiens les pouces
Cordialement
Je vois que cela bosse pour moi.
Bon courage
René
Euh, non ! Pas tout à faitr.gouet a écrit :Je vois que cela bosse pour moi.
Banzai t'a proposé une modification du code que tu devrais effectuer et tester, puis tu devrais nous donner des informations sur les résultats obtenus.
En cas de problème, informe-nous en
A te relire.
Je voudrais bien avancer mais je ne sais comment faire.
Tu me parle de code à modifier et Banzai parle de formule à mettre en colonne Q.
Je ne comprends plus
Salut René,
Banzai propose de remplacer dans mon code la ligne
Range("Q1").FormulaR1C1 = "=RC[-8]*1"par celle-ci
Range("Q1").FormulaR1C1 = "=(LEFT(RC9,2) & ""/"" & MID(RC9,4,2) & ""/"" & RIGHT(RC9,2))*1"de manière à ce que la formule écrite automatiquement en Q1 (dans la feuille qui sera ensuite effacée) soit différente. Dans mon dernier message, je parle toujours de cette même Range("Q1").FormulaR1C1 = .........
Si tu ne t’en sors pas, dis-le-nous.
Mais, si après tes essais, ça ne joue toujours pas, je vais essayer de modifier complètement mon code sur la base d’informations reçues sur cet autre fil : https://forum.excel-pratique.com/excel/probleme-de-tri-par-vba-t30033.html
Amicalement.
Bonjour Yvouille
j'ai réussi et ça marche.
Je vous remerci tous pour votre aide et je cloture ma demande.
René