XL 2016 Transfert de données sous conditions

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

olivier.leconte

XLDnaute Nouveau
Bonjour a vous,

Je sollicite votre aide après plusieurs échecs, j'ai déjà regardé plusieurs aides sur le sujet mais aucune ne correspond a mon besoin. J'étais partis sur une fonction si et dynamique croisé mais échec. J'ai tenté les macro mais après plusieurs tutos je suis encore plus perdu.

Dans ma feuille base de données (anonymée) je rentre la colonne Nom, prénom, date de naissance, âge (formule), téléphone et date bilan et je mets un X dans les colonnes correspondant aux ateliers auxquelles les personne vont.

Mon objectif et que les Nom, prénom, date de naissance, âge, téléphone et date bilan soit automatiquement retransférés dans le feuilles correspondantes aux ateliers auxquels ils participent. Une ligne est susceptible d'être copier dans plusieurs autres feuilles. Cette base de données est enrichis régulièrement de nouvelles personnes.

Dans ces feuilles nous rajouterons manuellement le numéro du groupe, le mois du début de l'atelier, puis les dates des ateliers.

En vous remerciant pour l'aide ou les astuces que vous pourriez me fournir. ou un lien si la question a déjà été traité antérieurement.

Olivier
 

Pièces jointes

Solution
Bonjour Olivier, et bienvenu sur XLD,
Un essai en PJ avec cette macro :
VB:
Sub Exporter()
Application.ScreenUpdating = False
For L = 2 To [A1000].End(xlUp).Row                              ' Pour toutes les lignes
    For C = 7 To 20                                             ' De la colonne G à T
        If LCase(Cells(L, C)) = "x" Then                        ' Si l'atelier est concerné
            Nom = Cells(L, "A")                                 ' On récupère le nom
            Feuille = Cells(1, C)                               ' et le nom de l'activité
            With Sheets(Feuille)                                ' Avec la feuille correspondante à l'atelier
                If Application.CountIf(.[C:C], Nom) = 0 Then    ' Si le...
Bonjour Olivier, et bienvenu sur XLD,
Un essai en PJ avec cette macro :
VB:
Sub Exporter()
Application.ScreenUpdating = False
For L = 2 To [A1000].End(xlUp).Row                              ' Pour toutes les lignes
    For C = 7 To 20                                             ' De la colonne G à T
        If LCase(Cells(L, C)) = "x" Then                        ' Si l'atelier est concerné
            Nom = Cells(L, "A")                                 ' On récupère le nom
            Feuille = Cells(1, C)                               ' et le nom de l'activité
            With Sheets(Feuille)                                ' Avec la feuille correspondante à l'atelier
                If Application.CountIf(.[C:C], Nom) = 0 Then    ' Si le nom n'existe pas dans la feuille
                    PL = .[C65500].End(xlUp).Row + 1            ' Première ligne où écrire
                    For Colonne = 1 To 5                        ' On recopie les 5 valeurs
                        .Cells(PL, Colonne + 2) = Cells(L, Colonne)
                    Next
                End If
            End With
        End If
    Next C
Next L
End Sub
J'ai modifié l'âge de façon à avoir vraiment l'âge en nombre et pas sous forme de format de cellule, avec :
Code:
=ENT((AUJOURDHUI()-C2)/365.25)
 

Pièces jointes

Dernière édition:
Bonjour Olivier, et bienvenu sur XLD,
Un essai en PJ avec cette macro :
VB:
Sub Exporter()
Application.ScreenUpdating = False
For L = 2 To [A1000].End(xlUp).Row                              ' Pour toutes les lignes
    For C = 7 To 20                                             ' De la colonne G à T
        If LCase(Cells(L, C)) = "x" Then                        ' Si l'atelier est concerné
            Nom = Cells(L, "A")                                 ' On récupère le nom
            Feuille = Cells(1, C)                               ' et le nom de l'activité
            With Sheets(Feuille)                                ' Avec la feuille correspondante à l'atelier
                If Application.CountIf(.[C:C], Nom) = 0 Then    ' Si le nom n'existe pas dans la feuille
                    PL = .[C65500].End(xlUp).Row + 1            ' Première ligne où écrire
                    For Colonne = 1 To 5                        ' On recopie les 5 valeurs
                        .Cells(PL, Colonne + 2) = Cells(L, Colonne)
                    Next
                End If
            End With
        End If
    Next C
Next L
End Sub
J'ai modifié l'âge de façon à avoir vraiment l'âge en nombre et pas sous forme de format de cellule, avec :
Code:
=ENT((AUJOURDHUI()-C2)/365.25)[/CO
[/QUOTE]
Le transferts ce fait super bien merci beaucoup.
J ai juste une difficulté car quand j'ai des personnes avec le même nom de famille, il ne me prend que le premier, les autres sont ignorés  ':)
 
Bonjour Olivier,
J ai juste une difficulté car quand j'ai des personnes avec le même nom de famille, il ne me prend que le premier, les autres sont ignorés
Ne mettez pas une nouvelle demande dans un code il n'est pas visible. 🙂
En PJ un essai, je regarde Nom et Prénom.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
704
Réponses
3
Affichages
469
Retour