Une boucle qui sélectionne des données en fonction d'une condition

Bonjour à tous,

Je suis tout nouveau et je débute sur excel et vba.

Je veux réaliser une macro qui me préviens de faire un réapro, pour la parti consommation du stock je gère mais pour le réapro c'est plus compliqué. Le but de cette Macro est de me prévenir qu'il faut réaliser un réapro sur certains Ingrédients. La condition est que on me prévient d'un réapro si l'ingrédient à une quantité en stock de inférieur à 20. S'il y a qu'un seul ingrédient à réapprovisionner juste un MSGBOX suffit mais s'il y en a plusieurs j'aimerais les surligner en rouge. Pourriez-vous m'aider sur cette macro là s'il vous plait.

14reapro.xlsm (22.01 Ko)

Bonjour Ousss, le forum,

Une simple MFC (mise en forme conditionnelle) ne suffit-elle pas ?

7reapro.xlsm (23.69 Ko)

Cordialement,

Bonjour, pour compléter la mise en forme de Xorsankukai

15reapro.xlsm (23.39 Ko)
Sub Besoin_Réapro()

' mettre une macro s'il y'a besoin d'un réapro
Dim nbligne As Long
nbligne = Worksheets("Gestion de stock").Range("A65536").End(xlUp).Row
For i = 3 To nbligne
If Range("C" & i).Value < 20 Then temp = temp & Range("B" & i) & " - "
Next
MsgBox ("Merci de faire le réapro de : " & temp)
End Sub

Re,

Salut Xmenpl,

J'avais également codé le bouton,

Sub Besoin_Réapro()

' mettre une macro s'il y'a besoin d'un réapro

 Dim i%, dl%, msg As String
  With Sheets("Gestion de stock")
   dl = .Range("C" & Rows.Count).End(xlUp).Row
    For i = 3 To dl
     If .Range("C" & i) < 20 Then msg = msg & .Range("B" & i) & Chr(10)
    Next i
  End With
  MsgBox "Approvisionnement à prévoir pour: " & Chr(10) & Chr(10) & msg
End Sub

Amitiés,

Bonjour,

Je n'est pas les mots à part merci à vous grâce c'est un bon pas en plus sur mon apprentissage merci.

Salut Xmenpl,

J'avais également codé le bouton,

Amitiés,

La phrase sur la mise en forme m'a fait douter

Bonjour

Ma participation

6reapro-yal.xlsm (25.60 Ko)

Rebonjour, s'il vous plait dans la mesure du possible c'est possible de rajouter une condition c'est que si produit > 20 mettre un MSGBOX aucun réapro à prévoir s'il vous plait ?

Bonjour, je ne comprends pas bien la demande là ? la message box s'affiche à la fin avec la liste des noms <20.

A part arrêter la macro à chaque ligne de test pour faire afficher votre message aucun besoin de réapro car >20

çà sert à quoi ? si vous avez 350 lignes à tester et 2 réapros vous serez obligé de fermer la boite message 348 fois avant que la macro

ne finisse par afficher les 2 <20.

c'est se que je me disait j'ai essayer de le faire compliquer de fermer un message et le fermer 348 fois la solution initial me convient parfaitement merci. Mais le probleme c'est que meme à <20 j'ai le msg box qui s'ouvre comment faire pour que à <20 le msg box ne s'ouvre pas ou un msgbox qui affiche rien à prévoir.

Bonjour à tous,

Un essai...

Sub Besoin_Réapro()

' mettre une macro s'il y'a besoin d'un réapro

 Dim i%, dl%, msg As String, cpt%

 Application.ScreenUpdating = False

  With Sheets("Gestion de stock")
   dl = .Range("C" & Rows.Count).End(xlUp).Row: cp = 0
    For i = 3 To dl
     If .Range("C" & i) < 20 Then msg = msg & .Range("B" & i) & Chr(10): cpt = cpt + 1
    Next i
  End With
   If cpt > 0 Then
    MsgBox "Approvisionnement à prévoir pour: " & Chr(10) & Chr(10) & msg
   Else
    MsgBox "Aucun approvisionnement à prévoir"
   End If
End Sub
6reapro.xlsm (25.10 Ko)

Cordialement,

Re bonjour, ma version modifiée. " pas de réapro à chaque ligne et en fin de test les réapro à prévoir dans la dernière msgbox

11reapro.xlsm (23.69 Ko)

Bonjour,

MP: Je vous remercie de m'avoir aider cependant j'ai une dernière chose à vous demander je dois rédiger un livret développeur pour mon application hormis toutes mes macros il n'y a que la votre qui est pour moi très difficile à comprendre. Est-possible que vous me l'expliquer s'il vous plait ?

Sub Besoin_Réapro()

' mettre une macro s'il y'a besoin d'un réapro

 Dim i%, dl%, msg As String, cpt%  '..........Déclaration des variables  (https://www.excel-pratique.com/fr/vba/variables)
                                   '........ i% = i as integer : variable ligne ............(nombre donc integer)
                                   '........dl% = dl as integer : variable dernière ligne...(nombre donc integer)
                                   '........msg as string: variable message.................(texte donc string)
                                   '.......cpt% = cpt as integer : vaiable compteur........ (nombre donc integer)

 Application.ScreenUpdating = False '......désactive le rafraichissement de l'écran (évite le scintillement pendant la boucle)

  With Sheets("Gestion de stock") '........Agit sur cette feuille uniquement
   dl = .Range("C" & Rows.Count).End(xlUp).Row: cp = 0
   '.......................................dl= dernière ligne en fonction de la colonne C
   '.......................................cp= compteur ( à zéro en début de macro)
    For i = 3 To dl '......................boucle de la ligne 3 à la dernière
     If .Range("C" & i) < 20 Then msg = msg & .Range("B" & i) & Chr(10): cpt = cpt + 1
     '.....................................si valeur cellule en C <20,
     '.....................................on récupère la valeur de la cellule B dans msg
     '....................................(on rajoute à chaque fois d'où msg=msg & valeur cellule B)
     '.....................................on incrémente le compteur de 1
    Next i '...............................prochaine ligne
  End With
   If cpt > 0 Then '.......................si le compteur est non nul
    MsgBox "Approvisionnement à prévoir pour: " & Chr(10) & Chr(10) & msg
    '......................................on crée le message "Approvisionnement à prévoir pour: "
    '......................................+ 2 sauts à la ligne + le texte msg
   Else '..................................sinon
    MsgBox "Aucun approvisionnement à prévoir"
    '......................................on crée ce message "Aucun approvisionnement à prévoir"
   End If '................................fin de la condition
End Sub

Mais il y peut-être plus simple à faire.....

Cordialement,

Excellent merci beaucoup l'ami j'ai retenu votre solution qui est pour moi la plus simple.

Rechercher des sujets similaires à "boucle qui selectionne donnees fonction condition"