Test ping + courriel
Le Débrouillard Mêlé
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai fouillé dans plusieurs forum et réussi à former un code amateur, mais le résultat n'est pas fiable...
Voici mon besoin: j'ai une liste d'adresses ip que veux faire un test ping et récupérer le résultat pour ensuite l'envoyer par courriel. j'aimerais que ce soit une routine à 10h00 tous les jours.
J'utilise tâche planifié pour la routine, mais ça ne semble pas fonctionner...
J'ai besoin d'un coup de main pour améliorer mon code et rendre le tout fonctionnel.
(Evidemment je ne suis pas programmeur, simplement débrouillard...)
Merci de votre aide c'est très apprécié.
Voici mon code pour l'instant:
J'ai fouillé dans plusieurs forum et réussi à former un code amateur, mais le résultat n'est pas fiable...
Voici mon besoin: j'ai une liste d'adresses ip que veux faire un test ping et récupérer le résultat pour ensuite l'envoyer par courriel. j'aimerais que ce soit une routine à 10h00 tous les jours.
J'utilise tâche planifié pour la routine, mais ça ne semble pas fonctionner...
J'ai besoin d'un coup de main pour améliorer mon code et rendre le tout fonctionnel.
(Evidemment je ne suis pas programmeur, simplement débrouillard...)
Merci de votre aide c'est très apprécié.
Voici mon code pour l'instant:
Private Sub Workbook_Open()
Call callpg
End Sub
Sub callpg()
Call GetIPStatus
Application.Wait (Now + TimeValue("0:00:15"))
Call courriel
End Sub
Sub GetIPStatus()
Dim Cell As Range
Dim ipRng As Range
Dim Result As String
Dim Wks As Worksheet
Set Wks = Worksheets("TEST PING")
Set ipRng = Wks.Range("A6:A16")
Set RngEnd = Wks.Cells(Rows.Count, ipRng.Column).End(xlUp)
Set ipRng = IIf(RngEnd.Row < ipRng.Row, ipRng, Wks.Range(ipRng, RngEnd))
For Each Cell In ipRng
Result = GetPingResult(Cell)
Cell.Offset(0, 1) = Result
Next Cell
End Sub
Function GetPingResult(Host)
Dim objPing As Object
Dim objStatus As Object
Dim Result As String
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}"). _
ExecQuery("Select * from Win32_PingStatus Where Address = '" & Host & "'")
For Each objStatus In objPing
Select Case objStatus.StatusCode
Case 0: strResult = "Communication ok"
Case 11001: strResult = "Buffer too small"
Case 11002: strResult = "Destination net unreachable"
Case 11003: strResult = "Destination host unreachable"
Case 11004: strResult = "Destination protocol unreachable"
Case 11005: strResult = "Destination port unreachable"
Case 11006: strResult = "No resources"
Case 11007: strResult = "Bad option"
Case 11008: strResult = "Hardware error"
Case 11009: strResult = "Packet too big"
Case 11010: strResult = "délai d'attente dépassé"
Case 11011: strResult = "Bad request"
Case 11012: strResult = "Bad route"
Case 11013: strResult = "Time-To-Live (TTL) expired transit"
Case 11014: strResult = "Time-To-Live (TTL) expired reassembly"
Case 11015: strResult = "Parameter problem"
Case 11016: strResult = "Source quench"
Case 11017: strResult = "Option too big"
Case 11018: strResult = "Bad destination"
Case 11032: strResult = "Negotiating IPSEC"
Case 11050: strResult = "General failure"
Case Else: strResult = "Unknown host"
End Select
GetPingResult = strResult
Next
Set objPing = Nothing
End Function
Sub courriel()
'Working in Office 2000-2010
Dim OutApp As Object
Dim OutMail As Object
Dim test(100) As String
Dim test2(100) As String
Dim test3(100) As String
Dim corp As String
Dim i As Integer
Dim L As Integer 'Déclaration de variable "L" pour connaitre la Ligne Numéro
'ici je repère la dernière ligne vide pour la Collections des données
L = Range("B65536").End(xlUp).Row + 1
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
For i = 1 To 12
test(i) = Cells(5 + i, 1)
test2(i) = Cells(5 + i, 2)
test3(i) = Cells(5 + i, 3)
Next
ttt = 1
For i = 1 To 12
corp = corp & vbCrLf & test3(i) & " " & test2(i) & " " & test(i)
Next
On Error Resume Next
With OutMail
.To = "***@***"
.CC = "***@***"
.BCC = ""
.Subject = "test communication bâtiment PDS"
.body = corp
.send
'You can add a file like this
'.Attachments.Add ("C:\test.txt")
.display 'or use .Display
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
A voir également:
- Test ping + courriel
- Test performance pc - Guide
- Steam deck oled test - Guide
- Test disque dur - Télécharger - Informations & Diagnostic
- Test composant pc - Guide
- Test batterie pc - Guide
2 réponses
Bonjour,
1- lorsque l'on poste du code sur un forum, il convient de l'entourer de balises <code>ton code ici</code>
2- Qu'est ce qui ne fonctionne pas?
Ton code même si parfois peu orthodoxe, semble fonctionnel?
Que se passe t'il (ou que ne se passe t'il pas)? Message d'erreur?
1- lorsque l'on poste du code sur un forum, il convient de l'entourer de balises <code>ton code ici</code>
2- Qu'est ce qui ne fonctionne pas?
Ton code même si parfois peu orthodoxe, semble fonctionnel?
Que se passe t'il (ou que ne se passe t'il pas)? Message d'erreur?
Salut,
Remplace ta Sub courriel par celle-ci :
(n'oublie pas d'adapter le nom de ta feuille + adresses email...)
Remplace ta Sub courriel par celle-ci :
(n'oublie pas d'adapter le nom de ta feuille + adresses email...)
Sub courriel()
'Working in Office 2000-2010
Dim OutApp As Object
Dim OutMail As Object
Dim Wsh As Worksheet
Dim corp As String
Dim i As Integer
Dim L As Integer 'Déclaration de variable "L" pour connaitre la Ligne Numéro
'A ADAPTER : nom de la feuille qui contient les résultats des pings.
Set Wsh = Worksheets("Feuil1")
'-------------------------------------------------
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With Wsh
'ici je repère la dernière ligne vide pour la Collections des données
'L = .Range("B65536").End(xlUp).Row + 1
For i = 1 To 12
corp = corp & vbCrLf & .Cells(5 + i, 3) & " " & .Cells(5 + i, 2) & " " & .Cells(5 + i, 1)
Next
End With
'On Error Resume Next
With OutMail
.To = "******@***.fr"
.CC = "***.*****@****.fr"
.BCC = ""
.Subject = "test communication bâtiment PDS"
.body = corp
.send
'You can add a file like this
'.Attachments.Add ("C:\test.txt")
.display 'or use .Display
End With
'On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Quand je laisse mon code tourner seul avec tâche planifié souvent les cellules que je recopie (le résultat des tests ping) ne s'affiche pas dans le message et l'envoi ou ne l'envoi simplement pas.
Je pense que le test ping en soit est correct, mais le problème est du côté du message outlook et de tâche planifié.
Merci du coup de main!
Le souci vient donc de l'envoi des mails.
essaie de placer des DoEvents et des application.wait dans ton code à partir de l'envoi des mails,
de retour lundi.
bon week
Merci de tes réponses en passant!
Pour tes conseils est-ce que tu pourrais me donner des exemples concrets parce que je ne suis pas programmeur... Je ne connais que le Basic...
Tous le code que tu vois n'est que copier-coller de ce que des gens ont déjà fait et que j'ai essayé tant bien que mal de faire fonctionner.
Je travail fort pour comprendre le VBA, mais c'est beaucoup plus complexe que le basic.
Merci!