[RESOLU] Création alerte VBA à l'ouverture

lauriane

XLDnaute Nouveau
Bonjour,

Je galères mais persiste à chercher et trouver la bonne macro pour créer une alerte qui s'ouvrirait à l'ouverture du fichier, pour me signaler les formations arrivant à échéance , en précisant le nom de la personne concernée.

Je mets mon fichier en PJ.

Si vous avez le moindre conseil ou modification je suis toute ouïe

Merci!!;)
 

Pièces jointes

  • modele 1 vba.xls
    186 KB · Affichages: 61
  • modele 1 vba.xls
    186 KB · Affichages: 63
Dernière modification par un modérateur:

youky(BJ)

XLDnaute Barbatruc
Re : Création alerte VBA à l'ouverture

Bonjour Lauriane,
Voici en macro comme tu le souhaite, il te faut activer les macros pour avoir le message à l'ouverture.
Bienvenue pour ton 1er post et ma petite fille s'appelle comme toi alors bon j'ai foncé........
N'hésite pas à revenir si besoin de plus d'explications
Bruno
 

Pièces jointes

  • modele 1 vba.xls
    215.5 KB · Affichages: 98
  • modele 1 vba.xls
    215.5 KB · Affichages: 63

lauriane

XLDnaute Nouveau
Re : Création alerte VBA à l'ouverture

aaah merci beaucoup , je l'ai juste modifié pour qu'il s'affiche bien à l'ouverture.
Je vais abusé de mon privilège de prénom donc :p et te demander comment je peux faire si je veux signaler également les formations donc l'échéance est dépassée.

Si tu veux/peux m'expliquer ta 1ère manip, j'aimerais bien comprendre ce que j'ai utilisé quand même :confused:

Merci beaucoup pour ta rapidité en tout cas!

PS: ne te prends pas trop la tête pour ma 2ème macro, la tentative d'iznogood1 marche très bien
 
Dernière modification par un modérateur:

youky(BJ)

XLDnaute Barbatruc
Re : Création alerte VBA à l'ouverture

Hello,
Voici pour mettre en message 3 jours avant et 3 jours après la date du jour.
Tu peux changer le 3 à ta guise, code commenté
Code:
Sub lauriane()
'[C65000].End(3).Row indique la dernière ligne en col C
For Each c In Range("f10:ar" & [C65000].End(3).Row) 'boucle principale jusqu'en bas de col C
If IsDate(c.Value) Then 'c.value indique une date et date la date actuelle
If c.Value > Date - 3 And c.Value < Date + 3 Then '3 jours avant et 3 jours après, tu peux changer 3
tx = tx & Cells(c.Row, 3) & " " & Cells(9, c.Column - 1) & " " & Cells(9, c.Column) & " " & c.Text & vbCr
'tx est une variable et vbcr fait un retour à la ligne
End If ' fin du 1er IF
End If 'fin du 2ème IF
Next ' boucle jusqu'à la fin
MsgBox tx 'affiche le message
End Sub

Pour exécuter la macro dés l'ouverture double click sur thisworkbook et voici le code
Code:
Private Sub Workbook_Open()
lauriane
End Sub
 

lauriane

XLDnaute Nouveau
Re : Création alerte VBA à l'ouverture

EEEttt me revoilà, finalement j'aurais encore besoin de votre aide:

ma 2ème alerte ne prend pas tous les salariés en compte, elle s'arrête à la ligne 43,quel est le code vba pour prendre compte la totalité des lignes?

Je cherche également à modifier le titre de cette alerte mais impossible, enfin à mon niveau, on arrête jamais d'apprendre:rolleyes:

En tout cas merci d'avance à celui qui pourra m'aider
 

Pièces jointes

  • modele1.xlsm
    58.7 KB · Affichages: 50
  • modele1.xlsm
    58.7 KB · Affichages: 48
Dernière modification par un modérateur:

lauriane

XLDnaute Nouveau
Re : Création alerte VBA à l'ouverture

Enfer et damnation, en voulant créer des feuilles avec bouton de mise à jour et donc, en modifiant les noms des feuilles, j'ai modifié mon alerte à l'ouverture et qui donc, ne fonctionne plus, même en modifiant le nom des feuilles concernées, dans la macro

Heeeeeelllpppp pleaaaasssseee :mad:
 

Pièces jointes

  • MODELE.xlsm
    65.6 KB · Affichages: 61
  • MODELE.xlsm
    65.6 KB · Affichages: 73

Jam

XLDnaute Accro
Re : Création alerte VBA à l'ouverture

Ah, et puis utilise un With...End With comme ci-dessous, ça t'évitera de tout changer ;)

Code:
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

Ah, et petit détail pratique, pense à indenter ton code proprement, ça en simplifie grandement la lecture et la recherche d'erreur.
J'oubliais aussi: pense à dimensionner TOUTES tes variables en début de procédure et pas un peu partout dans le code. En plus de ce que je disais juste avant, ça accélère le code aussi.

Bon courage
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 395
Messages
2 088 031
Membres
103 705
dernier inscrit
mytek