0% ont trouvé ce document utile (0 vote)
3 vues5 pages

Formules Excel pour localiser des items

L'utilisateur cherche à créer une formule Excel pour déterminer la dernière localisation d'un item dans deux tableaux en fonction de la date la plus récente. Après des erreurs de référence, une formule utilisant MAX.SI.ENS est proposée pour simplifier le calcul. De plus, des macros VBA sont suggérées pour ajouter une barre de recherche et un menu déroulant permettant de filtrer les données selon des critères spécifiques.
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues5 pages

Formules Excel pour localiser des items

L'utilisateur cherche à créer une formule Excel pour déterminer la dernière localisation d'un item dans deux tableaux en fonction de la date la plus récente. Après des erreurs de référence, une formule utilisant MAX.SI.ENS est proposée pour simplifier le calcul. De plus, des macros VBA sont suggérées pour ajouter une barre de recherche et un menu déroulant permettant de filtrer les données selon des critères spécifiques.
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Compilation complète de la conversation

1. [Demande initiale] L'utilisateur souhaite créer une formule pour calculer la dernière localisation d'un item dans deux

tableaux Excel distincts en fonction de la date la plus récente. Il veut utiliser les données "code", "nom", "qty", "location",

et "date" pour chaque item. La solution initiale proposait une formule pour combiner deux tableaux, mais l'utilisateur

souhaite traiter les tableaux séparément.

Solution initiale :

Formule combinée avec la fonction MAX et SI :

=IF(

MAX(SI(Tableau1!A:A=B10, Tableau1!E:E), SI(Tableau2!A:A=B10, Tableau2!E:E))

= MAX(SI(Tableau1!A:A=B10, Tableau1!E:E)),

INDEX(Tableau1!D:D, MATCH(MAX(SI(Tableau1!A:A=B10, Tableau1!E:E)), Tableau1!E:E, 0)),

INDEX(Tableau2!D:D, MATCH(MAX(SI(Tableau2!A:A=B10, Tableau2!E:E)), Tableau2!E:E, 0))

2. [Erreur et modifications] L'utilisateur reçoit une erreur car Excel ne peut pas interpréter correctement certaines parties

de la formule, notamment les références à purshase_tbl et selling_tbl3.

Formule adaptée (après correction des références des tableaux) :

=IF(

MAX(

SI(purshase_tbl[Part Number]=B10, purshase_tbl[Date]),

SI(selling_tbl3[Part Number]=B10, selling_tbl3[Date])

) = MAX(SI(purshase_tbl[Part Number]=B10, purshase_tbl[Date])),

INDEX(purshase_tbl[Location], MATCH(MAX(SI(purshase_tbl[Part Number]=B10, purshase_tbl[Date])),


purshase_tbl[Date], 0)),

INDEX(selling_tbl3[Location], MATCH(MAX(SI(selling_tbl3[Part Number]=B10, selling_tbl3[Date])), selling_tbl3[Date],

0))

3. [Utilisation de [Link]] Pour simplifier la formule et résoudre le problème, une suggestion d'utilisation de

[Link] est proposée.

Formule utilisant [Link] :

=SI(

MAX([Link](purshase_tbl[Date], purshase_tbl[Part Number], B10), [Link](selling_tbl3[Date],

selling_tbl3[Part Number], B10))

= [Link](purshase_tbl[Date], purshase_tbl[Part Number], B10),

INDEX(purshase_tbl[Location], EQUIV([Link](purshase_tbl[Date], purshase_tbl[Part Number], B10),

purshase_tbl[Date], 0)),

INDEX(selling_tbl3[Location], EQUIV([Link](selling_tbl3[Date], selling_tbl3[Part Number], B10),

selling_tbl3[Date], 0))

4. [Ajout d'une barre de recherche avec filtrage] L'utilisateur souhaite ajouter une barre de recherche pour filtrer les

lignes du tableau en fonction de la donnée saisie dans une cellule spécifique.

Macro VBA pour barre de recherche :

Private Sub txtSearch_Change()

Dim ws As Worksheet

Dim tableau As ListObject


Dim critereRecherche As String

' Définir la feuille et le tableau

Set ws = [Link]("Feuil1")

Set tableau = [Link]("NomTableau")

' Récupérer la valeur saisie dans la zone de texte

critereRecherche = [Link]

' Si la barre de recherche est vide, supprimer les filtres

If critereRecherche = "" Then

[Link] Field:=1

Else

[Link] Field:=1, Criteria1:="*" & critereRecherche & "*"

End If

End Sub

5. [Ajout d'un menu déroulant pour sélectionner la colonne à filtrer] L'utilisateur souhaite ensuite ajouter un menu

déroulant à côté de la barre de recherche pour choisir la colonne dans laquelle appliquer le filtre.

Code VBA pour le menu déroulant avec barre de recherche :

Private Sub txtSearch_Change()

Dim ws As Worksheet

Dim tableau As ListObject

Dim critereRecherche As String

Dim colonneChoisie As String


Dim colonneFiltre As Long

' Définir la feuille et le tableau

Set ws = [Link]("Feuil1")

Set tableau = [Link]("NomTableau")

' Récupérer la valeur saisie dans la zone de texte

critereRecherche = [Link]

' Récupérer le critère de colonne choisi dans la ComboBox

colonneChoisie = [Link]

' Assigner le numéro de colonne en fonction du critère sélectionné

Select Case colonneChoisie

Case "Col1"

colonneFiltre = 1

Case "Col2"

colonneFiltre = 2

Case "Col3"

colonneFiltre = 3

Case Else

colonneFiltre = 1

End Select

' Si la barre de recherche est vide, supprimer les filtres

If critereRecherche = "" Then


[Link] Field:=colonneFiltre

Else

[Link] Field:=colonneFiltre, Criteria1:="*" & critereRecherche & "*"

End If

End Sub

Vous aimerez peut-être aussi