Macro en sortie de tri

Résolu
Bonjour,

Bonjour,

Sur la feuil1, dans la colonne B, j'ai une seir de noms, titi, toto, tutu, tete. je fais un filtre automatique sur ces noms.
Est il possible que en sélectionnant un nom dans la liste, qu'une macro puisse me copier la ligne correspondant au nom choisi dans la feuil2 .
merci de votre aide

cdlt
Configuration: Windows XP
Internet Explorer 6.0

14 réponses

  1. Contributeur
    Bonsoir,

    A coller dans le code vba de ta feuille 1:
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        ActiveCell.EntireRow.Copy
        ActiveSheet.Paste (Worksheets("Feuil2").Range("A65536").End(xlUp).Offset(1, 0))
        Application.CutCopyMode = False
        Cancel = True
    End Sub

    Un double-clic sur une cellule de ta ligne la copie sous la dernière cellule occupée de la colonne A feuille 2.

    eric
    0
    1. bonjour
      merci eric pour ta reponse rapide et efficace. ca fonctionne bien avec un double clic mais ne peut on pas se passer d'un double clic ?
      est ce que le fait de selectionner un nom ne pourrait pas lancer la copie de la ligne dans la deuxième feuille.
      En fait est ce le fait de cliquer sur une cellule une fois pourrait entrainer le lancement automatique d'une macro ?

      merci de ton aide
      cdlt
      pascal
      0
  2. Contributeur
    Bonjour,

    Si...
    personnellement je préfère une action plus volontaire comme le double-clic (surtout qu'il peut-être défini sur le bouton central de la souris) pour éviter les erreurs de manip mais tu peux utiliser l'évènement 'selectionchange'
    J'ai ajouté une petite tempo avant le CutCopyMode = False pour visualiser que ton clic a été pris en compte (1/10e de sec, tu mets la valeur que tu veux ou tu mets en commentaires si tu n'en veux pas).
    Donc ça devient:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        ActiveCell.EntireRow.Copy
        ActiveSheet.Paste (Worksheets("Feuil2").Range("A65536").End(xlUp).Offset(1, 0))
        t = Timer
        Do While Timer < t + 0.1
            DoEvents
        Loop
        Application.CutCopyMode = False
    End Sub

    et le Cancel = True devient inutile
    eric
    0
    1. bonjour eric

      je viens de l'essayer et voilà le résultat
      lorsque j'ouvre ma liste de noms et que j'en sélectionne 1, RIEN NE SE PASSE. je suis obligé que recliquer une fois sur la cellule pour que l'action soit prise en compte. n'est il pas possible que l'action se produise dès la selection du nom?

      Sinon est ce que la copie de la ligne pourrait se faire toujours au meme endroit sur la feuil2 (toujours sur la ligne 2 par exemple) ?

      j'espère que je t'ennuie pas trop avec mes questions mais je ne suis pas balaise dans ce domaine
      merci d'avance
      pascal
      0
      1. Contributeur
        Si tu cliques sur la cellule déjà sélectionnée il est normal que rien ne se passe puisque l'évenement est SELECTION CHANGE.
        Bien sûr que c'est possible d'inscrire tjs sur la même ligne de la feuille2 (c'est même plus simple) mais il faudra que tu m'expliques l'interet car là il m'échappe. Si c'est juste pour lire les données et les perdre au clic suivant... (???)
        Et n'annonces pas tes besoins au fur et à mesure, dit une bonne fois pour toute quel est ton besoin, ton projet, ton but, le pourquoi et le comment.
        eric
        0
        1. OK Voilà ce que j’aimerai obtenir :
          J’ai un gros tableau, une base de données dans laquelle il y a des noms (colonne A) et des habilitations avec des dates de validité (colonne B,C,D,E etc …).
          A partir de cette base il faudrait qu’en sélectionnant un nom, je puisse créer un tableau en feuil2 dans lequel j’aurais en A3, A4, A5, A6, les différents items d’habilitation en B2 le nom sélectionné et en B3, B4, B5, B6 les différentes dates de validité correspondant à chaque ITEM pour la personne concernée. tout cela pour pouvoir sortir sur imprimante ce tableau qui sera donné à la personne concernée.
          Chaque fois qu’une modification interviendra dans la base de donnée concernant une personne en particulier il faudra pouvoir éditer un tableau récapitulatif de cette personne avec ses habilitations et ses validités.
          C’est pourquoi je voulais au max automatiser cette procédure et qu’en sélectionnant le nom dans mon tri je puisse automatiquement avoir en feuil2 le tableau de la personne à imprimer.
          Voilà si tu peux m’aider ….
          Merci
          cdlt
          0
          1. Contributeur
            si ce que tu dois mettre sur feuil2 en A3:A6 et B3:B6 est présent dans la feuil1, décrit qui est où et chaque donnée pourra être inscrite a sa place définitive
            En résumé sii tu cliques sur la ligne 2 feuil1 en quelle colonne se trouve feuil2!A3, feuil2!A4,... feuil2!B3, feuil2!B4 etc ?
            eric
            0
            1. puis je envoyer un exemple de fichier ici et comment faire ou dois je te l'envoyer en privé ?
              0
              1. Contributeur
                Tu peux déposer ton fichier sur www.cijoint.fr et coller le lien ici
                0
                1. ok
                  voici le lien http://www.cijoint.fr/cij114832088832844.xls

                  à partir du "registre" si je sélectionne un nom, automatiquement le tableau dans "fiche perso" va etre renseigné en conséquence et l'on pourra (j'ai pris l'exemple d'avoir sélectionné ROUDAUT par la fonction "filtre automatique")
                  imprimer ce tableau pour la personne concernée

                  merci encore

                  pascal
                  0
                  1. Contributeur
                    Voici ton fichier,

                    En fait, je m'en doutais, on s'est éloigné de la demande du début...
                    Je t'ai ajouté une case à cocher (non imprimable) pour activer/désactiver la copie que la macro ne s'active pas dès que tu saisis une donnée sur la feuille.
                    Et j'ai supposé et non contrôlé que les champs étaient dans le même ordre sur les 2 feuilles.
                    http://www.cijoint.fr/cij3240924632854.xls
                    Teste et si ça te parait ok n'oublie pas de mettre en résolu stp. merci

                    Bonne soirée
                    eric
                    0
                    1. bonjour
                      merci pour ton aide ca fonctionne correctement et je ferais avec.
                      Pourtant ma requête d'origine était la possibilité dès la sélection d'un nom dans la liste déroulante en B2, de provoquer automatiquement la copie des données.
                      Là je le fais en trois temps :
                      1) clic en B2
                      2) clic sur le nom choisi
                      3) validation de la cellule

                      En fait c'est le 3) que j'espérais éviter

                      cdlt
                      et bonne journée Eric
                      pascal
                      0
                      1. Contributeur
                        Bonjour,

                        Tu avais dit "j'ai une seir de noms, titi, toto, tutu, tete. je fais un filtre automatique sur ces noms.
                        Est il possible que en sélectionnant un nom dans la liste
                        "
                        Tu n'as pas dit "dans une liste déroulante" en feuille 2...
                        Je ne vois pas pourquoi tu valides la cellule, l'évènement étant 'sélection change' il n'y a aucune raison que ça réagisse autrement chez toi. Si tu sélectionnes une nouvelle cellule de la ligne qui t'intereresse, les données se copient.

                        eriic
                        0
                        1. Contributeur
                          PS:
                          je viens de comprendre que c'était à la liste déroulante de ton filtre automatique que tu faisais allusion..
                          Puisque tu es économe en clic tu crois que tu seras gagnant ?
                          Une fois un nom de sélectionné pour passer au suivant il faudra cliquer sur la liste, cliquer pour sélectionner 'tous', cliquer sur la liste et cliquer sur le nom suivant..
                          0
                        2. @eriiicc'était surtout dans le cas ou la liste était très longue, c'est plus rapide via la liste déroulante . ce n'est pas grave je fais avec et c'est déja très bien.
                          J'ai un peu modifié mon fichier et me suis exposé à deux autres soucis.
                          Le sujet étant différent je propose de clore ce sujet et d'en ouvrir un autre dans lequel je joins mon fichier
                          titre du message : ajout et suppression de noms dans tableaux

                          merci encore pour ton aide et ton savoir
                          cdlt
                          0
                      2. Contributeur
                        ok, n'oublie pas de mettre en résolu ici stp. Merci
                        eric
                        0
                        1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
                          ActiveCell.EntireRow.Copy
                          ActiveSheet.Paste (Worksheets("Feuil2").Range("A65536").End(xlUp).Offset(1, 0))
                          t = Timer
                          Do While Timer < t + 0.1
                          DoEvents
                          Loop
                          Application.CutCopyMode = False
                          End Sub

                          je remercie vivement eric pour son aide et sa patience
                          cdlt
                          0