Macro Copier coller valeur format tri sur 2 lignes av condition [Résolu/Fermé]

Signaler
Messages postés
35
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
3 février 2015
-
Messages postés
35
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
3 février 2015
-
Bonjour à toute la communauté
Je m'appelle Christiane, retraité, handicapée, 66 ans et n'y connaissant rien du tout en VBA
Je passe 5 à 6 heures par jour à faire des copier coller et tri de données sur Excel 2002.
Je cherche une macro pouvant me faire bénéficier d'un peu de temps libre ce qui à mon age ne serait pas du luxe. Tous vos commentaires sur le sujet me font tourner la tête (cerveau vieillissant, surement) et je ne trouve rien qui corresponde à mes attentes.
Tous les jours que dieu fait, je dois copier coller et trier des valeurs de 120 feuilles à ce jour.
Ces copier coller se font sur une sélection de quelques cellules (8 à 12) et sur 2 lignes.
Je dois exécuter une macro que j'ai tout de même faite avec l'enregistreur de macro, mais celle ci est limité sur la sélection que je lui est faite. J'ai besoin que cette macro s'exécute sur les 2 lignes que je traite aujourd'hui sans toucher aux 2 lignes précédentes (qu'elles a déjà traitée) et sans toucher aux 2 lignes suivantes(qu'elle traitera le lendemain; et ainsi de suite chaque jour qui passe (rassuré vous, certain jour je ne fais rien, repos).
Je ne vois rien dans cette fenêtre pour ajouter un fichier Word qui expliquerait en détail ma demande, peut-être en ajoutant une image, je vais essayé. non cela ne fonctionne pas;
Merci à la communauté de votre aide bienveillante.
Je ne suis pas une habituée des forum, ainsi je tâtonne un peu, mais bon, je vais bien y arriver ?
Comment vous poster un fichier joint, merci Christiane

Hourra j'ai trouvé, voici le lien : https://www.cjoint.com/c/EAvegGBN5Pb

23 réponses

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 204
Bonjour,

Si tu pouvais nous mettre ton classeur excel, sans éléments personnels, avec la macro réalisée, se serait plus facile de t'aider.
Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ et tu mets ici le lien obtenu.
Messages postés
35
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
3 février 2015
3
Bonjour, gbinforme
merci de t'intéresser à ma demande
Sur mon 1er post, j'ai déjà mis un lien concernant mon classeur
j'ai trouvé ce lien sur cjoint.com, ne serait il pas présent dans ce 1er post ?
Christiane
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
493
Bonjour Christiane3866,

Tu as bien mis un lien vers le fichier Word qui illustre le problème mais tu n'as pas joint le fichier Excel qui permettra de faire des tests.

A+
Messages postés
35
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
3 février 2015
3
Bonjour, Gyrus

merci d'intervenir sur ma demande.
Vous (ou tu) voudrais mon classeur excel ? Ok je vais essayer de me débrouiller pour te le mettre en fichier joint. Je dis cela car je viens de découvrir qu'il fallait que je click sur " voir mes discussions suivies" pour apercevoir ton message.
Comme quoi, je découvre les manipulations sur les forums.
Mais bon, c'est une expérience comme une autre

A tout de suite, pour ce fameux classseur
Christiane
Messages postés
35
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
3 février 2015
3
Re christiane à Gyrus,
Oups, le lien ne veut pas se copier sur cette fenêtre.
Pourquoi, je ne sais pas. Je fais différentes manipulations, mais pas moyen.

C'est fâcheux.
Sinon le lien est https://www.cjoint.com/c/EAvr4kOtIDr
J'ai écris le lien avec le clavier
mais j'arrive pas à le coller, je viens de le tester et cela fonctionne tout de même, vous pouvez donc ouvrir le fichier, Ouf c'est rassurant
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
493
La réalisation de cette macro ne me parait pas poser de problème particulier.

Peux-tu me dire pourquoi la ligne de données "Duchesse" de la feuille "Basedonnées" comprend 12 données alors que dans la feuille "Duchesse" on n'en retrouve que 10 ?

A+
bonjour
ta macro copy sur lui meme
donc ca sert a quoi ?

A+
Maurice
Messages postés
35
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
3 février 2015
3
Bonjour ou bonsoir à la communauté
Bonsoir à Gyrus et Maurice

Réponse aux 2 intervenants

Effectivement la base de données comprend 12 cellules, il y a erreur de ma part,
j'aurais du enlever 2 cellules en feuille "basedonnées", je n'avais pas fait attention. bêtise de ma part impardonnable.
Mon classeur n'est qu'un exemple, Je l'ai fais pour le forum et ne l'ayant pas testé, je ne m'en suis pas aperçu. Je m'aperçois de plus que les chiffres recopier ne correspondent pas. On aurait dû trouver en feuille "Duchesse" les valeurs respectives suivantes une fois triées en ordre décroissant, soit : 22 18 40 5 20 12 4 7 24 54, je suis confondue d'avoir fais une telle erreur, il est vrai que j'ai ajouté cette feuille au dernier moment car je me suis aperçu que certaines feuilles de mon gros classeur comportaient ce type d'arguments.
Cela est à corriger sur le classeur que vous avez, sinon je vous envois un nouveau lien avec les rectifications.
Pour Maurice, le fait de copier coller valeur et (ou) format sur la même plage, supprime les formules de mes plages sélectionnées (Cake à Duchesse) pour n'y faire figurer que les valeurs, ainsi je peux les trier sur les valeurs et non pas sur les formules.

Je suis disponible pour d'autres remarques, en espérant que je n'ai plus d'erreurs dans le classeur;

Christiane
Bonsoir
voila un debut de ta macro si tu veux la modifier

Sub Test()
Application.ScreenUpdating = False
'Sheets("Cake").Select
   Sheets(Feuil2.Name).Select
      Range("C22:J23").Copy
      Range("C22").PasteSpecial xlPasteValues
Range("A23").Select
   Sheets(Feuil3.Name).Select
      Range("C22:J23").Copy
      Range("C22").PasteSpecial xlPasteValues
'
'
Application.CutCopyMode = False
End Sub


bon je vais faire dodo
A+
Maurice
Messages postés
35
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
3 février 2015
3
Christiane à Maurice

Je te remercie, je vais tester ce bout de macro

Application.ScreenUpdating = False, j'ai vaguement lu que cette expression servait à rendre plus rapide la macro et (ou) à éviter l'instabilité de l'écran (scintillement).
Est-ce vraiment utile dans mon cas, la macro ne va s'appliquer que sur 2 lignes, certes sur plusieurs feuilles, mais rein de bien méchant je pense ?
Bonne nuit
A +
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
493
Bonsoir,

Voici une proposition avec une procédure évènementielle qui se lance automatiquement lorsque tu saisis une date dans la colonne A de la feuille "Cake".
Les opérations que tu as citées sont réalisées par cette procédure.
A tester ....

https://www.cjoint.com/c/EAvw2W8GKG9

A+
Messages postés
35
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
3 février 2015
3
Bonsoir Gyrus,

Merci, je vais saisir ton lien et le tester
Je viens de tester le code optimisé de Maurice et à priori cela fonctionne, mais c'est juste un copier coller(valeur) sur lui même.

Je pense que plus tard, il élaborera ce bout de code, car il manque le tri et le plus important, que cette macro s'applique sur mes 2 lignes du jour, puis sur les 2 lignes du lendemain (qui deviendront à leur tour les 2 lignes du jour) sans toucher aux 2 lignes de la veille et encore moins aux 2 lignes suivantes qui contiennent des formules, sinon je les perdrais.

Comment dois-je faire pour poster le code que je viens de tester, et le mettre à l'intention de Maurice pour lui montrer la finalité du code ?
Je fais un copier coller dans l'onglet code de cette fenêtre ?

Christiane
Messages postés
35
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
3 février 2015
3
Christiane à Gyrus,

Je viens d'ouvrir ton lien qui représente mon classeur, mais je n'ai rien trouvé de plus que ce qu'il y avait dedans.

Quelles modifications as tu apporté à cette feuille "Cake" ?

Je viens de trouver, je devais cliquer droit sur l'onglet de la feuille et visualiser le code, Woua dur dur j'apprend vite, obligé si on veut suivre, cela me fait du bien de chercher un peu, mais c'est pas evident les manips

A + Christiane,
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
493
As-tu testé le code en saisissant une date en A24 de la feuille "Cake" ?

A+
Messages postés
35
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
3 février 2015
3
Christiane à Gyrus,

Non pas encore, j'ai recopier ton code en fichier Word, au cas ou je l'effacerais pas hasard.
En ce moment je suis en train de le lire pour essayer de comprendre chaque expression, mais il est clair qu'il faudra que je cherche quelque part, afin d'insérer dans ton code une description de chaque expression. J'ai envie de comprendre ce fichu code dont je rêve tant d'avoir. Je suis têtue, je prendrais le temps qu'il faut pour le comprendre.
Pour l'instant cela reste indéchiffrable.
Je vais m'amuser, bon je vais essayé de tester ton code que tu as pris soin de m'écrire, A+ Christiane
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
493
Avant de chercher à comprendre le code, il serait bien que fasses l'essai pour t'assurer que cela correspond à ta demande.

Si tel est le cas, je pourrais ensuite apporter des commentaires sur les points qui te paraitront brumeux.

Bon sur ce, je vais me libérer les neurones et faire un gros dodo !
A
Messages postés
35
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
3 février 2015
3
Christiane à Gyrus

Pendant que tu étais parti reposer tes neurones, j'ai testé ton code.
Waouuu, C'est ce qu'on appelle un "pu...n" de code.
Je l'ai testé en long, en large, en travers, je l'ai secoué dans tous les sens, il n'a pas bronché d'un poil.
Au début que je l'ai testé, je me suis aperçu qu'il appliquait les couleurs en même temps. J'ai dis "zut", car je ne connais le résultat des points attribué à chaque n° qu'à la fin des (copier coller et tri) d'où j'en détermine 3 numéros à qui j'attribue une couleur.
Comme tu m'avais prévenu que tu avais basé le lancement de ton code sur la date que j'inscrivais en feuille "Cake", j'ai recommencé le test en supprimant les chiffres que j'inscris manuellement dans mes 3 cases B7, C7, D7 des couleurs, et là cool ton code s'est déroulé sans appliquer les couleurs, et avec un peu de réflexion (il me reste quelques neurones) j'ai supprimé la date en question de la feuille "Cake" et je l'ai inscrite à nouveau, Bingo il me refait la même chose en appliquant les couleurs.
Je m'aperçois que ton code en vraiment génial car je peux recommencer les lignes d'avant au cas ou je me serais trompé et ce simplement en supprimant la date, puis en réécrivant ma base de données et en retapant la date concernée dans la feuille "Cake" absolument fantastique, je m'attendais pas à cela.
Franchement, ton boulot sur ma requête est au delà de mes espérances; tu as du bosser comme un fou furieux.
Et puis je me suis dis qu'il devait y avoir une erreur quelques part, on ne peut pas pondre un code parfait du 1er coup.
Et bien oui, j'ai trouvé l'erreur (que tu as du omettre par inadvertance), elle se trouve dans la feuille "lune" le tri en ordre croissant sur la 1ere ligne de la sélection C22:J22) ne se fait pas.

En conclusion, je ne dois jamais supprimer la feuille "Cake", pas de soucis.
Je vais de ce pas faire un somme et me remettre au boulot demain après midi.

Merci et à bientôt de te relire, je devrais ouvrir une bouteille de champagne pour ce site et des bravos répétés pour les personnes comme toi, qui ose donner un vrai coup de main à des personnes comme moi, vraiment un très grand Merci.
Tu n'imagines pas le bien que cela me fait de savoir que je ne vais plus passer des heures interminables à faire des copier coller tri et applications de couleurs.
L'émotion à été très forte et je suis restée ébahie devant le travail que fait ta macro.

Christiane
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
493
Bonjour,

Bien dormi ?

Je suis heureux que ma proposition te donne satisfaction et je suis sensible à tes remerciements.

J'ai modifié le code pour la prise en compte du tri en ordre croissant sur la 1ere ligne de la sélection C à J de la feuille "lune".

J'ai ajouté des commentaires dans le code pour t'en faciliter la compréhension.

Si tu dois transcrire ce code sur un autre classeur, note bien que j'ai utilisé des plages nommées "CouleurOrange", "CouleurJaune" et "CouleurRose" pour le traitement des couleurs. Il faudra donc que tu crées ces mêmes noms sur l'autre classeur.

Je n'ai pas traité la colonne B car je ne sais pas comment tu utilises cette indication.

Bon courage !

https://www.cjoint.com/c/EAwjFW7bF6t

A+
bonjour

Voila une macro qui travail sur toutes les onglets

http://cjoint.com/?3AwmxNPkdji

A+
Maurice
Messages postés
35
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
3 février 2015
3
Bonjour à Gyrus et Maurice
Je viens de me connecter au site et prend note de vos commentaires.
Je vais télécharger vos liens et regarder cela de près.

NB : j'ai testé le code sur une copie conforme du classeur et le code bloque sur la 11eme ligne du code en partant du bas :
If Cel.Value = Sheets("Basedonnées").Range("CouleurOrange") Then

Intéressant, non ?

Je suppose que c'est un problème de transposition d'un classeur à un autre même si celui-ci est identique

Christiane
Messages postés
35
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
3 février 2015
3 >
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016

Christiane à Gyrus

Bonjour néanmoins à la communauté et Maurice

J'ai effectué la transposition de ton code sur mon gros classeur qui finalement comporte 197 feuilles et dont chaque feuille comporte plus ou moins de données. Maintenant je comprend pourquoi je passe autant de temps à faire des copier coller, des tri et application de couleur.
Je teste ta macro au fur et à mesure que je l'intègre dans mon gros classeur. J'adapte quelques modifications sur certaines de mes feuilles car ta macro travaille sur une ligne bien précise de chaque feuille. Les modifications prennent du temps, mais j'y arrive avec un peu de patience.

Ton code fonctionne parfaitement même lorsque je dois l'adapter à certaines feuilles.
Je tombe actuellement sur des feuilles (25 actuellement) qui comportent quelques particularités concernant le tri.
Je m'explique sur une de ces feuilles.
Comme tu le sais, vu que tu as déjà eu mon classeur en "main", je travaille toujours sur 2 lignes et cela se répète chaque jour.

Aujourd'hui, je travaille sur la sélection du jour et je tri en ordre croissant sur la 1 ère ligne
Le lendemain, je vais trier en ordre croissant sur la 2 ème ligne
Le surlendemain je vais trier en ordre décroissant sur la 1 ère ligne
Le jour suivant je vais trier en ordre décroissant sur la 2 ème ligne
Le jour suivant je ne fais aucun tri, la sélection reste en l'état.

Je fais cela manuellement, j'ai dû insérer une colonne vierge pour y noter ma condition du jour, car moi même je m'y perdais.

Voici les annotations de conditions de tris.
C1 = tri croissant sur la 1ere ligne
C2 = tri croissant sur la 2eme ligne
D1 = tri décroissant sur la 1ere ligne
D2 = tri décroissant sur la 2eme ligne
R = rien, pas de tri

Question : Peut on intégrer cela dans ta macro existante ?

Autre petit souci, mais vraiment très petit :
Mes formules du style Si(Ax>0;basedonnées!$C$19;"") me renvoie la valeur "0".
Ce zéro me gène un peu dans certaines de mes feuilles.
Quelle serait la formule adéquate pour que la valeur renvoyée soit "rien" ou"vide" lorsque que la cellule source est vide ?

Question subsidiaire : Quel est l'intérêt d'écrire ton code dans une feuille, plutôt que dans un module normal en passant par Outil-Macro-Nouvelle macro ?
Ta macro ne fonctionne que sur cette feuille ?

De ce pas je vais continuer à transposer ta macro dans mon gros classeur et terminerai après avoir pris connaissance de ton complément de macro qui sera excellent je n'en doute pas.

Curieuse comme je suis, je me suis posée la question sur le nom "Gyrus".
Cela à t'il quelque chose à voir avec le cortex cérébrale, et plus précisément les plis du cerveau ?
Tu n'es évidement pas obligé de répondre, cela peut être d'ordre privé.

Je te dis A+ de te lire avec plaisir.
Christiane

Je te fais passer le lien pour avoir la nouvelle feuille sur le classeur, avec ton code toujours présent dans ce classeur.

https://www.cjoint.com/c/EAzsoi78C7X
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
493 >
Messages postés
35
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
3 février 2015

Bonjour,

Le lien renvoie sur un fichier tmp .... boulette ?

A+
Messages postés
35
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
3 février 2015
3 >
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016

Christiane à Gyrus

Je reposte un nouveau lien

https://www.cjoint.com/c/EAArw5YwOVd il fonctionne, je l'ai testé

Pour le code erreur, je ne sais plus exactement, il me disait (si mes souvenirs son bons) que la macro excédait 76Ko je crois. et me renvoyait à la fin de la macro Sub end juste avant la macro suivante des couleurs
Après réflexion, j'ai fini par supprimer des lignes de code
J'ai créer une nouvelle macro dans une autre feuille, donc un nouveau copier coller de ta première macro dans laquelle j'ai insérer les lignes de code supprimées de la macro trop longue et cela à fonctionné.
Du coup ta première macro fonctionne et la 2eme crée également. Ce petit souci est donc résolu.
Comme j'ai supprimé des lignes de code, je ne peux plus te dire exactement le code erreur puisque cette macro s'exécute à nouveau sans bug.

A+ Chritiane
Messages postés
35
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
3 février 2015
3 >
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016

Re Christiane

Il commence à être tard
Donc je dis OUPS, à force de mettre des procédures dans ta macro, il me dit que la macro est trop longue et du coup la macro ne veut plus s'exécuter.
Que dois faire ?

Christiane
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
493 >
Messages postés
35
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
3 février 2015

Quelle est le libellé exact de l'erreur renvoyée ? Code erreur ?

A+
Messages postés
35
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
3 février 2015
3
Christiane à Gyrus

La colonne B ne me sert à rien, je l'ai ajouté au cas ou vous voudriez vous en servir pour adapter une condition dans la macro