Copie valeur cellule si condition remplie

Fermé
MATHIEUE91 Messages postés 2 Date d'inscription lundi 6 mai 2019 Statut Membre Dernière intervention 8 mai 2019 - Modifié le 7 mai 2019 à 11:06
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 - 9 mai 2019 à 06:27
Bonjour à tous.


Je vous soumets un petit pb :

J'ai une liste de 3 noms en face j'ai 10 noms de projets. Je voudrais que les projets traités par les personnes (repérés par les X) se copient en face des noms dans le tableau + bas comme l'exemple joint.

Merci à vous de l'aide que vous pourrez m'apporter.

2 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
7 mai 2019 à 06:28
Bonjour,

Mauvaise présentation du tableau, les projets doivent se trouver à gauche (colonne A) pour permettre aisément l'extension des noms.

Voici une proposition en VBA
https://mon-partage.fr/f/S4omVLsF/

Le code utilisé
Sub Restit()
    Dim DerLig As Long, DerCol As Long, Lig As Long, Col As Long
    Dim NomTraite As Boolean
    Dim l As Long, c As Long
    
    Application.ScreenUpdating = False
    DerLig = [A1000].End(xlUp).Row
    DerCol = [A1].End(xlToRight).Column
    Lig = 13 'ligne de départ du tableau de la collecte
    Col = 5 'Colonne de départ du tableau de la collecte
    For c = 2 To DerCol
        Nom = Cells(1, c)
        NomTraite = False
        For l = 2 To DerLig
            If Cells(l, c) = "x" Then
                If NomTraite = False Then Cells(Lig, Col) = Nom
                Cells(Lig, Col + 1) = Cells(l, "A")
                NomTraite = True
                Lig = Lig + 1
            End If
        Next l
    Next c
End Sub


Vous pouvez ajouter autant de noms que vous le désirez. par contre, si vous choisissez de changer l'emplacement du tableau restitué, il vous suffit de modifier les paramètres "Lig" et "Col" dans le programme ((actuellement en ligne 13 et colonne 5)

Cdlt
3
Bonjour. Merci de votre aide. Je vais suivre vos conseils en modifiant suivant vos consignes ce tableau qui est un outil générique où je travaille. Rien de tel que de faire evoluer les choses ... ;-)
Je regarde cela ce soir.
0
MATHIEUE91 Messages postés 2 Date d'inscription lundi 6 mai 2019 Statut Membre Dernière intervention 8 mai 2019
8 mai 2019 à 10:51
Bonjour Frenchie83.

Merci encore pour votre proposition. Ca marche nickel. Je voulais juste demander un complément si pas trop lourd pour vous : Comment pourrais-je procéder pour faire une mise à jour par nom , je m'explique :
Dans le tableau d'origine j'ai X lignes par nom (10 dans l'exemple) ce qui permet que les noms restent positionnés sur les mêmes lignes origine.
J'aimerais donc par exemple avoir un bouton de mise à jour pour LOLO, un pour LULU et un pour TOTO afin de pouvoir garder les mise à jour respective de chaque chef de projet dans l'espace dédié des 10 lignes de chacun...
Je vous joins de nouveau une image sur la base du fichier de votre proposition.

Merci encore pour votre aide.
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338 > MATHIEUE91 Messages postés 2 Date d'inscription lundi 6 mai 2019 Statut Membre Dernière intervention 8 mai 2019
9 mai 2019 à 06:27
Bonjour,

Pas tout compris, vous affectez le même nombre de lignes à chaque personne, même s'il y a des vides (ça risque de faire gros, vu dans le post 3, 120 lignes environ, le tout multiplié par chaque nom). De plus ça ne correspond pas à l'idée initiale.

Adoptons les termes suivants pour une meilleure compréhension:
Tab_A: tableau de saisie des valeurs (en A1:D9 dans l'exemple)
Tab_B: tableau de restitution en colonne (en E13:F43 dans l'exemple)

Ensuite vous voulez une mise à jour pour un nom choisi, donc on complète Tab_B si il y a un ajout de "x" dans Tab_A, mais si vous supprimer un "x" dans Tab_A, doit -on l'enlever ou le conserver dans Tab_B?

Pour clarifier les choses et gagner du temps, mettez un exemple "Avant et Après" de ce que vous attendez.

Cdlt
0