Renvoie de données dans Excel

cyberMJC -  
Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   -
Dans EXCEL : en feuille 1, J'ai une liste de noms en cellule B3 B4 B5 et une liste de prénoms en cellule C3 C4 C5 ; en cellule D3 j'ai une activité à choisir, exemple: le foot… Toujours, dans la feuille 1 la personne en cellule B5 et C5 fait un choix d'activité en cellule D5. En feuille 2 qui est la feuille qui recense l'activité Foot, je veux renvoyer la personne qui se trouve en cellule B5 de la feuille 1 à la cellule B3, si la personne qui se trouve en cellule B3 de la feuille 1 a fait un autre choix ????

1 réponse

  1. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529
     
    Hello CyberMJC,

    La petite macro ci-dessous est à mettre dans le code de chacune de tes feuilles "sport".

    J'ai compris que :
    - tu as une feuille globale qui contient des adhérents (nom, prénom) avec pour chacun le choix d'une discipline
    - tu as pour chacune de ces disciplines une feuille qui porte le nom de cette discipline
    - dans toutes tes feuilles, les listes commencent en ligne 3, à cause des entêtes en lignes 1 et 2

    Il est nécessaire que les disciplines qui figurent après chaque adhérent dans la feuille globale aient les mêmes noms que les feuilles par discipline.

    J'ai appelé "Liste" la feuille globale : adapte le nom dans la macro.

    Chaque fois qu'on active une feuille "sport", sa liste est recalculée automatiquement.

    Private Sub Worksheet_Activate()
        
        Application.ScreenUpdating = False
    
        Dim I       As Integer   ' pour boucle For...
        Dim Ind     As Integer   ' pour remplissage feuille sport
        Dim NbLis   As Integer   ' nb de lignes liste globale
        Dim NbMe    As Integer   ' nb lignes feuille sport
        Dim FF      As Worksheet ' alias feuille liste globale
    
        Set FF = Sheets("Liste") ' adapter le nom de la feuille
        NbLis = FF.Cells(3, 2).CurrentRegion.Rows.Count
        NbMe = Me.Cells(3, 2).End(xlDown).Row
        
        ' effacement de la liste du sport de la feuille
        Me.Range(Cells(3, 2), Cells(NbMe, 3)).ClearContents
        Ind = 2
        
        ' reconstruction de la liste du sport de la feuille
        For I = 3 To NbLis
            If UCase(FF.Cells(I, 4).Value) = UCase(Me.Name) Then
                Ind = Ind + 1
                Me.Cells(Ind, 2).Value = FF.Cells(I, 2).Value
                Me.Cells(Ind, 3).Value = FF.Cells(I, 3).Value
            End If
        Next
        
        Application.ScreenUpdating = True
    
    End Sub
    0
    1. cyber centre
       
      Merci pour cette macro, je vais tenter de la mettre en oeuvre. Je me demendais s'il était possible de renvoyer les données à partir d'une condition comme par exemple : =SI(..........) ? Dès que j'aurai mis en place la macro je vous donne des nouvelles de son fonctionnement. Si jamais je n'y arrive pas est il possible d'envoyer mon fichier excel pour me le faire ?

      Encore merci pour ce coup de main, bonne journée
      0
      1. Armojax Messages postés 1863 Date d'inscription   Statut Membre Dernière intervention   1 529 > cyber centre
         
        Oui, bien sûr, en cas de PB tu peux...
        Mon mail c'est mon pseudo en minuscules, et j'habite chez free.fr.

        Armojax.
        0