Créer message box au démarrage avec fonction si

Résolu/Fermé
Audrey - 29 juil. 2013 à 16:26
 Audrey - 31 juil. 2013 à 13:14
Bonjour,

Je cherche à créer une message box lors de l'ouverture d'un fichier, mais pas une simple message box.

Je vous explique, j'ai incorporé une fonction si dans mon fichier pour mettre en avant les retards de production et j'aimerais que s'affiche le nom des clients (en retard de production) dans le message au demarrage.

C'est possible?

A voir également:

2 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
29 juil. 2013 à 17:51
Bonjour,

Quel langage svp ??
0
Vba je veux créer une macro sous Excel 2003
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
30 juil. 2013 à 08:28
Bonjour,

j'aimerais que s'affiche le nom des clients (en retard de production) Je suppose que ces noms sont dans une plage de cellules.

j'ai incorporé une fonction si dans mon fichier Formule ou code VBA ??

A+
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
30 juil. 2013 à 08:50
Bonjour

quelle différence ?
Je cherche à créer une message box lors de l'ouverture d'un fichier, mais pas une simple message box.
0
F894009

La fonction Si est insérée en formule dans mon fichier
0
michel_m

Habituellement le message qui s'affiche est un message pré-défini, "bonjour"...
Ce que j'aimerais c'est que mon message alerte l'utilisateur qui ouvre le fichier que tels et tels clients sont en retard de production, en fonction de ce qui s'affiche dans mon dossier.

Je ne sais pas si c'est possible
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
30 juil. 2013 à 11:48
Et voilà!

Option Explicit
Const Retard As String = "attention retard commande!"

Private Sub Workbook_Open()
Dim Derlig As Byte, Nbre As Byte, Cptr As Byte, Lig As Byte, Liste As String
'MsgBox "Ca marche"

With Sheets(1)
     Derlig = .Columns("B").Find("", .Range("B2"), xlValues).Row - 1
     'nbre de retard
     Nbre = Application.CountIf(.Range("K3:K" & Derlig), Retard)
     If Nbre = 0 Then
          MsgBox "aucun retard de commande"
          Exit Sub
     Else
          Lig = 2
          For Cptr = 1 To Nbre
               'recherche "retard"
               Lig = .Columns("K").Find(Retard, .Cells(Lig, "K"), xlValues).Row
               'compile la liste de clients en retard
               Liste = Liste & .Cells(Lig, "B") & "; "
          Next
          'enlève le dernier "; "
          Liste = Left(Liste, Len(Liste) - 2)
          MsgBox "Clients en retard commande: " & vbLf & Liste, vbExclamation
      End If

End With
End Sub


0
merci!!

je vais tester et essayer de comprendre le cheminement, j'aime comprendre ce que je fais.

Encore merci
0
Elle marche parfaitement bien, c'est tout à fait ce que je cherchais.

Merci :-)
0
Pourriez vous m'aider pour une dernière chose?

J'aimerais qu'il recherche les retards sur toutes les feuilles du fichier, j'ai essayé plusieurs codes ici :
Derlig = ici .Columns("B").Find("", .Range("B2"), xlValues).Row - 1

Auriez vous une idée?

merci par avance
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 30/07/2013 à 17:45
Option Explicit
Const Retard As String = "attention retard commande!"

Private Sub Workbook_Open()
Dim Feuille As Byte, Derlig As Byte, Nbre As Byte, Cptr As Byte, Lig As Byte, Liste As String

For Feuille = 1 To ThisWorkbook.Sheets.Count
     With Sheets(Feuille)
          Derlig = .Columns("B").Find("", .Range("B2"), xlValues).Row - 1
          'nbre de retard
          Nbre = Application.CountIf(.Range("K3:K" & Derlig), Retard)
          If Nbre = 0 Then
               MsgBox "aucun retard de commande"
               Exit Sub
          Else
               Lig = 2
               For Cptr = 1 To Nbre
                     'recherche "retard"
                    Lig = .Columns("K").Find(Retard, .Cells(Lig, "K"), xlValues).Row
                    'compile la liste de clients en retard
                    Liste = Liste & .Cells(Lig, "B") & "; "
                Next
          End If
     End With
Next
               'enlève le dernier "; "
               Liste = Left(Liste, Len(Liste) - 2)
               MsgBox "Clients en retard commande: " & vbLf & Liste, vbExclamation

End Sub
0
merci, je viens de la tester mais elle ne prend en compte que la feuille 1.
0