Filtre + copie du résultat

tiestof -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
J'utilise quotidiennement un fichier qui contient le nombre de commandes passées par charque client pour la journée en cours.
Je souhaite programmer une Macro sous Excel, avec VBA, pour filtrer sur les clients qui n'ont pas passé de commandes et copier la liste de ces client dans une cellule.
la structure de mon tableau et comme suit :
Nom client----- article1---- article2---article3----Remarques
SA1 2 0 3
SA2 0 0 0 Pas de commandes
Je souhaite donc filtrer sur la dernière colonne " Remarque" et copier le nom de tout les clients qui n'ont pas passé de commandes " La cellule = Pas de commandes"
Pour avoir en résultat la liste de tout les clients qui ont passé 0 commandes: " A afficher dans une cellule séparé d'une virgule".

1 réponse

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Proposition sous forme d'une fonction personnalisée à mettre dans un module standard :
     Function pasCmd(plageRemarque As Range, plageNom As Range) As String 
        Const colNom As Long = 1, colRem As Long = 5 
        Dim c As Range 
        For Each c In plageRemarque.SpecialCells(xlCellTypeConstants) 
            If c = "Pas de commandes" Then 
                pasCmd = pasCmd & "," & c.Offset(0, plageNom.Column - plageRemarque.Column).Value 
            End If 
        Next c 
        If Len(pasCmd) > 0 Then pasCmd = Right(pasCmd, Len(pasCmd) - 1) 
    End Function

    ex syntaxe dans une cellule :
    =pasCmd(plageRemarque, plageNom)
    =pascmd(E:E;A:A)
    retourne : "nom2,nom5,nom10,nom13"

    La fonction se recalcule à chaque modif dans plageRemarque ou plageNom.
    https://www.cjoint.com/?BHCnDmljXOS

    eric
    ---
    Jamais tu ne répondras à un mp non sollicité...
    Bon, ça c'est fait.
    0