VBA

TKF_Patrick

XLDnaute Nouveau
Bonjour à tous;

en faite, sa fait depuis deux semaine je travail sur une base de donnée qui contient des maties et chaque matière constitue de plusieurs éléments, pour l’exemple : un matières qui s'appelle N249 constitue de 5% de lait, 0.2 %du café, 3% du sucre..etc, alors moi je cherche soit dans une UserForm ou bien excel faire plusieurs moteurs de recherches tel qu'un moteur pour le pourcentage du lait et un moteur pour le pourcentage du café, et du sucre ..etc , donc quand je mets 5% du lait et 0.2%du café et 3% du sucre...etc, il s'affiche le Nom du matières (N249 exemple).

Je suis à l'écoute de tout aide et suis preneur de toute contributions pouvant m'aider à réaliser cela. je compte sur votre compréhension.

Merci la communauté.
 

eriiic

XLDnaute Barbatruc
Bonjour,

Pas grand chose à expliquer, c'est vraiment basique.
Si tu n'as aucune notion de VBA cherche des tutos sur le net. Ce n'est pas l'objet de ces forums que de former au B.A.BA.
Et tu as la touche F1, l'aide. A faire sur chaque fonction ou propriété que tu ne connais pas.

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim pl As Range, c As Range, tmp
    ' définition de la plage des critères, ligne 1 limitée aux colonnes des entête
    Set pl = Intersect(Target, Range("Tableau1[#Headers]").Offset(-1))
    If Not pl Is Nothing Then
        For Each c In pl
            ' pour chaque critère modifié
            If c = "" Then
                ' si vide on supprime le flitre
                ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=Target.Column
            Else
                ' sinon
                tmp = Split(Target, "<") ' découpe critère sur "<"
                If UBound(tmp) = 1 Then
                    ' si 2 critères alors filtre 'Entre'
                    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=2, Criteria1:=">=" & tmp(0), Operator:=xlAnd, Criteria2:="<=" & tmp(1)
                Else
                    ' si 1 critère alors filtre '='
                    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=Target.Column, Criteria1:=Target.Value
                End If
            End If
        Next c
    End If
End Sub
eric
 

TKF_Patrick

XLDnaute Nouveau
Re
J'ai l'ai fait en VBA, mais je suis nul enVBA. Ne me demande pas des choses compliquées !
bonjour;

s'il vous j'ai travail sur votre programme, et j'ai besoin que vous m'aidez de comprendre votre programme(un peu d'explication svp), et j'ai travail sur votre programme j'essai de faire l'inverse de qsq vous m'avez envoyé, càd j'ai essayé de mettre le tableau de recherche dans la 1ier ligne après ma base de donnée, mais j'ai trouvé un problème, je vous transmets le fichier.

très cordialement;
 

Pièces jointes

  • App-INV-INV-Macros.xlsm
    18.4 KB · Affichages: 1

TKF_Patrick

XLDnaute Nouveau
Bonjour,

Pas grand chose à expliquer, c'est vraiment basique.
Si tu n'as aucune notion de VBA cherche des tutos sur le net. Ce n'est pas l'objet de ces forums que de former au B.A.BA.
Et tu as la touche F1, l'aide. A faire sur chaque fonction ou propriété que tu ne connais pas.

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim pl As Range, c As Range, tmp
    ' définition de la plage des critères, ligne 1 limitée aux colonnes des entête
    Set pl = Intersect(Target, Range("Tableau1[#Headers]").Offset(-1))
    If Not pl Is Nothing Then
        For Each c In pl
            ' pour chaque critère modifié
            If c = "" Then
                ' si vide on supprime le flitre
                ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=Target.Column
            Else
                ' sinon
                tmp = Split(Target, "<") ' découpe critère sur "<"
                If UBound(tmp) = 1 Then
                    ' si 2 critères alors filtre 'Entre'
                    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=2, Criteria1:=">=" & tmp(0), Operator:=xlAnd, Criteria2:="<=" & tmp(1)
                Else
                    ' si 1 critère alors filtre '='
                    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=Target.Column, Criteria1:=Target.Value
                End If
            End If
        Next c
    End If
End Sub
eric
Bonjour,

je vous remercie pour votre commentaire, ça m'aider bq, merci bq encore,

s'il vous plait une autre chose, j'ai travail sur presque le même programme mais avec macron, mais j'ai trouver un obstacle, j'ai pas arriver à l'identifier, si vous pouvez s'il vous plait m'aider. je vous transmets mon fichier.

très cordialement,
 

TKF_Patrick

XLDnaute Nouveau
Bonjour,

je vous remercie pour votre commentaire, ça m'aider bq, merci bq encore,

s'il vous plait une autre chose, j'ai travail sur presque le même programme mais avec macron, mais j'ai trouver un obstacle, j'ai pas arriver à l'identifier, si vous pouvez s'il vous plait m'aider. je vous transmets mon fichier.

très cordialement,
Bonjour,

Pas grand chose à expliquer, c'est vraiment basique.
Si tu n'as aucune notion de VBA cherche des tutos sur le net. Ce n'est pas l'objet de ces forums que de former au B.A.BA.
Et tu as la touche F1, l'aide. A faire sur chaque fonction ou propriété que tu ne connais pas.

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim pl As Range, c As Range, tmp
    ' définition de la plage des critères, ligne 1 limitée aux colonnes des entête
    Set pl = Intersect(Target, Range("Tableau1[#Headers]").Offset(-1))
    If Not pl Is Nothing Then
        For Each c In pl
            ' pour chaque critère modifié
            If c = "" Then
                ' si vide on supprime le flitre
                ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=Target.Column
            Else
                ' sinon
                tmp = Split(Target, "<") ' découpe critère sur "<"
                If UBound(tmp) = 1 Then
                    ' si 2 critères alors filtre 'Entre'
                    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=2, Criteria1:=">=" & tmp(0), Operator:=xlAnd, Criteria2:="<=" & tmp(1)
                Else
                    ' si 1 critère alors filtre '='
                    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=Target.Column, Criteria1:=Target.Value
                End If
            End If
        Next c
    End If
End Sub
eric
Bonjour,

je vous remercie pour votre commentaire, ça m'aider bq, merci bq encore,

s'il vous plait une autre chose, j'ai travail sur presque le même programme mais avec macron, mais j'ai trouver un obstacle, j'ai pas arriver à l'identifier, si vous pouvez s'il vous plait m'aider. je vous transmets mon fichier.

très cordialement,
 

Pièces jointes

  • App-INV-INV-Macros.xlsm
    18.4 KB · Affichages: 1

TKF_Patrick

XLDnaute Nouveau
Bonjour,

fais l'effort d'expliquer correctement ton problème stp.
Pas envie de prendre le temps d'ouvrir ton fichier pour voir s'il y a des explications complètes et si je m'y sens compétent.
eric
re-Bonjour,


j'avait travaillé sur un programme qui a le mémé principe de le votre, mais avec un macros, Le but de ma macro est de pouvoir, à partir d'une base de donnée, filtrer sur des critères et obtenir le résultat de ce filtre , je vous joints mon fichier, si quelqu'un arrive à déceler l'erreur que je ne trouve pas

très cordialement,
 

Discussions similaires

Réponses
7
Affichages
349

Statistiques des forums

Discussions
312 215
Messages
2 086 324
Membres
103 179
dernier inscrit
BERSEB50