Msgbox à afficher
Bonsoir à tous, Bonsoir le Forum,
Je souhaite votre aide précieux en espérant de bien m’exprimer pour le sujet.
J’ai récupéré un fichier sur le forum qui fonctionne très bien dans son intégrité qui envoie un message d’alerte sur une des feuilles souhaitées du classeur quand une colonne (de notre choix) devient une valeur négative.
J’ai voulu l’adapter à mon classeur ici nommé « Gestionbiblio.xlsm » qui fonctionne partiellement càd si j’introduis une valeur par saisie moi-même le ‘msgbox’ fonctionne l’affichage est parfait tandis que dans mon fichier orignal j’ai plusieurs feuilles et les résultats des calcules se font via des fonctions RechercheV et ces valeurs sont incrémentées via un bouton dit macro pour la colonne D de ma feuille [GESTION BIBLIO]). Quand on l’indique manuellement càd en écrivant une saisie plus grande que le colonne C de ma feuille [GESTION BIBLIO]) alors automatiquement comme indique la formule (=C-D) devient une valeur négative et le message d’alerte « Msgbox » se met en route sur la feuille DETAIL JOURN. C’est ce que je souhaite mais ce message d’alerte se produit uniquement avec une saisie manuelle.
Mais quand je place les codes dans mon fichier original donc pour cette colonne D de ma feuille [GESTION BIBLIO] la macro fonctionne bien càd la valeur de la colonne [E : E] pour la ligne concerner devient bien négative comme il se doit mais à ce moment-là le msgbox ne s’affiche plus.
Je joins le fichier récupéré et adapté en nom et aussi le code VBA de la macro sur mon fichier original ;
Comment puis-je l’adapter.
En vous remerciant d’avance.
Sub Archiver_Rapport()
Dim Ligne%, Whd As Worksheet, Wd As Worksheet
Dim i, Wdd As Worksheet
Dim NomFichier As String, Chemin As String
Application.ScreenUpdating = False
Application.EnableEvents = False
Set Whd = Sheets("Historique_Biblio")
Set Wd = Sheets("DETAIL JOURN.")
Set Wdd = Sheets("GESTION BIBLIO")
NomFichier = "Rapprt" & Format(Now() - 1, " dd-mm-yyyy") ".pdf"
Chemin = "C:\archive_bibliothèque"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & NomFichier
Ligne = Whd.Range("A" & Rows.Count).End(xlUp).Row + 1
Whd.Range("A" & Ligne).Value = Wd.Range("B6").Value
Whd.Range("B" & Ligne).Value = Wd.Range("B8").Value
Whd.Range("C" & Ligne).Value = Wd.Range("B11").Value
Whd.Range("D" & Ligne).Value = Wd.Range("D7:E7:F7").Value
Whd.Range("E" & Ligne).Value = Wd.Range("D8:E8:F8").Value
Whd.Range("F" & Ligne).Value = Wd.Range("D9:E9:F9").Value
Whd.Range("G" & Ligne).Value = Wd.Range("D10:E10:F10").Value
Whd.Range("H" & Ligne).Value = Wd.Range("D11").Value
Whd.Range("I" & Ligne).Value = Wd.Range("F36").Value
Whd.Range("J" & Ligne).Value = Wd.Range("F41").Value
Whd.Range("K" & Ligne).Value = Wd.Range("B8").Value
Whd.Hyperlinks.Add Anchor:=Whd.Range("K" & Ligne), Address:=Chemin & NomFichier
Ligne = Sheets("GESTION BIBLIO").Range("C" & Rows.Count).End(xlUp).Row + 1
Sheets("GESTION BIBLIO").Range("A" & Ligne).Value = Wd.Range("B8").Value
Sheets("GESTION BIBLIO").Range("B" & Ligne).Value = Wd.Range("B11").Value
For i = 14 To 28
If Wd.Range("B" & i).Value = "" Then Exit For
Sheets("GESTION BIBLIO").Range("C" & Ligne).Value = Wd.Range("B" & i).Value
Sheets("GESTION BIBLIO").Range("D" & Ligne).Value = Wd.Range("C" & i).Value
Sheets("GESTION BIBLIO").Range("E" & Ligne).Value = Wd.Range("D" & i).Value
Ligne = Ligne + 1
Next
Sheets("Générale").Range("B2") = Sheets("Générale").Range("B2") + 1
Sheets("Générale").Range("C2") = Sheets("Générale").Range("C2") + 1
Wd.Range("D7:F7").ClearContents: Wd.Range("B14:B28").ClearContents
Wd.Range("D14:D28").ClearContents: Wd.Range("B30:E34").ClearContents
Wd.Range("F37").ClearContents: Wd.Range("F39").ClearContents: Wd.Range("F40").ClearContents
Wd.Range("D7").Select
Application.ScreenUpdating = True
Application.EnableEvents = True
End SubMerci
Bonjour Thibet,
Vous devriez vous relire
Ceci dit, lorsque je regarde le fichier, le MsgBox intervient sur l'évènement Change de la feuille
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("Tableau1[VENDU/LOCATION]")) Is Nothing And Target.Count = 1 Then
If Target.Offset(0, 1) < 0 Then
Sheets("DETAIL JOURN.").Activate
MsgBox "Attention : Valeur négative pour le/les livre(s) " & Target.Offset(0, -3).Value & " de " & Target.Offset(0, 1).Value, vbInformation + vbOKOnly
End If
End If
End SubDans votre macro, vous désactivez ces évènements
Application.EnableEvents = FalseDonc forcément, vous n'avez plus de message
A+
Bonjour BrunoM45,
Vous avez raison !
En ce qui concerne dans mon fichier orignal ( Application.EnableEvents = False ), est bien désactivé mais pas de changement.
Pourriez vous revoir le fichier ci-dessous.
Merci et A+
Bonsoir le Forum, Bonjour BrunoM45,
Comment modifier ce code pour que le Msgbox fonctionne via la fonction RechercheV et non par un saisie.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("Tableau1[VENDU/LOCATION]")) Is Nothing And Target.Count = 1 Then
If Target.Offset(0, 1) < 0 Then
Sheets("DETAIL JOURN.").Activate
MsgBox "Attention : Valeur négative pour le/les livre(s) " & Target.Offset(0, -3).Value & " de " & Target.Offset(0, 1).Value, vbInformation + vbOKOnly
End If
End If
End SubComme dans mon fichier dont je l'ai détaillé sur les 2 pages ci-dessous.
Merciii
Bonjour Thibet,
Je ne vois pas comment vous voulez vous y prendre avec votre stock
Comment peut-on faire une gestion de stock sur uniquement des quantités, sans référence à un article
Bonne chance
Bonjour BrunoM45,
Effectivement vous avez Raison ! sans réf. pas de popup mais est-ce que comme ça peut fonctionner. (Ajouté le tableau comme nouvelle feuille stock avec réf.)
Merci
A+
Bonsoir BrunoM45, Bonsoir le Forum,
Un fichier qui pourrais peut-être mettre en place le fonctionnement du msgbox, dans mon classeur ci-dessous la feuille 'gestion stock' la colonne E devienne négatif (via macro-feuille "Rapport" image dossier noir) mais le popup toujours pas présent, mais si je l'intoduis manuellement le popup s'affiche.
Pourriez-vous m'aider svp
Merci d'avance
A+
Bonjour Thibet
J'ai trouvé CECI qui pourrait peut-être vous intéressé
Je n'irai pas plus en avant sur le sujet, vous confondez toujours un évènement Change (modification faite par l'humain)
avec une modification par macro
Bonne chance
Bonjour BrunoM45,
Merci pour ce lien, mais je travail avec mon excel et j'ai pas mal de tableaux qui fonctionnent.
Donc si je comprends bien on ne sais pas faire apparaître un Msgbox pour une cellule d'un résultat macro, je pense qu'excel devrait le faire mais bon.
Merci
A+
je ne pers jamais l'espoir.
Re,
Non vous avez mal compris
Je dis simplement qu'un évènement n'est actif que s'il est fait manuellement
Vous pouvez très bien faire une boucle pour mettre à jour votre stock (je n'ai pas compris votre principe brouillon pour moi)
et tester dans cette boucle le niveau de stock et afficher un MsgBox si valeur négative
Voilà ce que j'essaye d'exprimer
Bonjour BrunoM45,
Merci pour votre réponse
Est-ce-que un boucle ralentirai le fonctionnement du classeur?
Merci encore une fois.
A+
Thibet.
bonjour Thibet, BrunoM45, le fil,
un autre essai, l'évenement Calcule, mais peut-être celui sera là trop souvent ou une macro à appeler à la fin de votre macro : voir macro "BSALV"
Bonjour BsAlv,
Pourrons l'appliquer à mon classeur ci-dessous. Est-ce que c'est possible j'ai déjà la macro.
A+
ce n'est pas clair ce que vous voulez après cette macro ..., un essai
Bonjour BsAlv,
Tout d'abord je veux te remercier.
Si c'est possible à l'exécution du macro (img dossier noir) qui se trouve dans ma feuille "Rapport" après avoir choisi la quantité pour n'importe quel produit , si la quantité deviennte négative dans gestion stock renverrai la popup.
Manuellement ça fonctionne. Mais ici le but c'est de le faire fonctionner via le macro.
Merci
A +
si je fais cela, je reçois un msgbox "rapport up to date" et puis un msgbox s'il y a des quantités négatives ...
Alors il manque quoi ?
Un GRAND MERCI
Merci
A+