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?

2 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Quel langage svp ??
    0
    1. audrey
       
      Vba je veux créer une macro sous Excel 2003
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
    4. Audrey
       
      F894009

      La fonction Si est insérée en formule dans mon fichier
      0
    5. 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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. Audrey
       
      merci!!

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

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

      Merci :-)
      0
    3. 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
    4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
    5. Audrey
       
      merci, je viens de la tester mais elle ne prend en compte que la feuille 1.
      0