Comment afficher l'ensemble des clients ayant un type de machine

rep -  
ThauTheme Messages postés 1564 Statut Membre -
Bonjour,
J'ai crée un fichier client en colonne avec les données clients et les machines dont ils disposent.
num cli/ nom cli/machine1/ année /commentaires machines/ machine 2 /année 2
Je souhaiterais trouver une formule qui permettent de choisir une machine x (qui peut aussi bien se trouver en colonne machine 1/machine 2...) et qui m'affiche les noms des clients possédant la machine en question ainsi que le N° client, l'année de la machine, le commentaire...

Je n'arrive pas à trouver car avec index equiv, il faut donner la colonne où se trouve la réponse or dans mon cas les machines peuvent se trouver dans différentes colonne (machine 1, machine 2...)

D'avance merci

3 réponses

  1. Gandbi Messages postés 353 Date d'inscription   Statut Membre Dernière intervention   57
     
    Bonsoir,
    Tu peux poser simplement des filtres sur les colonnes, ce sera plus facile à suivre

    0
  2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonsoir rep

    Une possibilité avec une macro :
    https://www.cjoint.com/?0AethHZWbVG

    Exemple à adapter à ton fichier et tes besoins

    Cdlmnt
    0
  3. ThauTheme Messages postés 1564 Statut Membre 160
     
    Bonsoir Rep, bonsoir le forum,

    Par formule je ne sais pas faire. Je te propose une solution VBA avec le code ci-dessous :

    Sub Macro1()
    Dim O1 As Object 'déclare la variable O1 (Onglet 1)
    Dim O2 As Object 'déclare la variable O1 (Onglet 2)
    Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
    Dim BE As Variant 'déclare la variable BE (Boîte d'Entrée)
    Dim I As Integer 'déclare la variable I (Incrément)
    Dim J As Integer 'déclare la variable J (incrément)
    Dim K As Integer 'déclare la variable K (incrément)
    Dim TL() As Variant 'déclare la variable TL (Tableau de Ligne)
    
    Set O1 = Sheets("Feuil1") 'définit l'onglet O1 (à adapter)
    Set O2 = Sheets("Feuil2") 'définit l'onglet O2 (à adapter)
    O.Cells.ClearContents 'efface d'éventuelle anciennes données
    TC = O1.Range("A1").CurrentRegion 'définit la tableau de cellule TC (à Adapter)
    BE = Application.InputBox("Tapez le nom de la machine recherchée !", Type:=2) 'définit la boîte d'entrée BE
    If BE = False Or BE = "" Then Exit Sub 'si bouton "Annuler" ou si non renseignée, sort de la procédure
    K = 1 'initialise la variable K
    For I = 2 To UBound(TC, 1) 'boucle 1 : sur toutes les lignes du tableau TC (en partant de la secconde)
        If TC(I, 3) = BE Or TC(I, 6) = BE Then 'si la valeur en colonne C ou en colonne F du tableau TC est égale à BE
            ReDim Preserve TL(1 To UBound(TC, 2), 1 To K) 'redimensionne le tableau de lignes TL
            For J = 1 To UBound(TC, 2) 'boucle 2 sur toutes les colonnes du tableau TC
                TL(J, K) = TC(I, J) 'récupère dans la ligne J du tgableau TL la valeur de la colonne J du tableau TC
            Next J 'prochaine colonne de la boucle 2
            K = K + 1 'incrément K
        End If 'fin de la condition
    Next I 'prochaine ligne de la boucle 1
    'renvoie dans A1 de l'onglet O2 le tableau TL transposé
    O2.Range("A1").Resize(UBound(TL, 2), UBound(TL, 1)) = Application.Transpose(TL)
    O2.Select
    End Sub

    0
    1. ThauTheme Messages postés 1564 Statut Membre 160
       
      Il y a une erreur à la ligne 13. Il faut écrire O2.Cells à la place de O.Cells...
      0