Alertes MsgBox + InputBox en fonction des dates

Bonjour à tous,

Je tiens tout d'abord à remercier ce site et les personnes qui le font vivre car tout ce partage de connaissance est véritablement très enrichissant pour des personnes débutantes en VBA comme moi.

Voici ma problématique : Je souhaiterais, via un "clique sur un bouton", déclencher la vérification des produits à commander "aujourd'hui", c'est à dire les produits dont la date en colonne K (Prochain jour de cmd) est égal à la date du jour.

Suite à ce clique, il faudrait que des fenêtres apparaissent à la suite laissant ainsi à l'utilisateur du fichier plusieurs options, Exemple:

Click bouton ==> Fenêtre Msgbox : Avez-vous commandé : "Cellule D2" "Cellule E2" de"Cellule B2" référence "Celluce C2" pour le client "Cellule A2" ? Si la réponse est "Oui" alors on viendra inscrire le texte "commandé" dans la cellule "M2", en revanche si la réponse est "NON" une deuxième fenêtre de type InputBox apparaîtra et posera la question suivante: A quelle date le produit sera commandable ? L'utilisateur devra là rentrer une date (à voir pour le format) et suite à ça la date renseignée viendra automatiquement se reporter en cellule K2 dans la colonne "Prochain jour de Cmd".

Je désespère car je bloque dessus depuis plusieurs semaines....Please de l'aide

Merci d'avance la communauté

59test-commandes.xlsx (13.76 Ko)

Bonjour,

A attacher à ton bouton :

Sub Commander()

    Dim Plage As Range
    Dim Cel As Range

    With Worksheets("Feuil1"): Set Plage = .Range(.Cells(2, 11), .Cells(.Rows.Count, 11).End(xlUp)): End With

    Set Cel = Plage.Find(Date, , xlValues, xlWhole)

    If Not Cel Is Nothing Then

        If MsgBox("Avez-vous commandé " & _
                  Cel.Offset(, -7).Value & " " & _
                  Cel.Offset(, -6).Value & " de " & _
                  Cel.Offset(, -9).Value & " pour le client " & _
                  Cel.Offset(, -10).Value & " ?", _
                  vbYesNo + vbQuestion, "Commande") = vbYes Then

            Cel.Offset(, 2).Value = "commandé"

        End If

    End If

End Sub

Bonjour,

Un énorme merci Theze, vous êtes d'une efficacité redoutable!

En revanche aucune action se produit lorsque je sélectionne "NON" sur la MsgBox qui s'affiche. Conformément à ma requête initiale si l’utilisateur sélectionne "NON" une deuxième fenêtre de type InputBox doit s'afficher:

Si la réponse est "NON" une deuxième fenêtre de type InputBox apparaîtra et posera la question suivante: A quelle date le produit sera commandable ? L'utilisateur devra là rentrer une date (à voir pour le format) et suite à ça la date renseignée viendra automatiquement se reporter en cellule K2 dans la colonne "Prochain jour de Cmd"

.

Merci par avance pour votre aide

Désolé, j'ai répondu trop vite

Voici avec l'InputBox :

Sub Commander()

    Dim Plage As Range
    Dim Cel As Range
    Dim Retour

    With Worksheets("Feuil1"): Set Plage = .Range(.Cells(2, 11), .Cells(.Rows.Count, 11).End(xlUp)): End With

    Set Cel = Plage.Find(Date, , xlValues, xlWhole)

    If Not Cel Is Nothing Then

        If MsgBox("Avez-vous commandé " & _
                  Cel.Offset(, -7).Value & " " & _
                  Cel.Offset(, -6).Value & " de " & _
                  Cel.Offset(, -9).Value & " pour le client " & _
                  Cel.Offset(, -10).Value & " ?", _
                  vbYesNo + vbQuestion, "Commande") = vbYes Then

            Cel.Offset(, 2).Value = "commandé"

        Else
            Retour = InputBox("A quelle date le produit sera commandable ?", "Commande")

            If IsDate(Retour) Then

                Cel.Value = DateSerial(Year(Retour), Month(Retour), Day(Retour))

            Else

                MsgBox "Date non valide !"

            End If

        End If

    End If

End Sub

Re-bonjour,

Encore une fois vous touchez dans le mille Theze, vos connaissances sont impressionnantes!

Tout fonctionne parfaitement, mais je m’aperçois après coup de 2 points bloquants:

  • Si j'ai 2 cellules avec des dates égale à la date du jour (ex : K3 et K6), le script va seulement vérifier la ligne la plus haute (K3) et l'autre cellule (K6) ne sera pas vérifiée. Pour solutionner ce petit problème il faudrait que les conditions de vérification lors du "clique bouton" soient les suivantes : Si cellules en colonne K (prochain jour de Cmd) =aujourd'hui et Si cellules en colonne M (statut en cours) = "En attente de commande", alors déclenchement de la MsgBox.
  • Si le premier point est solutionné de la manière évoquée ci-dessus, je vais devoir cliquer à chaque fois sur le bouton pour vérifier chaque ligne. Si j'ai 2 lignes ,ça ne gène pas mais si j'en ai 20......ce sera un poile fastidieux. Serait-il en ce sens possible de faire un script qui génère une vérification automatique (en cliquant une seule fois sur le bouton) et successive ( ligne après ligne) ?

Dernière chose, serait-il également possible de générer une msgbox qui m'indique qu'il n'y a "aucun produits à commander aujourd'hui" si les cellules en colonne K et M ne rentrent pas dans les critères prédéfinis ?

J’espère être assez clair dans mes explications

Encore un grand merci à vous

Bonjour,

Voici la recherche sur toutes les occurrences mais il te faudra cliquer sur le bouton du message "Avez-vous commandé..." pour chaque valeur trouvée il te faudra dire oui ou non :

Sub Commander()

    Dim Plage As Range
    Dim Cel As Range
    Dim Retour
    Dim Adr As String

    With Worksheets("Feuil1"): Set Plage = .Range(.Cells(2, 11), .Cells(.Rows.Count, 11).End(xlUp)): End With

    Set Cel = Plage.Find(Date, , xlValues, xlWhole)

    If Not Cel Is Nothing Then

        Adr = Cel.Address

        Do

            If Cel.Offset(, 2).Value = "En attente de commande" Then

                If MsgBox("Avez-vous commandé " & _
                          Cel.Offset(, -7).Value & " " & _
                          Cel.Offset(, -6).Value & " de " & _
                          Cel.Offset(, -9).Value & " pour le client " & _
                          Cel.Offset(, -10).Value & " ?", _
                          vbYesNo + vbQuestion, "Commande") = vbYes Then

                    Cel.Offset(, 2).Value = "commandé"

                Else

                    Retour = InputBox("A quelle date le produit sera commandable ?", "Commande")

                    If IsDate(Retour) Then

                        Cel.Value = DateSerial(Year(Retour), Month(Retour), Day(Retour))

                    Else

                        MsgBox "Date non valide !"

                    End If

                End If

            End If

            Set Cel = Plage.FindNext(Cel)

        Loop While Cel.Address <> Adr

    End If

End Sub

Merci Theze Encore une fois tout marche comme sur des roulettes!

En revanche la dernière partie de ma requête ne fonctionne pas en l'état :

Dernière chose, serait-il également possible de générer une msgbox qui m'indique qu'il n'y a "aucun produits à commander aujourd'hui" si les cellules en colonne K et M ne rentrent pas dans les critères prédéfinis ?

Auriez-vous une solution please ?

merci par avance

Hello les amis

Je me permets de relancer la discussion, quelqu’un aurait une idée pour solutionner ma problématique ?

Dernière chose, serait-il également possible de générer une msgbox qui m'indique qu'il n'y a "aucun produits à commander aujourd'hui" si les cellules en colonne K et M ne rentrent pas dans les critères prédéfinis ?

En clair, lorsque aucune cellule en colonne K n'est égale à la date du jour et lorsque aucune cellule en colonne M est égale à "En attente de commande", alors une msgbox apparaît avec le texte " Vous n'avez aucun produit à commander aujourd'hui!"

Encore merci pour votre aide

Bonjour,

Le code de Theze est ... comme toujours ... très bien construit ... !!!

Ci-joint la toute petite modification demandée ...

16test-commandes.xlsm (19.98 Ko)

Bonjour James,

Merci infiniment pour ton aide!

Cependant lorsque nous avons des cellules en colonne K = date du jour ET cellules en colonne M = "Commandé", la MsgBox "Vous n'avez aucun produit à Commander Aujourd'hui ..." n’apparaît pas...

Dans les autres cas de figure ça fonctionne bien!

Une idée pour solutionner le PB ?

Merci d'avance

cdt

Re,

Re ... petite modif ...

En espèrant que cela convienne ...

Re,

Désolé pour le bug ...

Cette fois ci ... j'ai fait le test ...

rebonjour,

Tout fonctionne parfaitement!

ça m'a tout l'air d’être du travail de chef!

Un grand merci à toi agent 007 (et à thèse aussi).

Je marque le topic en résolu

Génial ...

Oui ... tu peux remercier Thèze ... il a fait tout le boulot ... !!!

Rechercher des sujets similaires à "alertes msgbox inputbox fonction dates"