EXCEL : Macro - recupération de données

Résolu
en2mots Messages postés 170 Statut Membre -  
en2mots Messages postés 170 Statut Membre -
Bonjour,

Je voudrais avoir une macro commande ou autre chose (si vous savez ce qui peut ou non se faire) pour un tableau de gestion de formations.

Voici comment est fait le classeur :
- une feuille principale avec les intitulé de formation par ordre alphabetique, ainsi que les nom des personnes y participant et les dates de session.
3 colonnes : intitulé, nom agent et dates

il y a plus d'une centaine de formations et plusieurs agents a chaque fois.

Je dois detacher pour chaque formation :

les infos de la colonne nom et celle de la colonne dates.

Jusqu'a présent, je selectionnais et faisai des copier/coller dans une feuille ou j'avais pré-entré une entête... mais au bout de 10 stages... dur ! dur !

savez vous comment je peux, sur la deuxième feuille, entrer une macro ou formule pour que en un clic ou deux (bouton macro ou saisi dans une cellule) les infos necessaires soient exportées directement sur la deuxième feuille ???? voir faire d'une pierre deux coups : en un clic que tout mes stages soient exportés les uns derrière les autres avec la même en-tête (même sur une même feuille).

Je remercie d'avance celui ou celle qui pourra me donner une solution..... ;-)

6 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour à tous

    Ci joint proposition: déclenchement au changement de référence
    Le codes se trouvent dans le module feuille extraction (clic droit sur nom de l'onglet "extraction"; visualiser le code)
    https://www.cjoint.com/?3DApQQvvAf8

    Private Sub Worksheet_Activate()
    Dim lig As Integer
         Sheets("parametre").Range("refs").ClearContents
         With Sheets("stages")
              ' liste des références uniques
              .Range("B1").AutoFilter
              .Range("A1:J1000").AdvancedFilter Action:=xlFilterCopy, Copytorange:=Sheets("parametre").Range("B1"), Unique:=True
         End With
         
    End Sub
    
    Private Sub Worksheet_Change(ByVal Target As Range)
         If Target.Address <> "$A$1" Then Exit Sub
              Me.Range("A3:J200").Clear
              If Target <> "" Then
                   With Sheets("stages")
                        .Range("A1").AutoFilter Field:=2, Criteria1:=Range("choix")
                        With .Range("A1:J1000")
                             .SpecialCells(xlCellTypeVisible).Copy Me.Range("A2")
                             .AutoFilter Field:=2
                        End With
                   End With
            
              End If
    End Sub
    2