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

Résolu
Audrey -  
 Audrey -
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

Quel langage svp ??
0
audrey
 
Vba je veux créer une macro sous Excel 2003
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
Audrey
 
F894009

La fonction Si est insérée en formule dans mon fichier
0
Audrey
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
Audrey
 
merci!!

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

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

Merci :-)
0
Audrey
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
Audrey
 
merci, je viens de la tester mais elle ne prend en compte que la feuille 1.
0