Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Compilation de données scientifiques

Nicolas64000

XLDnaute Nouveau
Bonjour à tous,

Je suis microbiologiste dans un laboratoire de recherche et voici mon défi, je dois créer un système de compilation de toutes nos données d'efficacité en fonction de la recette du produit qui a été analysé.

J'ai créer un tout petit tableau pour représenter le problème; ce que je souhaite, c'est dire ''Je veux observer tous les produits dans lequel tel ingrédient est présent'', peux importe sa place dans la recette (ingrédient #1 ou #2 ou #3, etc...) et pouvoir comparer visuellement l'efficacité de ces recettes.

Le soucis c'est que je peux retrouver un même ingrédient dans les colonnes B,C,D,E,F et qu'avec un simple filtre sur une colonne, je perd les recettes dans lequel l'ingrédient se retrouve dans une autre colonne.

Je vous remercie tous pour votre aide
 

Pièces jointes

  • Nicolas64000_Compilation DATA.xlsx
    11.9 KB · Affichages: 3
Solution
Re, bonjour JHA,
1- Oui avec la modif
VB:
=SI(NB.SI(Tableau178[[#Cette ligne];[Ingrédient '#1]:[Ingrédient '#5]];"*"&$K$1&"*")>0;"X";"")
Voir PJ1
2- Oui, mais avec du VBA,
Code:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [K1]) Is Nothing Then
        If Target <> "" Then
            ActiveSheet.ListObjects("Tableau178").Range.AutoFilter Field:=8, Criteria1:="<>"
        Else
            ActiveSheet.ListObjects("Tableau178").Range.AutoFilter Field:=8
        End If
    End If
End Sub
Voir PJ2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Nicolas, et bienvenu sur XLD,
Une tentative ( peut être bancale ) en PJ.
Je crée une nouvelle colonne Présence produit. Et une cellule (K1) avec le nom ou la partie du nom recherché.
Dans cette colonne je met un X si le produit est utilisé quelque part dans la recette. Il suffit alors de filtrer sur X pour avoir la liste. Avec :
VB:
=SI(NB.SI(Tableau178[[#Cette ligne];[Ingrédient '#1]:[Ingrédient '#5]];$K$1&"*")>0;"X";"")
 

Pièces jointes

  • Nicolas64000_Compilation DATA.xlsx
    11.9 KB · Affichages: 3

Nicolas64000

XLDnaute Nouveau
Bonjour Sylvanu !

Je te remercie pour ton temps, ta solution est intéressante; j'ai deux question :

1) Est-il possible de pouvoir écrire seulement un mot clé, ou seulement quelques lettres d'un mot en K1 pour que la fonction de la colonne H effectue sa recherche ?

Exemple : pour l'ingrédient ''Acide peracétique (PAA)'', si quelqu'un écrit seulement PAA, la fonction ne marche pas parce que ''PAA'' n'est pas le premier mot du nom complet.

2) Est-il possible que la filtration en colonne H se produise instantanément après avoir entré mon mot en K1, et que la filtration s'annule toute seule en cas de cellule K1 vide ?
 

Nicolas64000

XLDnaute Nouveau
Bonjour à tous,

Il y a moyen de filtrer par ingrédient choisi.

JHA
Bonjour JHA !

Je te remercie pour ton temps, j'ai quelques questions pour toi :

1) Est-il possible que la cellule de recherche se situe ailleurs que dans le tableau? Par exemple au dessus du tableau, ou un onglet à part dans lequel la personne choisirai un ingrédient qu'il veut voir, et en changeant d'onglet il voit le tableau de données associé à sa recherche.

2) Est-il possible que la recherche soit moins contraignante, dans le sens que la personne doit sélectionner avec exactitude le nom complet de l'ingrédient qu'il désire voir plutôt qu'une portion

exemple : Acide peracétique (PAA) (5 ppm)
Acide peracétique (PAA) (9 ppm)
Acide peracétique (PAA) (15 ppm)

Ce que je souhaite observer, ce sont toutes les lignes ayant ''Acide peracétique'' dans le nom de l'ingrédient
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re, bonjour JHA,
1- Oui avec la modif
VB:
=SI(NB.SI(Tableau178[[#Cette ligne];[Ingrédient '#1]:[Ingrédient '#5]];"*"&$K$1&"*")>0;"X";"")
Voir PJ1
2- Oui, mais avec du VBA,
Code:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [K1]) Is Nothing Then
        If Target <> "" Then
            ActiveSheet.ListObjects("Tableau178").Range.AutoFilter Field:=8, Criteria1:="<>"
        Else
            ActiveSheet.ListObjects("Tableau178").Range.AutoFilter Field:=8
        End If
    End If
End Sub
Voir PJ2
 

Pièces jointes

  • Nicolas64000_Compilation DATA (1).xlsx
    11.9 KB · Affichages: 1
  • Nicolas64000_Compilation DATA (2).xlsm
    18.7 KB · Affichages: 7

Nicolas64000

XLDnaute Nouveau

Wow, un gros merci pour le fichier en PJ2 (VBA) !! Ça répond à mon problème de façon efficace, je vais pouvoir jouer avec ce fichier et construire ma banque de données avec !
 

Nicolas64000

XLDnaute Nouveau


J'ai commencé à construire mon fichier, je n'ai eu aucun soucis à réutiliser la fonction, par contre je n'arrive pas à reproduire le VBA dans mon fichier.

Est-il possible que ma colonne N s'auto-filtre par rapport à la recherche en B2, et ainsi de suite pour les trois autres colonnes, afin de permettre à l'utilisateur de faire une recherche complexe avec plusieurs ingrédients ?

Gros merci pour ton temps Sylvanu, après ça mon fichier sera prêt pour y compiler toutes mes données scientifiques
 

Pièces jointes

  • (R&D) Compilation des données.xlsx
    15.5 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour tout le monde,
En PJ le filtrage sur 4 ingrédients possibles avec :
Code:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [B2:B5]) Is Nothing Then
        Dim Ing1, Ing2, Ing3, Ing4
        Ing1 = [B2]: Ing2 = [B3]: Ing3 = [B4]: Ing4 = [B5]:
        With ActiveSheet.ListObjects("Tableau1")
            If Ing1 & Ing2 & Ing3 & Ing4 = "" Then ' Si pas d'ingrédients alors Suppression de tous les filtres
                .Range.AutoFilter Field:=14
                .Range.AutoFilter Field:=15
                .Range.AutoFilter Field:=16
                .Range.AutoFilter Field:=17
            Else                                    ' Sinon filtrer sur ingrédients demandés
                .Range.AutoFilter Field:=14, Criteria1:="<>"
                .Range.AutoFilter Field:=15, Criteria1:="<>"
                .Range.AutoFilter Field:=16, Criteria1:="<>"
                .Range.AutoFilter Field:=17, Criteria1:="<>"
            End If
        End With
    End If
End Sub
 

Pièces jointes

  • (R&D) Compilation des données.xlsm
    21 KB · Affichages: 2

Discussions similaires

Réponses
3
Affichages
813
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…