Recevoir un mail à un seuil de stock

Bonjour à tous,

N'étant pas doué sur excel, voici ma demande :
Nous avons du matériel confidentiel (non visible sur le fichier en pièce jointe) avec un inventaire à faire régulièrement et je souhaite être averti par mail lorsque la quantité minimale de ces matériels est atteinte.
Il y a un code couleur appliqué sur la quantité disponible dans le local, vert > à la quantité max, orange <= à la quantité max et rouge <= à la quantité mini.
Il y a environ 300 lignes sur l'inventaire, je souhaite également pouvoir moduler les lignes à prendre en compte avec l'envoi automatique de mail (avec 3 destinataires différents). Les mails à prendre en compte pour le test sont damiendebuc@laposte.net et damien.debucourt@gmail.com

Je ne sais pas s'il est plus facile d'appliquer un code lié aux quantités ou à la couleur de la cellule.
J'ai vu qu'il y avait des sujets vraiment similaires mais ne manipulant pas le code, c'est assez compliqué pour moi.
Serait-il possible de faire une plage d'alerte prenant les lignes B2 à B5, puis B10, puis B16 à B18 par exemple, que je vois comment cela se traduit en ligne de code ?

Merci d'avance pour votre collaboration.

Bonjour et

En partant du fichier de BrunoM45 qui n'est plus disponible sur le site tu peux avoir un truc comme ça :

Une question est posée lorsque tu sauvegarde le fichier (Veux-tu envoyer le mail).

A adapter

A+

Super !!
C'est exactement ce qu'il me fallait, merci pour ton retour
J'ai essayé de le faire à ma sauce sur mon fichier mais ça me met un défaut de variable à propos de la feuille, du coup j'ai fait un copier/coller sur ton fichier.
Je ne comprends pas comment définir la feuille à laquelle je souhaite appliquer le code. (DerLigne = Feuil1.Cells(Rows.Count, 1).End(xlUp).Row)

Concernant cette ligne : Set Range_Besoin = Feuil1.Range(Feuil1.Cells(1, 3), Feuil1.Cells(1, 10))
Je souhaiterais modifier les colonnes affichées dans ce sens : afficher colonne 3 à 5, la 8 puis la 10 et donc "masquer" la 6,7 et 9.

Merci pour tout.

Bonjour,

La Feuil1 correspond au nom de la feuille depuis VBA,

image

Si la feuille ou se situe ton tableau est la Feuil3 (Poire), soit :
- tu remplace Feuil1 par feuil3

Soit :
- tu remplace Feuil1 par Sheets("Poire")

Tu peux faire un Ctrl + F pour faire une recherche et remplace la totalité des "Feuil1".

__________________________________________________

afficher colonne 3 à 5, la 8 puis la 10 et donc "masquer" la 6,7 et 9

Pour les colonnes a masquer, dans la "Function RangetoHTML(Rng As Range)"

Juste devant le commantaire "Publier la feuille dans un fichier HTML"

Rajoute ces lignes de code pour supprimer les colonnes non souhaitées.
(Pour info cette fonction créée un classeur temporaire ou ton tableau est stocké modifié et se retrouve en contenu de mail)

'........

  'Effacer les colonnes 1 / 2 / 6 / 7 / 9
  TempWb.Sheets(1).Columns(9).Delete
  TempWb.Sheets(1).Columns(7).Delete
  TempWb.Sheets(1).Columns(6).Delete
  TempWb.Sheets(1).Columns(2).Delete
  TempWb.Sheets(1).Columns(1).Delete

  ' Publier la feuille dans un fichier HTML
'........

Je pense que tu as déja modifié la partie de la procedure "Sub Envoi_Mail()" ou il faut changer la colonne 8 en 10 mais dans le doute.

Set Range_Besoin = Feuil1.Range(Feuil1.Cells(1, 1), Feuil1.Cells(1, 10))
        Set Range_Besoin = Union(Range_Besoin, Feuil1.Range(Feuil1.Cells(Ligne, 1), Feuil1.Cells(Ligne, 10)))

A+

Bonjour Geof52,

Une nouvelle fois merci de ton retour.
J'ai bien compris l'histoire des pages, je le modifierais en temps voulu c'est parfait.
Pour la procédure "Sub Envoi_Mail()", j'ai bien modifié les colonnes souhaitées.

En revanche en adaptant tes lignes de codes aux colonnes souhaitées, dès que je supprime mes quantités mini/maxi, ça me saute logiquement mon code couleur sur mes quantités dispo dans mon local.
Il y a t'il un moyen de "masquer" ces colonnes ce qui éviterait de perdre le code couleur ? J'ai essayé avec du .Hidden sans résultat

Bonne journée

Tu devrais joindre un fichier qui ressemble plus a ce que tu as en reel.

Avec ton fichier de base et ta demande "afficher colonne 3 à 5, la 8 puis la 10" j'ai ce resultat :

image

Donc pas colonne "Dispo local" et une colonne 10 vide

____________________________________________________________________________________________

Le delete ne supprime pas les couleurs sur tes dispo local, il supprime seulement les colonnes non souhaitées.

image

Des le début, je souhaite récupérer seulement les lignes avec les cellules rouge en colonne B avec : (dans la procedure "Sub Envoi_Mail()")

    'si "QUANTITÉ DISPO DANS LE LOCAL" <= "QUANTITÉ MINI" alors
    If Feuil1.Cells(Ligne, 2).Value <= Feuil1.Cells(Ligne, 3).Value Then

Oups, vraiment désolé, effectivement mon fichier de base n'est pas celui sur lequel je travaille, voici quelques lignes de mon réel fichier :

3test-modif.xlsm (27.75 Ko)

Après réflexion, je souhaite seulement récupérer les lignes dont la quantité à commander est > à 0, ce qui fonctionne très bien

    'si "QUANTITÉ À COMMANDER" > "0" alors
    If Feuil1.Cells(Ligne, 7).Value > 0 Then

Je voulais donc garder dans le mail les colonnes C,D,G,H,I et J mais en supprimant les E et F je perds mon code couleur, c'est pour cela que je souhaite masquer plutôt que supprimer. C'est uniquement esthétique dans le corps du mail, si c'est trop compliqué ou infaisable je supprime également la D.

Dernière question, si à l'avenir mon entreprise souhaite changer d'application mail et passer par Thunderbird (exemple), je ne comprends pas comment modifier le code pour y changer la nouvelle application. Je pense que ça se trouve ici

 ' Créer une instance Outllok et Mail
  Set OutApp = CreateObject("Outlook.Application")
  Set OutMail = OutApp.CreateItem(olMailItem)

Merci pour le temps passé

je perds mon code couleur,

Exact, je vois mieux le probleme mais ne sais pas comment le resoudre.
A moins de refaire une condition forcer la cellule avec une couleur de fond sans passé par une mise en forme conditionnelle.

Ou peut etre en modifiant une partie de :

    ' Publier la feuille dans un fichier HTML
  With TempWb.PublishObjects.Add(SourceType:=xlSourceRange, _
    Filename:=TempFile, Sheet:=TempWb.Sheets(1).Name, _
    Source:=TempWb.Sheets(1).UsedRange.Address, _
    HtmlType:=xlHtmlStatic)
    .Publish (True)
  End With

Mais je ne sais pas comment pour le moment.

Thunderbird

Jamais testé mais si il y a les même paramètre c'est possible qu'il n'y ai que "Set OutApp" a changer.
Il faudra mettre un arret sur les lignes pour la creation du mail et voir en variable local peuvent correspondre

image

A+

Je vais faire disparaître la colonne D, ça sera beaucoup plus simple
Pour le mail, j'ai essayé de bidouiller mais n'y parviens pas donc ça restera comme ça pour le moment, j'ouvrirai peut-être un nouveau post à ce moment là.

Encore merci pour ton aide
Bonne journée à toi

Rechercher des sujets similaires à "recevoir mail seuil stock"