Affiche X msgbox en 1

Fermé
Cédric - Modifié par Cédric le 20/07/2016 à 09:27
f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 - 20 juil. 2016 à 11:14
Bonjour,

Faisant un fichier de gestion de stock, je veux faire un affichage, dans ma macro, qui sort un msgbox quand il y a une erreur dans les stocks (ex : stock négatif).
voici mon code :

If (Range("B" & i).Value < 0) Then
MsgBox ("Il y a des stocks négatifs", vbOKOnly + vbExclamation, "Erreur")
End If


Sauf que la macro va me sortir un msgbox par erreur...
- Y a t il moyen pour qu'il affiche qu'une seule msgbox ?
- S'il n'y a qu'une seule erreur, qu'il affiche "il y a un stock négatif" au lieu de "il y a des stocks négatifs".
- Ainsi que d'afficher toute la liste des erreurs en dessous ?
- Et créer un deuxième msgbox qui lui informera (avec un vbInformation) qu'une liste a été créé dans la Feuille de calcule appelé "Faire la commande".

voici ma macro complète :

Sub Test()
' Test Macro
Dim premiereColonne As Variant

premiereColonne = Sheets("Faire la commande").Range("A1").End(xlToRight).Column + 1
'Récupère la 1ère colonne non vide
Sheets("Faire la commande").Cells(1, premiereColonne).Value = "Commande du " & Day(Date) & "/" & Month(Date) & "/" & Year(Date)
' On met la commande et la date
Sheets("Faire la commande").Cells(2, premiereColonne).Value = "Références"
'Le titre Références en dessous
Sheets("Faire la commande").Cells(2, premiereColonne).Interior.Color = RGB(230, 60, 230)
'Le remplissage
Sheets("Faire la commande").Cells(2, premiereColonne).ColorIndex = RGB(255, 255, 0)
'La couleur
j = 3
'1ère ligne de la commande
i = 1
'1ère ligne de la liste des articles
While Sheets(Range("A" & i).Value) <> 0
'Boucle sur tous les articles
If (Range("B" & i).Value < Range("C" & i).Value) Then
If (Range("F" & i).Value > 0) Then
Worksheets("Faire la commande").Cells(j, premiereColonne).Value = Range("A" & i).Value
j = j + 1
End If
End If
If (Range("B" & i).Value < 0) Then
MsgBox ("Il y a des stocks négatifs :", vbOKOnly + vbExclamation, "Erreur")
End If
i = i + 1
'Passage à la ligne suivante
Wend
End Sub


Au passage, pouvez vous vérifier si cette macro est bien écrite ?

Merci beaucoup
A voir également:

1 réponse

f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 1 707
Modifié par f894009 le 20/07/2016 à 09:43
Bonjour,

Sub Test()
    ' Test Macro
    Dim premiereColonne As Variant
    With Sheets("Faire la commande")
        'Récupère la 1ère colonne non vide
        premiereColonne = .Range("A1").End(xlToRight).Column + 1
        ' On met la commande et la date
        '.Cells(1, premiereColonne).Value = "Commande du " & Day(Date) & "/" & Month(Date) & "/" & Year(Date)
        .Cells(1, premiereColonne).Value = "Commande du " & Date
        'Le titre Références en dessous
        .Cells(2, premiereColonne).Value = "Références"
        'Le remplissage
        .Cells(2, premiereColonne).Interior.Color = RGB(230, 60, 230)
        '.Cells(2, premiereColonne).ColorIndex = RGB(255, 255, 0)
    End With
    'La couleur
    j = 3
    '1ère ligne de la commande
    i = 1
    '1ère ligne de la liste des articles
    'While Sheets(Range("A" & i).Value) <> 0
    While Range("A" & i).Value <> 0
        'Boucle sur tous les articles
        If (Range("B" & i).Value < Range("C" & i).Value) Then
            If (Range("F" & i).Value > 0) Then
               Worksheets("Faire la commande").Cells(j, premiereColonne).Value = Range("A" & i).Value
               j = j + 1
           End If
        End If
        If (Range("B" & i).Value < 0) Then
            Msg = "B" & i & vbNewLine
        End If
        i = i + 1
        'Passage à la ligne suivante
    Wend
    If Msg <> "" Then
        MsgBox "Il y a des stocks négatifs cellules:" & vbNewLine & Msg, vbOKOnly + vbExclamation, "Erreur"
    End If
End Sub
1
Quand je veux exécuter la macro, ça ne fonctionne pas ; il m'est affiché :
"Erreur d'exécution '1004'
Erreur définie par l'application ou l'objet"
et quand je fais déblocage, il me surligne toutes les lignes (non commentées) à partir de la 10...
A la ligne 15, vous l'avez passé en commentaire ; pourquoi ? c'était pas ce qui définissait la couleur du texte dans ma cellule ?

sinon, où l'on modifie la macro, mon curseur est un gros bloc noir au lieu de la petite barre ; comment fait on pour repasser avec la petite barre ? :/
0
f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 1 707 > Cédric
20 juil. 2016 à 10:29
Re,

quand je fais déblocage, il me surligne toutes les lignes (non commentées) à partir de la 10.. Non, une ligne a la fois

Quand vous avez l'erreur, clic sur debugage et passez le curseur souris sur
premiereColonne 
pour voir ca valeur

N'ayant pas votre fichier avec donnees, ai fait un test et chez moi ca marche !!!!

A la ligne 15 Ben oui, mais celle du dessus le fait deja et sans erreur
0
puis-je avoir votre adresse mail pour vous envoyer mon fichier ?

sauf qu'a la ligne 15, je veux changer la couleur du texte de la cellule alors qu'a la ligne 14, c'est le remplissage qui est changé...

pour la valeur de
premiereColonne
, elle est de 16385
0
f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 1 707 > Cédric
20 juil. 2016 à 10:40
Re,

Autant pour moi, couleur texte sans erreur
 .Cells(2, 2).Font.Color = RGB(255, 255, 0)


elle est de 16385 Un peu trop, max 16 384 colonnes doit y avoir un bleme!!

pour votre fichier, passez par mes MP
0
Cedric62232 Messages postés 1 Date d'inscription mercredi 20 juillet 2016 Statut Membre Dernière intervention 20 juillet 2016
Modifié par Cedric62232 le 20/07/2016 à 11:00
ça ne fonctionne pas par MP...
un problème, je me doute puisque la macro ne fonctionne pas lol
0