bonjour à tous , désolé par avance mais ce code fonctionnait très bien et depuis patatras.....
le principe : on a une feuille avec une liste de nom et mails, la macro va chercher si elle trouve un nom dans une feuille et lui envoyer un mail
pourriez vous débuger?
merciii
Public Sub WshAgents_RechercherInfosMails()
'----------------------------------------------------------------------------------------------------------------------------
' AGENTS : Recherche les informations (NomAgent, PrenomAgent, EmailAgent, HoraireAgent, PosteAgent) avant envoi des mails
'----------------------------------------------------------------------------------------------------------------------------
On Error GoTo Erreur
Dim MonOutlook As Object, MonMessage As Object, ZoneTableau As Name
Dim WshLendemain As Worksheet, Onglet As Worksheet
Dim NomAgent As String, PrenomAgent As String, EmailAgent As String, SecteurAgent As String, HoraireAgent As String, PosteAgent As String, NomZone As String
InitialisationDebutMacro
' Recherche de la feuille correspondant au planning du lendemain
For Each Onglet In ActiveWorkbook.Sheets
If ExistenceZone(Onglet, "DatePlanning") = True Then
If Onglet.Range("DatePlanning").Value = Date + 1 Then
Set WshLendemain = Sheets(Onglet.Name)
Exit For
End If
End If
Next Onglet
If WshLendemain.Name <> Empty Then
With WshAgents.Range("TableauAgents")
' Parcours de tous les agents dans le tableau de la feuille 'Liste agents'
For rAgent = 1 To .Rows.Count - 1
' Renseigne les informations sur l'agent
NomAgent = .Cells(rAgent, cAgents_Nom).Value
PrenomAgent = .Cells(rAgent, cAgents_Prenom).Value
EmailAgent = .Cells(rAgent, cAgents_Email).Value
' Parcours de tous les tableaux (zones nommées)
For Each ZoneTableau In ThisWorkbook.Names
' Si tableau (zone nommée) provient de la feuille 'Liste agents'
If ZoneTableau.Name Like WshLendemain.Name & "!Tableau*" And ZoneTableau.RefersTo Like "=" & WshLendemain.Name & "*" Then
' Récupération du nom du tableau
NomZone = Right(ZoneTableau.Name, Len(ZoneTableau.Name) - InStr(ZoneTableau.Name, "!"))
With WshLendemain.Range(NomZone)
' Parcours des colonnes (matin, après-midi) et lignes du tableau
For cZoneTableau = .Columns.Count - 1 To .Columns.Count ' colonne 4 à 5
For rZoneTableau = 1 To .Rows.Count
' Si agent trouvé dans le tableau (sans tenir compte des caractères spéciaux)
If NomAgent & " " & PrenomAgent = ChaineEpure(.Cells(rZoneTableau, cZoneTableau).Value, NomAgent & " " & PrenomAgent) And EmailAgent <> Empty Then
SecteurAgent = CorrespondanceSecteur(NomZone)
HoraireAgent = .Cells(0, cZoneTableau).Value
PosteAgent = .Cells(rZoneTableau, 1)
If Not (.Cells(rZoneTableau, cZoneTableau).Value Like "*Dép*") And Not (.Cells(rZoneTableau, cZoneTableau).Value Like "*dép*") _
And Not (.Cells(rZoneTableau, cZoneTableau).Value Like "*Dep*") And Not (.Cells(rZoneTableau, cZoneTableau).Value Like "*dep*") _
And Not (.Cells(rZoneTableau, cZoneTableau).Value Like "*Arr*") And Not (.Cells(rZoneTableau, cZoneTableau).Value Like "*arr*") Then
If .Cells(rZoneTableau, cZoneTableau).Value Like "*" & ChrW(64) & "*" Then
WshAgents_EnvoyerMail NomAgent, PrenomAgent, EmailAgent, SecteurAgent, HoraireAgent, PosteAgent, "11h -> 12h30"
Else
WshAgents_EnvoyerMail NomAgent, PrenomAgent, EmailAgent, SecteurAgent, HoraireAgent, PosteAgent, Empty
End If
End If
End If
Next rZoneTableau
Next cZoneTableau
End With
End If
Next ZoneTableau
Next rAgent
End With
End If
InitialisationFinMacro
Exit Sub
Erreur:
ErreurMacro "Mod_Agents/WshAgents_RechercherInfosMails"
End Sub
le principe : on a une feuille avec une liste de nom et mails, la macro va chercher si elle trouve un nom dans une feuille et lui envoyer un mail
pourriez vous débuger?
merciii
Public Sub WshAgents_RechercherInfosMails()
'----------------------------------------------------------------------------------------------------------------------------
' AGENTS : Recherche les informations (NomAgent, PrenomAgent, EmailAgent, HoraireAgent, PosteAgent) avant envoi des mails
'----------------------------------------------------------------------------------------------------------------------------
On Error GoTo Erreur
Dim MonOutlook As Object, MonMessage As Object, ZoneTableau As Name
Dim WshLendemain As Worksheet, Onglet As Worksheet
Dim NomAgent As String, PrenomAgent As String, EmailAgent As String, SecteurAgent As String, HoraireAgent As String, PosteAgent As String, NomZone As String
InitialisationDebutMacro
' Recherche de la feuille correspondant au planning du lendemain
For Each Onglet In ActiveWorkbook.Sheets
If ExistenceZone(Onglet, "DatePlanning") = True Then
If Onglet.Range("DatePlanning").Value = Date + 1 Then
Set WshLendemain = Sheets(Onglet.Name)
Exit For
End If
End If
Next Onglet
If WshLendemain.Name <> Empty Then
With WshAgents.Range("TableauAgents")
' Parcours de tous les agents dans le tableau de la feuille 'Liste agents'
For rAgent = 1 To .Rows.Count - 1
' Renseigne les informations sur l'agent
NomAgent = .Cells(rAgent, cAgents_Nom).Value
PrenomAgent = .Cells(rAgent, cAgents_Prenom).Value
EmailAgent = .Cells(rAgent, cAgents_Email).Value
' Parcours de tous les tableaux (zones nommées)
For Each ZoneTableau In ThisWorkbook.Names
' Si tableau (zone nommée) provient de la feuille 'Liste agents'
If ZoneTableau.Name Like WshLendemain.Name & "!Tableau*" And ZoneTableau.RefersTo Like "=" & WshLendemain.Name & "*" Then
' Récupération du nom du tableau
NomZone = Right(ZoneTableau.Name, Len(ZoneTableau.Name) - InStr(ZoneTableau.Name, "!"))
With WshLendemain.Range(NomZone)
' Parcours des colonnes (matin, après-midi) et lignes du tableau
For cZoneTableau = .Columns.Count - 1 To .Columns.Count ' colonne 4 à 5
For rZoneTableau = 1 To .Rows.Count
' Si agent trouvé dans le tableau (sans tenir compte des caractères spéciaux)
If NomAgent & " " & PrenomAgent = ChaineEpure(.Cells(rZoneTableau, cZoneTableau).Value, NomAgent & " " & PrenomAgent) And EmailAgent <> Empty Then
SecteurAgent = CorrespondanceSecteur(NomZone)
HoraireAgent = .Cells(0, cZoneTableau).Value
PosteAgent = .Cells(rZoneTableau, 1)
If Not (.Cells(rZoneTableau, cZoneTableau).Value Like "*Dép*") And Not (.Cells(rZoneTableau, cZoneTableau).Value Like "*dép*") _
And Not (.Cells(rZoneTableau, cZoneTableau).Value Like "*Dep*") And Not (.Cells(rZoneTableau, cZoneTableau).Value Like "*dep*") _
And Not (.Cells(rZoneTableau, cZoneTableau).Value Like "*Arr*") And Not (.Cells(rZoneTableau, cZoneTableau).Value Like "*arr*") Then
If .Cells(rZoneTableau, cZoneTableau).Value Like "*" & ChrW(64) & "*" Then
WshAgents_EnvoyerMail NomAgent, PrenomAgent, EmailAgent, SecteurAgent, HoraireAgent, PosteAgent, "11h -> 12h30"
Else
WshAgents_EnvoyerMail NomAgent, PrenomAgent, EmailAgent, SecteurAgent, HoraireAgent, PosteAgent, Empty
End If
End If
End If
Next rZoneTableau
Next cZoneTableau
End With
End If
Next ZoneTableau
Next rAgent
End With
End If
InitialisationFinMacro
Exit Sub
Erreur:
ErreurMacro "Mod_Agents/WshAgents_RechercherInfosMails"
End Sub