Extraire plusieurs lignes

Bonjour,

J'ai une série de données dans laquelle je souhaite extraire des lignes entières mais le critère de sélection est compliqué pour moi et je bloque.

Mes données se présentent sous cette forme:

Colonne A Colonne B Colonne C
Patient 1 N° prélèvement 1 Date prélèvement 1
Patient 1 N° prélèvement 2 Date prélèvement 2
Patient 1 N° prélèvement 3 Date prélèvement 3
Patient 1 N° prélèvement 4 Date prélèvement 4
Patient 2 N° prélèvement 1 Date prélèvement 1
Patient 2 N° prélèvement 2 Date prélèvement 2
Patient 3 N° prélèvement 1 Date prélèvement 1
Patient 3 N° prélèvement 2 Date prélèvement 2
Patient 3 N° prélèvement 3 Date prélèvement 3
Patient 3 N° prélèvement 4 Date prélèvement 4
Patient 3 N° prélèvement 5 Date prélèvement 3

Je souhaite retenir dans une nouvelle feuille les lignes entières de tous les derniers prélèvements pour chaque patient, soit n'avoir que le prélèvement 4 pour le patient 1, le prélèvement 2 pour le patient 2 et le prélèvement 5 pour le patient 3, etc.
On peut soit s'aider de la colonne B en retenant le chiffre le plus grand? soit de la colonne C en retenant la date la plus récente? mais est-ce qu'une formule existe pour cela?

Je vous remercie pour votre aide

Elodie

4 réponses

  1. Si tu joins un fichier Excel avec quelques données fictives
    (mais semblables aux données réelles), alors j'essayerai
    de t'aider pour ta seconde étape.

    --------------------------------------

    VBA est l'abréviation de Visual Basic for Application ; c'est un
    langage de programmation, qui est compris par Excel.

    Quand j'écris « code VBA », c'est synonyme de « programme
    en VBA » ou « programme informatique en VBA ».

    Un programme est une suite d'instructions pour réaliser le travail
    voulu ; enregistrer ou écrire une macro VBA fait qu'on obtient
    un code VBA.

    --------------------------------------

    Indications à suivre pour lire le code VBA d'un fichier Excel,
    par exemple le code VBA de mon fichier "Patients".

    Ouvre le 1er fichier "Patients" que j'avais joint ;
    Alt F11 => ça ouvre une fenêtre pour Microsoft Visual Basic
    (cela sans fermer ta fenêtre Excel).

    Ne le fais pas maintenant, mais sache qu'il te suffira de refaire
    Alt F11 pour retourner sur ta feuille Excel.

    À gauche, tu peux voir la ligne « Modules », et juste dessous,
    il y a « Module1 » ; il pourrait y avoir d'autres modules, mais
    pour ce projet VBA, un seul module suffit ; ce seul module est
    déjà ouvert, c'est pourquoi tu peux en voir le code dans la
    fenêtre de droite.

    Si ce module était fermé, il faudrait faire un double clic sur
    la ligne « Module1 » (à gauche) pour l'ouvrir et le visualiser
    dans la fenêtre de droite.

    Autre possibilité pour ouvrir Module1 : à gauche, sélectionner
    la ligne « Module1 », puis F7 (ou Entrée).

    --------------------------------------

    Si tu as Excel 2003 (ou une version antérieure), ton fichier réel
    est "Patients.xls" (qui peut éventuellement contenir des macros,
    donc du code VBA).

    Indiques-moi quelle est ta version d'Excel (2003, 2007, ou autre).
    Si tu as Office 2016 tu as donc Excel 2016.

    --------------------------------------

    Si tu as Excel 2007 (ou une version ultérieure) :

    Tu peux ouvrir un ancien fichier .xls ; mais attention :

    Ton fichier réel est probablement "Patients.xlsx", donc on ne peut
    pas y mettre de macros ; il faut d'abord le convertir en un fichier
    "Patients.xlsm" !

    Ouvre ton fichier réel ; F12 => Fenêtre « Enregistrer sous » ;
    laisse le même « Nom de fichier : » Patients, et juste dessous,
    pour « Type : », choisis « Classeur Excel (prenant en charge
    les macros) » ; clic sur bouton « Enregistrer » : c'est ce qui
    crée "Patients.xlsm" (où tu pourras mettre du code VBA) ;
    "Patients.xlsx" existe toujours, et tu pourras le supprimer
    après avoir vérifié (par précaution) que la conversion est
    réussie : tu peux ouvrir "Patients.xlsm" (et tout y est).

    --------------------------------------

    Indications à suivre pour copier un code VBA dans ton fichier
    de données réel "Patients.xlsm".

    Le but est d'y créer « Module1 », puis d'y placer mon code VBA
    par un simple copier / coller.

    Ouvre ton fichier réel ; Alt F11 => fenêtre Visual Basic ;
    Alt i m => insertion d'un nouveau module => Module1 ;
    comme ce module vient juste d'être créé, il est vide ;
    c'est là que tu devras coller mon code VBA.

    Pour faire la copie de ce code, tu peux partir de celui que tu as
    vu dans mon fichier "Patients", mais pour t'éviter d'ouvrir deux
    fichiers en même temps, je vais te simplifier la tâche en notant
    ci-dessous ce code VBA :

    
    Option Explicit
    
    
    Sub Essai()
      Worksheets(1).Select: Application.ScreenUpdating = False
      Dim dlig As Long, lig1 As Long, lig2 As Long: lig1 = 2: lig2 = 2
      With Worksheets(2)
        dlig = .Range("A" & Rows.Count).End(xlUp).Row
        If dlig > 1 Then .Range("A2:C" & dlig).ClearContents
        dlig = Range("A" & Rows.Count).End(xlUp).Row
        Do
          If Cells(lig1 + 1, 1) <> Cells(lig1, 1) Then
            Range(Cells(lig1, 1), Cells(lig1, 3)).Copy .Cells(lig2, 1)
            lig2 = lig2 + 1
          End If
          lig1 = lig1 + 1
        Loop Until lig1 = dlig + 1
      End With
      Worksheets(2).Select
    End Sub
    
    

    Sélectionne donc tout mon code VBA ci-dessus pour en faire
    un copier / coller dans le Module1 vierge de ton fichier réel.

    C'est fait : ton fichier Excel contient maintenant le code VBA
    adéquat.

    Alt F11 => retour à ta feuille Excel ; mais attention : il reste
    une dernière étape par rapport à mon fichier : mettre en place
    le raccourci clavier Ctrl e qui lance la macro Essai().

    Cette dernière étape est facultative, mais très pratique.

    --------------------------------------

    Alt F8 => fenêtre « Macro » ; cette fenêtre liste toutes les macros,
    mais ici il n'y en a qu'une seule : « Essai ».

    Sélectionne la ligne « Essai » ; ensuite :

    a) Ne le fais pas, mais tu pourrais cliquer à droite sur le bouton
    « Exécuter » pour lancer la macro « Essai ».

    b) Clique à droite sur le dernier bouton du bas « Options... »
    => fenêtre « Options de macro ».

    c) Ton curseur de texte est sur une petite case vide, à droite
    du texte « Ctrl+ » ; tape la lettre e (en minuscule) et valide :
    clic sur le bouton « OK » ; retour à la fenêtre précédente ;
    clic sur croix blanche sur fond rouge (coin haut droit) pour
    fermer cette fenêtre ; c'est fait => Ctrl e lance la macro.

    --------------------------------------

    Bien sûr, n'oublie pas d'enregistrer ton classeur Excel pour
    conserver toutes les modifications que tu viens d'apporter
    (cela enregistre aussi le code VBA de Module1, qui fait
    partie intégrante de ton fichier "Patients.xlsm").

    --------------------------------------

    Remarque : la description de toutes les étapes à suivre est
    très longue, mais ça va très vite quand on y est habitué.

    C'est bien plus pratique et plus simple de copier mon code VBA
    dans ton fichier réel que de copier les données de ton fichier
    réel dans mon fichier !

    J'espère que tu arriveras à tout faire ! Si tu bloques sur quelque
    chose, indiques-moi où tu coinces ; merci de m'avertir si tu as
    réussi à tout faire (copie du code VBA dans ton propre fichier
    réel et mise en place du raccourci clavier).
     
    0