Bonjour,
J'essaie d'expliquer mon problème le plus clairement possible...
J'aimerais que mon fichier excel envoie un email lors de sa fermeture, à condition qu'une modification ait été effectuée dans un champ donné (feuille1, colonnes A à H).
- Pour cela, j'ai déclaré une variable booléenne globale "modif" qui est affectée à "false" à l'ouverture du fichier (dans module thisworkbook)
	
	
	
	
	
		
- Ensuite, dans module Sheet1, j'affecte la valeur "true" à "modif" si un changement est effectué dans le champ défini.
	
	
	
	
	
		
- Ensuite je reviens dans le module thisworkbook et demande d'envoyer le mail seulement si la condition modif=TRUE est remplie et que Outlook est ouvert.
	
	
	
	
	
		
Il y a un problème avec la variable "modif", car le mail n'est pas envoyé. Je je sais pas si c'est un problème d'accès à la variable ou si la valeur de celle-ci n'est pas correctement mise à jour..
Merci d'avance pour votre aide précieuse et salutations
	
		
			
		
		
	
				
			J'essaie d'expliquer mon problème le plus clairement possible...
J'aimerais que mon fichier excel envoie un email lors de sa fermeture, à condition qu'une modification ait été effectuée dans un champ donné (feuille1, colonnes A à H).
- Pour cela, j'ai déclaré une variable booléenne globale "modif" qui est affectée à "false" à l'ouverture du fichier (dans module thisworkbook)
		Code:
	
	
	Public Modif As Boolean
Sub Workbook_Open()
    
    
    Modif = False
    
End Sub
	- Ensuite, dans module Sheet1, j'affecte la valeur "true" à "modif" si un changement est effectué dans le champ défini.
		Code:
	
	
	Sub Worksheet_Change(ByVal Target As Range)
    Dim Cel As Range
        
    ' Détection de modifications
    For Each Cel In Target
        
        If Not Intersect(Cel, Range("A1:H1000")) Is Nothing Then   ' Plage de cellules à contrôler
            
            Modif = True
            
            'Cel.Interior.Color = vbRed        ' Mettre en évidence la cellule modifiée
                        
        End If
        
    Next Cel
End Sub
	- Ensuite je reviens dans le module thisworkbook et demande d'envoyer le mail seulement si la condition modif=TRUE est remplie et que Outlook est ouvert.
		Code:
	
	
	Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Utilisateur As String
Utilisateur = Application.UserName
Dim nom_fichier As String
nom_fichier = "O:\HG\ST"       ' Adresse fichier
    
' Envoi email si outlook est ouvert
    Dim Appli As Object
 
    On Error Resume Next
    Set Appli = GetObject(, "Outlook.Application")
 
    'If ThisWorkbook.Worksheets("Liefertermine").Modif.Value = True Then
    If Modif = True Then
    
        If Appli Is Nothing Then
        
           
        Else
            
            ' À la fermeture du fichier, envoyer un email
            Dim ol As Object, monmail As Object
            DisplayAlerts = False
            Set ol = CreateObject("outlook.application")
            Set monmail = ol.CreateItem(olMailItem)
            monmail.To = "yy.xx@machin.com"                   ' Adresse email à entrer
            monmail.Subject = "Installation GX - Modifications commandes"
            monmail.Body = "Modifications effectuées dans le fichier de commandes par " & Utilisateur & Chr(10) & Chr(10) & _
                "Le fichier se trouve à l'adresse suivante:" & Chr(10) & "file://" & nom_fichier
            monmail.Send
            Set ol = Nothing
        
        End If
    End If
 
End Sub
	Il y a un problème avec la variable "modif", car le mail n'est pas envoyé. Je je sais pas si c'est un problème d'accès à la variable ou si la valeur de celle-ci n'est pas correctement mise à jour..
Merci d'avance pour votre aide précieuse et salutations
Pièces jointes
			
				Dernière édition: