IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA - Recherche 2 valeurs avec 2 critéres [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Resp. SUPPLY CHAIN
    Inscrit en
    Juillet 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Resp. SUPPLY CHAIN
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2020
    Messages : 6
    Par défaut VBA - Recherche 2 valeurs avec 2 critéres
    Bonjour à tous,

    Après plusieurs recherches et essais, je m'en remets à vous.

    Voici mon problème : dans un classeur Excel j'ai deux onglets Feuille1 et Feuille2. Dans la Feuille1 un tableau mis à jour automatiquement via MySQL comportant 6 colonnes. Dans la feuille2, un tableau de 40 colonnes.

    Je souhaiterais qu'au clic d'une cellule du tableau de la Feuille2 dans la colonne 20 (plage T8:T203), une MsgBox apparaît avec les valeurs trouvés dans le tableau de la Feuille1 en prenant comme critère (crit1) la cellule T6 (date, cellule fixe, en valeur > ou =) et la valeur de la cellule en colonne1 (crit2) de la Feuille1 (cellule provenant de la ligne sur laquelle je clique). Ces valeurs sont disponibles dans la Feuille1 : crit1 = colonne 6, crit2 = colonne 3. Les valeurs qui doivent apparaître dans la Msgbox proviennent du Tableau de la Feuille1 en colonne 6 et 4.

    Il y a 1 à plusieurs valeurs à retourner dans la MsgBox.

    Ci-dessous, le MsgBox à afficher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Option Explicit
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
     
        If Not Application.Intersect(Target, Range("T8:T203")) Is Nothing Then
     
     
     
        MsgBox ("Voici la liste des expéditions programmées :" & vbLf & "Date" & " " & "Nb colis" & "Colis"), vbInformation
     
        End If
     
    End Sub
    Merci d'avance pour votre aide.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 600
    Par défaut
    Je me suis perdu au niveau des critères
    Manuellement, ça consisterai à faire un filtre sur certaines colonnes de la feuille 1 selon des valeurs de la feuille2; donc, si c'est ça, on peut appliquer ces filtres via vba et Range.AutoFilter https://learn.microsoft.com/en-us/of...nge.autofilter
    Après il faut parcourir les cellules dont tu veux afficher dans le msgbox, et ensuite retirer le filtre avec un ShowAllData sur la feuille https://learn.microsoft.com/en-us/of...et.showalldata

  3. #3
    Membre du Club
    Homme Profil pro
    Resp. SUPPLY CHAIN
    Inscrit en
    Juillet 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Resp. SUPPLY CHAIN
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2020
    Messages : 6
    Par défaut
    Merci umfred pour ta réponse. Je souhaite cependant éviter de "toucher" avec des filtres au tableau de la Feuille1 car mon tableau de la Feuille2 va chercher d'autres informations dessous.

    Je vais essayer d'être plus clair pour mes critères. Pour mon fichier, il s'agit d'un planificateur/récap de commande client. Dans le Tableau de la Feuille1 j'ai 6 colonnes avec (dans l'ordre) : N° de commande / N° de ligne de commande / N° de code produit / Nombre de colis / Commande préparée ? (O/N) / Date d'expédition.

    Dans mon Tableau de la Feuille 2, ma colonne 1 correspond à mon code produit, ma colonne 20 correspondant à la somme des colis des commandes non préparées qui sont supérieur ou égale à la date en T6 (valeur que je vais rechercher dans le tableau de la Feuille1.

    Je souhaite que dans ma colonne 20, lorsque je clique sur une cellule, un message s'affiche avec le détail de cette somme (date d'expédition et nombre de colis).

    J'espère être plus clair....je peux mettre un fichier exemple si vous le souhaitez....

  4. #4
    Membre du Club
    Homme Profil pro
    Resp. SUPPLY CHAIN
    Inscrit en
    Juillet 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Resp. SUPPLY CHAIN
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2020
    Messages : 6
    Par défaut
    RE

    J'ai avancé un peu plus sur le code VBA en appliquant la méthode de umfred. Cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    Application.Calculation = xlCalculationManual
     
    Dim crit1 As String
    Dim crit2 As Date
     
    crit1 = Sheets("Feuil2").Range("A8").Value
    crit2 = Sheets("Feuil2").Range("$T$6").Value
     
    If Not Application.Intersect(Target, Range("T8:T203")) Is Nothing Then
     
    Sheets("Feuil1").Select
     
            ActiveSheet.ListObjects("paljmp_explig").Range.AutoFilter Field:=3, _
                Criteria1:=crit1
     
            ActiveSheet.ListObjects("paljmp_explig").Range.AutoFilter Field:=6, _
                Criteria1:=">=" & Format(crit2, "mm/dd/yyyy")
     
     
     
            MsgBox ("Voici la liste des expéditions programmées :" & vbLf & "Date" & " " & "Nb colis" & "Colis"), vbInformation
     
        End If
     
    ActiveSheet.ListObjects("paljmp_explig").Range.AutoFilter Field:=3
    ActiveSheet.ListObjects("paljmp_explig").Range.AutoFilter Field:=6
     
    Sheets("Feuil2").Select
     
    Application.Calculation = xlCalculationAutomatic
     
    End Sub
    Maintenant je souhaiterais que la valeur de crit1 change en fonction de la cellule sur laquelle je clique dans la colonne T (target). C'est à dire que si je clique sur la cellule T20, il applique le filtre en fonction de la valeur de A20.

    Ensuite, j'ai la partie manquante pour affiché les informations des colonnes 4 et 6 de mon tableau filtré à faire apparaître dans la msgbox.

    Pouvez-vous m'aider ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rechercher une valeur avec 3 critères
    Par gexels dans le forum Excel
    Réponses: 5
    Dernier message: 24/10/2017, 05h37
  2. Réponses: 6
    Dernier message: 10/03/2017, 07h38
  3. Rechercher une valeur avec 2 critères
    Par davidfc dans le forum Excel
    Réponses: 1
    Dernier message: 12/08/2016, 09h52
  4. codage vba pour rechercher une valeur selon 2 critères
    Par sims92.66 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/10/2011, 22h29
  5. Recherche valeur avec deux critères
    Par NATOU2 dans le forum Excel
    Réponses: 1
    Dernier message: 11/11/2008, 12h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo