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é
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 ...
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,
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 ...