Test ping + courriel
Le Débrouillard Mêlé
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 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
- Test disque dur - Télécharger - Informations & Diagnostic
- Test steam deck oled - Guide
- 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!