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

Fermé
rep - 4 janv. 2015 à 18:23
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 4 janv. 2015 à 23:22
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

Gandbi Messages postés 351 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 4 janvier 2015 55
4 janv. 2015 à 19:00
Bonsoir,
Tu peux poser simplement des filtres sur les colonnes, ce sera plus facile à suivre

0
via55 Messages postés 14032 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 27 janvier 2023 2 548
4 janv. 2015 à 19:00
Bonsoir rep

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

Exemple à adapter à ton fichier et tes besoins

Cdlmnt
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
4 janv. 2015 à 19:19
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
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
4 janv. 2015 à 23:22
Il y a une erreur à la ligne 13. Il faut écrire O2.Cells à la place de O.Cells...
0