IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Message d'alerte si nombre insuffisant


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut Message d'alerte si nombre insuffisant
    Bonjour le forum,

    Dans le fichier joint, j'ai un tableau Excel où sont inscrit les chiffres concernant une gestion de stock.
    Dans la colonne G se trouve le stock restant.
    Je souhaiterai à l'aide de Vba et de la vôtre, mettre en place un message d'alerte lorsqu'un chiffre est inférieur à 20 et cela dès l'ouverture du fichier.
    Il faudrait que dans ce message figure, l'intitulé de la colonne A et de la colonne B se trouvant sur la même ligne que le chiffre inférieur à 20.

    Merci par avance

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Salut NEC,

    tu fais quoi quand tu as plus d'une ligne correspondant au critère ?
    (Dans ton exemple, toute la colonne G est à 0 )

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Hello,
    Tu veux réellement l'intitulé de colonne ou les données figurant dans les cellules colonnes A et B de la fameuse ligne ?
    Citation Envoyé par NEC
    Il faudrait que dans ce message figure, l'intitulé de la colonne A et de la colonne B se trouvant sur la même ligne que le chiffre inférieur à 20.
    Pour parcourir ta colonne A tu peux parcourir ta plage de cellules de la colonne avec For each cell in plage... Next, et tester la valeur de cell.
    Mais tu as une autre méthode plus rapide consistant à travailler sur la plage de données en tant que tableau à deux dimensions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
    Dim Tablo As Variant
         Tablo = Worksheets("Feuil1").Range("A1:A" & Split(Worksheets("Feuil1").UsedRange.Address, "$")(4)).Value
         For i = 1 To UBound(Tablo)
              If Tablo(i, 1) < 20 Then MsgBox "t'as ça " & Tablo(i,1) & " à la ligne " & i & _
                 vbcrlf & "épi ça " &  Worksheets("Feuil1").Cells(i,2).value & " sur la colonne B"
         Next
    End Sub
    Dans le tableau ci-dessus, la seconde dimension représente la colonne (unique dans ce cas) de ta plage de données.
    Bon après-midi

  4. #4
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    C'est une bonne question.
    Dans mon exemple tout est à zéro car je n'ai pas encore les chiffres du stock.
    Pour répondre à ta question, et si cela est possible, il serait super que cela apparaisse dans le même message.

    Du style "Attention : Stock insuffisant pour les produits suivants :
    - ACEA - Billet unique
    - Ciné Bank Location - Le ticket"
    Ceci n'est qu'un exemple d'idée, si cela est réalisable.
    Merci

  5. #5
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour ouske'l'nor,

    Ce qui m'intéresse c'est l'intitulé des données se trouvant dans les colonnes A et B.

    Sinon, concernant ton code, je le met où ? Je pensais le mettre dans ThisWorkBook dès l'ouverture du fichier, qu'en penses-tu ?

  6. #6
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
             If Tablo(i, 1) < 20 Then MsgBox "t'as ça " & Tablo(i,1) & " à la ligne " & i & _
                 vbcrlf & "épi ça " &  Worksheets("Feuil1").Cells(i,2).value & " sur la colonne B"
    Et Ousk, à Caen, ils ne parlent pas le Chti.

  7. #7
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Citation Envoyé par NEC14 Voir le message
    C'est une bonne question.
    Dans mon exemple tout est à zéro car je n'ai pas encore les chiffres du stock.
    Pour répondre à ta question, et si cela est possible, il serait super que cela apparaisse dans le même message.

    Du style "Attention : Stock insuffisant pour les produits suivants :
    - ACEA - Billet unique
    - Ciné Bank Location - Le ticket"
    Ceci n'est qu'un exemple d'idée, si cela est réalisable.
    Merci
    Si c'était pour moi, je le ferais autrement, du genre, mettre en couleur tous les stock insuffisants et afficher un message à l'ouverture pour dire que les stock en couleurs sont insuffisant puis afficher une page avec un filtre élaboré où on ne verrait que les articles avec stock faible.

    Car ton message, une fois cliqué ok .... tu as oublié la moitié.

    mais ce n'est pas pour moi.

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Hello Nec (salut Goodzelda...)
    Teste mon code sur des données existantes. Je dois m'absenter alors si ça ne va pas, Godzestla saura t'aider, il a visiblement réussi à traduire la ligne de code qui dit tout
    Bon après-midi

  9. #9
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    voilà j'ai tapé ce code dans WorkBook_Open() dans mon fichier.

    Mais l'affichage ne me donne pas l'intitulé des éléments concernés en colonnes A et B
    Je ne sais pas par quoi remplacer "à la ligne" et "épi ça" et "sur la colonne B"
    Pouvez-vous m'aider à le terminer s'il vous plait ?
    Merci par avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub WorkBook_Open()
    Dim Tablo As Variant
         Tablo = Worksheets("Feuil1").Range("A1:A" & Split(Worksheets("Feuil1").UsedRange.Address, "$")(4)).Value
         For i = 1 To UBound(Tablo)
              If Tablo(i, 1) < 20 Then MsgBox "Attention le stock est insuffisant pour : " & Tablo(i, 1) & " à la ligne " & i & _
                 vbCrLf & "épi ça " & Worksheets("Feuil1").Cells(i, 2).Value & " sur la colonne B"
         Next
    End Sub

  10. #10
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    RE,
    voilà mais cela ne fait pas tout ce que cela doit car le message du MSGBOX est limité à 1024 Bytes.

    je te laisse le soin de gérer cela et de découper le message en bloc, car ici, il n'affiche les erreurs que pour les 25 premiers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Private Sub Workbook_Open()
    Dim msg As String
    Dim insuf As Boolean
    Dim Tablo As Variant
    msg = ""
    insuf = False
         Tablo = Worksheets("Feuil1").Range("G1:G" & Split(Worksheets("Feuil1").UsedRange.Address, "$")(4)).Value
         For i = 4 To UBound(Tablo)
              If Tablo(i, 1) < 20 Then
                If insuf = False Then
                   insuf = True
                   msg = "Attention le stock est insuffisant pour : " & vbCrLf
                End If
                msg = Trim(msg) & Worksheets("Feuil1").Cells(i, 1).Value & " " & Worksheets("Feuil1").Cells(i, 2).Value & " : " & Worksheets("Feuil1").Cells(i, 7).Value & " (Ligne" & i & ")" & vbCrLf
              End If
         Next
         If insuf Then
          MsgBox msg
        End If
    End Sub

  11. #11
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Merci Godzestla, c'est exactement ce qu'il me fallait.
    Concernant ton interrogation, il n'y aura jamais plus de 25 lignes concernées.
    Encore un grand merci.

    Bien que si tu pouvais me dire comment mettre "Attention ..." en rouge ce serait un plus. Mais bon ce n'est que du décor.

  12. #12
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Attention, le nombre de ligne 25 dépend du contenu. la limite est 1024 bytes.

    Pour le rouge, AUCUNE IDEE. Sorry.

  13. #13
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    ce n'est pas grave. Encore merci pour ton aide.
    A+

  14. #14
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Pour le fun, j'ai fait ma version avec un filtre élaboré.

    A toi de voir : le code est au même endroit. (j'ai mis le fichier en attachement).

    j'ai du renommer ta colonne A en Nature (Objet est un mot réservé) et la colonne J en Evolution (Variation est un mot réservé).

    le critère de sélection est dans la feuille "Select".
    Les stocks Faibles viennent dans la feuille "Stock Faible"


    Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    Private Sub Workbook_Open()
    Dim msg As String
    Dim insuf As Boolean
    Dim Tablo As Variant
     
         insuf = False
         Sheets("Stock faible").Cells.ClearContents
         Tablo = Worksheets("Feuil1").Range("G1:G" & Split(Worksheets("Feuil1").UsedRange.Address, "$")(4)).Value
         For i = 4 To UBound(Tablo)
              If Tablo(i, 1) < 20 Then
                   insuf = True
                   Exit For
              End If
         Next
         If insuf Then
                MsgBox "Stock Insuffisant sur les articles présentés dans la feuille (Stock faible)"
                Sheets("Stock faible").Select
                Selection.ClearContents
                Sheets("Stock faible").Select
                Range("A1").Select
                Sheets("Feuil1").Range("A3:J" & Worksheets("Feuil1").UsedRange.Rows.Count).AdvancedFilter Action:=xlFilterCopy, _
                  CriteriaRange:=Sheets("Select").Range("A1:A2"), CopyToRange:=Range("A1"), _
                  Unique:=False
                Sheets("Stock faible").Select
            Else
                Sheets("Feuil1").Select
     
        End If
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. message d'alerte sous excel
    Par kivala dans le forum Excel
    Réponses: 1
    Dernier message: 17/10/2005, 12h56
  2. Message d'alerte
    Par cciocc dans le forum ASP
    Réponses: 8
    Dernier message: 12/05/2005, 10h34
  3. Message d'alerte
    Par pmboutteau dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/03/2005, 11h28
  4. Boite de message d'alerte
    Par JustinT dans le forum ASP
    Réponses: 5
    Dernier message: 27/05/2004, 23h46
  5. Réponses: 9
    Dernier message: 24/03/2004, 12h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo