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

Notre forum d’entraide est 100 % gratuit et le restera.
Aucune formation payante, aucun fichier à acheter, rien à vendre. Mais comme tout site, nous devons couvrir nos frais pour continuer à vous accompagner.
Soutenez-nous en souscrivant à un compte membre : c’est rapide, vous choisissez simplement votre niveau de soutien et le tour est joué.

Je soutiens la communauté et j’accède à mon compte membre

Discussions similaires

Réponses
7
Affichages
701
Réponses
3
Affichages
466
Retour