Présence élèves

Bonjour à tous,

Je suis à la recherche de réponses et de solutions pour terminer le code de mon fichier Excel. Voilà, j'ai fait un fichier pour nous aider à transmettre les retards, les absences et les départs hâtifs des élèves où je suis enseignant. Il y a une liste déroulante (P6:P25) dans lesquelles il y a un crochet, du texte et des espaces vides pour sélectionner le choix approprié et cette liste est associée aux cellules D6:M32 du fichier. Dès qu'il y a un changement dans ces cellules (D6:M32), il y a automatiquement un courriel qui est acheminé au destinataire de l'administration de l'établissement scolaire. Mais le crochet et les espaces vides de la liste déroulante ne devraient pas être envoyés automatiquement.

Ce que j'aimerais c'est d'être en mesure de choisir le crochet ou un espace sans que le courriel s'achemine automatiquement. Le crochet confirme que l'élève est présent (donc, pas besoin d'aviser l'administration puisque l'élève est présent) et les espaces vides sont nécessaires pour écrire des notes personnelles lorsque le fichier sera imprimé pour la signature de l'enseignant.

Merci de bien vouloir me venir en aide,

Joël

134presence-eleve.xlsm (23.14 Ko)

Bonjour,

Ajoutez ceci en début de code:

    If Asc(Target) = 63 Or Target = " " Then Exit Sub

Cdlt

Bonjour

Le mail est envoyé si la 1ère lettre de la cellule est un R ou un D...

51presence-eleve.xlsm (22.95 Ko)

A+ François

Bonjour fanfan38,

Merci de m'avoir venue en aide, mais le bout de code n'a pas fonctionné. Notez que je ne suis pas un expert en VBA, j'ai probablement oublié d'ajouter un truc.

aaa

Désolé fanfan38, je me suis trompé d'utilisateur...trop fatigué

J'ai essayé avec votre code de la première lettre et ça ne fonctionne pas non plus

Merci de votre aide

Merci de m'avoir venue en aide, mais le bout de code n'a pas fonctionné.
Cette ligne doit se trouver à l'intérieur de la macro

J'ai essayé avec le fichier que j'ai envoyé... quand tu choisis Ret... ou Dep... ça marche

A+ François

Comme je l'ai indiqué plutôt dans dans une réponse précédente, je ne suis pas expert ni très habitué avec les codes VBA. Je l'ai inséré à plusieurs endroits dans le code et ça ne fonctionne pas. Désolé de vous décevoir.

Joël

Bonjour,

Remplace ta macro par :

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 2017/9/12
    Dim xRgSel As Range
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xMailBody As String
    If Target.Value = "" Then Exit Sub
    If Len(Target) = 1 And Asc(Target.Value) = 63 Then Exit Sub
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set xRg = Range("D6:M32")
    Set xRgSel = Intersect(Target, xRg)
    ActiveWorkbook.Save
    If Not xRgSel Is Nothing Then
        Set xOutApp = CreateObject("Outlook.Application")
        Set xMailItem = xOutApp.CreateItem(0)
        xMailBody = "Un changement a été apporté à cette pièce jointe."
        With xMailItem
            .To = ""
            .Subject = "Feuille de présence des élèves"
            .Body = xMailBody
            .Attachments.Add (ThisWorkbook.FullName)
            .Display
        End With
        Set xRgSel = Nothing
        Set xOutApp = Nothing
        Set xMailItem = Nothing
    End If
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

Daniel

Merci DanielC.

J'ai supprimer "Absent(e)" de ma liste déroulante et ça fonctionne !

Joël

Rechercher des sujets similaires à "presence eleves"