résumer msgbox vba dans un tableau

lauriane

XLDnaute Nouveau
Bonjour!

Comme le titre l'indique, je cherche un moyen de résumer mes macros créées et leurs résultats dans un tableau.

J'ai créé un tableau d'échéances de formations des salariés, avec 2 macros pour me signaler, à l'ouverture du classeur, les formations bientôt invalides et celles "périmées" et , en plus, une mise en forme conditionnelle pour mettre en avant ces échéances-ci.

Après moultes essais avec les fonctions SI, RECHERCHEV et autres, je ne trouve toujours pas...

J'aimerais pouvoir résumer les résultats (selon la date du jour):
- les formations à refaire
- les périmées
- les commentaires que j'ai pu insérer

Merci d'avance ;)
 

Pièces jointes

  • modele2.xlsm
    49.8 KB · Affichages: 47
Dernière modification par un modérateur:

lauriane

XLDnaute Nouveau
Re : résumer msgbox vba dans un tableau

Voici la macro créée pour mes alertes :

Sub Workbook_Open()
For Each c In Range("f10:ar" & [B65000].End(3).Row)
If IsDate(c.Value) Then
If Date < c.Value And Date + 3 >= c.Value Then
tx = tx & Cells(c.Row, 2) & " " & Cells(9, c.Column - 1) & " " & Cells(9, c.Column) & " " & c.Text & vbCr
c.Select
End If
End If
Next

Dim r As Range
Dim msg As String

With SuiviFormations

For Each r In .Range("E10:AL" & .Range("B10").CurrentRegion.Rows.Count)
If IsDate(r.Value) Then
If r.Value >= .[C4].Value And r.Value <= .[C2].Value Then
rx = rx & "Formation : " & .Cells(8, r.Column).MergeArea.Range("A1").Value & " / " & "Nom : " & .Range("B" & r.Row).Value & "/" & "Echéance : " & r.Value & vbCrLf
End If
End If
Next

End With



If tx <> "" Then MsgBox tx, vbInformation Or vbOKOnly, "Formations urgentes"
If rx <> "" Then MsgBox rx, vbInformation Or vbOKOnly, "Formations HS"


End Sub
 

Paf

XLDnaute Barbatruc
Re : résumer msgbox vba dans un tableau

Re,

ci dessous une adaptation de la première partie de votre macro pour obtenir le résultat dans la feuille Recap, qui doit exister.
Code:
Dim MonTab(), x As Integer
For Each c In Range("f10:ar" & [B65000].End(3).Row)
    If IsDate(c.Value) Then
        If Date < c.Value And Date + 3 >= c.Value Then
            x = x + 1
            ReDim Preserve MonTab(1 To 4, 1 To x)
            MonTab(1, x) = Cells(c.Row, 2)
            MonTab(2, x) = Cells(9, c.Column - 1)
            MonTab(3, x) = Cells(9, c.Column)
            MonTab(4, x) = c.Text
        End If
    End If
Next

Worksheets("Recap").Range("A1").Resize(UBound(MonTab, 2), UBound(MonTab, 1)) = Application.Transpose(MonTab)
MonTab.erase

à adapter pour la deuxième partie

A+
 

lauriane

XLDnaute Nouveau
Re : résumer msgbox vba dans un tableau

Re,

ci dessous une adaptation de la première partie de votre macro pour obtenir le résultat dans la feuille Recap, qui doit exister.
Code:
Dim MonTab(), x As Integer
For Each c In Range("f10:ar" & [B65000].End(3).Row)
    If IsDate(c.Value) Then
        If Date < c.Value And Date + 3 >= c.Value Then
            x = x + 1
            ReDim Preserve MonTab(1 To 4, 1 To x)
            MonTab(1, x) = Cells(c.Row, 2)
            MonTab(2, x) = Cells(9, c.Column - 1)
            MonTab(3, x) = Cells(9, c.Column)
            MonTab(4, x) = c.Text
        End If
    End If
Next

Worksheets("Recap").Range("A1").Resize(UBound(MonTab, 2), UBound(MonTab, 1)) = Application.Transpose(MonTab)
MonTab.erase

à adapter pour la deuxième partie

A+


Alors, débutante en macro, je n'ai pas voulu m'enflammer et j'ai préféré commencer avec une formule :
(dans le tableau qui recapitulera les formations en retard):

en gros, si la date (en G10 pour le 1er salarié) est supérieure à la date du jour (dans les cellules C2:C3), ET si la case de la formation contient "X" (F10), alors afficher (dans le tableau des retards), le nom et le prénom (en D10)

=SI(ET('Suivi Formations'!G10>'Suivi Formations'!C2:C3);SI(ET('Suivi Formations'!F10;"X");'Suivi Formations'!D10;0))

mais #valeur! s'affiche.... :confused:
 

Discussions similaires

Statistiques des forums

Discussions
312 396
Messages
2 088 055
Membres
103 709
dernier inscrit
FrrankX