Comment extraire des données d'une feuille pour une autre

Ndenin -  
Gyrus Messages postés 3360 Statut Membre -
Bonjour,

J'ai des feuilles excels avec la liste des candidats au Bac blanc, les notes par épreuves, les totaux, les moyennes, les Rangs et les Décisions du jury (Admis/Refusé) et enfin les Mentions (Bien,Assez bien, Passable...).
Je voudrais pouvoir extraire uniquement les "Admis" avec toutes les informations les concernant et les envoyer sur une autre feuille de façon automatique.
Je pense me faire comprendre.
Je vous remercie pour votre grande sollicitude.

4 réponses

  1. Gyrus Messages postés 3360 Statut Membre 526
     
    Bonjour,

    Tu devrais pouvoir faire cela avec un filtre avancé.

    Si tu souhaites que t'aidions d'avantage, il faut que tu joignes un fichier à la demande. Ce fichier doit contenir les données utiles (non confidentielles) et doit être accompagné des explications nécessaires.

    Pour joindre le fichier, tu peux utiliser https://www.cjoint.com/
    Ensuite, reviens coller ici le lien donné par le site.

    A+
    0
  2. NicolasVBA Messages postés 16 Statut Membre 3
     
    Bonjour,

    Malgré le peu d'explication, je me suis penché sur ton problème, et le code suivant devrait fonctionner en toute circonstance...

    C'est pas des plus optimal, mais ça fonctionne, alors... :)

    Sub test()
    
    'Admettons que les données soient stockées sur la feuil1 et qu'on les colles sur Feuil2
    'Admettons également que la première ligne contiennent les titres des colonnes
    
    Dim ligne As Integer
    ligne = 2
    
    Sheets("Feuil1").Select
    
    Dim derlig As Integer
    derlig = Range("A" & Rows.Count).End(xlUp).Row
    
    Dim dercol As Integer
    dercol = Cells(1, Columns.Count).End(xlToLeft).Column
    
    Sheets("Feuil1").Range("1:1").Copy
    Sheets("Feuil2").Select
    Range("A1").Select
    ActiveSheet.Paste
    
    Sheets("Feuil1").Select
    
    For i = 2 To derlig
        For j = 1 To dercol
    
            If Cells(i, j).Value = "Admis" Then
    ' ou : If Cells(i, j).Value Like "*Admis*" Then
    
                Cells(i, j).EntireRow.Copy
                Sheets("Feuil2").Select
                Cells(ligne, 1).Select
                ActiveSheet.Paste
                ligne = ligne + 1
                Sheets("Feuil1").Select
    
            End If
        Next
    Next
    
    End Sub
    


    Bonne journée !
    Nicolas.

    La cuillère n'existe pas !
    0
    1. Ndenin
       
      La réponse fonctionne très bien du point de vue du transfert des données.
      Mais ce ne sont pas tous les données qui doivent être déplacées; c'est seulement les "Admis" qui qui doivent se retrouver sur la feuil2.
      Merci de me comprendre; je suis un grand débutant.
      0
    2. NicolasVBA
       
      Je ne vois pas trop l'intérêt, mais il te suffit de retirer ce bout de code : "EntireRow."
      0
    3. Ndenin
       
      Bonjour,
      bien que j'ai retiré ce bout de code: "EntireRow",la macro continue de prendre toute la feuil1 et de la recopier sur la feuil2.
      L'intérêt pour nous est que après un examen (BEPC, BAC,etc...) seule la liste des admis est affichée pour consultation par les intéressés.
      Merci beaucoup pour votre sollicitude.
      0
    4. NicolasVBA
       
      Bizarre. Ça fonctionnait chez moi...
      Je pense que ça vient du fichier Excel ou de la version.
      Normalement, cette macro permet bien de copier uniquement les lignes pour lesquels "Admis" existe quelque part sur cette même ligne.
      J'ai fais un test chez moi, ça fonctionne.
      0
    5. Ndenin
       
      Bonjour,
      Est-ce qu'il ne manque pas une ligne: Else?
      If.....Then......Else
      0
  3. Maurice
     
    Bonjour
    Avec un modele de ton fichier ca serait plus facile a comprendre

    surtout pour faire une recape de plusieur onglet

    A+
    Maurice
    0
  4. NicolasVBA Messages postés 16 Statut Membre 3
     
    Merci Gyrus pour l'astuce !

    Voici le fichier de test que j'avais fait pour tester ma macro :
    https://www.cjoint.com/c/EHqlOql0P1t

    Le code n'est pas optimisé, voir même un peu lourd, mais pour les débutant je préfère des macros simples, quitte à être un peu lente.

    Bonne journée !
    0