Extraire une phrase et la mettre dans une autre case
Résolu
Manar
-
Manar -
Manar -
Bonjour,
J'ai besoin d'extraire une partie d'un ping affiché sur excel et le mettre sur une autre case mais j y arrive pas. Quelqu'un peut m'aider à le faire?
En gros j'ai besoin d'extraire que la moyenne qui se trouve à la fin du résultat:
Envoi d'une requ^te 'Ping' 172.16.212.215 avec 1024 octets de donn'esÿ:
R'ponse de 172.16.212.215ÿ: octets=1024 temps<1ms TTL=254
R'ponse de 172.16.212.215ÿ: octets=1024 temps<1ms TTL=254
R'ponse de 172.16.212.215ÿ: octets=1024 temps<1ms TTL=254
R'ponse de 172.16.212.215ÿ: octets=1024 temps<1ms TTL=254
Statistiques Ping pour 172.16.212.215:
Paquetsÿ: envoy's = 4, re#us = 4, perdus = 0 (perte 0%),
Dur'e approximative des boucles en millisecondes :
Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms
Merci d'avance :)
J'ai besoin d'extraire une partie d'un ping affiché sur excel et le mettre sur une autre case mais j y arrive pas. Quelqu'un peut m'aider à le faire?
En gros j'ai besoin d'extraire que la moyenne qui se trouve à la fin du résultat:
Envoi d'une requ^te 'Ping' 172.16.212.215 avec 1024 octets de donn'esÿ:
R'ponse de 172.16.212.215ÿ: octets=1024 temps<1ms TTL=254
R'ponse de 172.16.212.215ÿ: octets=1024 temps<1ms TTL=254
R'ponse de 172.16.212.215ÿ: octets=1024 temps<1ms TTL=254
R'ponse de 172.16.212.215ÿ: octets=1024 temps<1ms TTL=254
Statistiques Ping pour 172.16.212.215:
Paquetsÿ: envoy's = 4, re#us = 4, perdus = 0 (perte 0%),
Dur'e approximative des boucles en millisecondes :
Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms
Merci d'avance :)
3 réponses
-
Bonjour,
Manque de précision...
Tout ce texte se trouve dans la même cellule ou sur plusieurs lignes?
-
Bon, alors deux possibilités :
1- tu veux comme résultat : "Moyenne = 0ms"Function Extrait_Moyenne(Rng As Range) As String Application.Volatile Extrait_Moyenne = "Moyenne" & Split(Rng, "Moyenne")(1) End Function
2- tu veux comme résultat : 0Function Extrait_Valeur_Moyenne(Rng As Range) As Double Dim Debut As Integer, Longueur As Integer, strTexte As String Application.Volatile strTexte = Split(Rng, "Moyenne")(1) Debut = InStr(strTexte, "=") + 2 Longueur = InStr(strTexte, "ms") - Debut Extrait_Valeur_Moyenne = CDbl(Mid(strTexte, Debut, Longueur)) End Function
Tu peux utiliser ces deux fonctions, soit via VBA en utilisant une variable pour en stocker le résultat, soit directement dans la feuille en utilisant, par exemple, la syntaxe :
=Extrait_Valeur_Moyenne(A1)
-
Bonjour Franck,
Merci pour ton aide, en revanche j'ai pas réussi à le faire marcher (désolé je suis encore débutante en vba :/ )
J'ai mis la fonction au dessus du code et je me suis servie de la syntaxe: =Extrait_Moyenne(A1) pour le faire marcher mais ça me donne: " #NOM? "
Je te montre mon code au cas où ça peut aider à comprendre:
Sub Ping()
ToursPrevus = ActiveSheet.Cells(3, 2)
Toursfaits = 0
While (Toursfaits < ToursPrevus)
Adresse = ActiveSheet.Cells(2, 2)
Dim PingExe As String
PingExe = "C:\Windows\System32\PING.exe -l 1024 " + Adresse
Set Sh = CreateObject("WScript.Shell")
Set ShellExe = Sh.Exec(PingExe)
lecture = ShellExe.StdOut.ReadAll
Toursfaits = Toursfaits + 1
CelluleResult = 6 + Toursfaits
ActiveSheet.Cells(CelluleResult, 2) = lecture
Wend
End Sub
Est ce que tu penses qu'il y a moyen d'avoir: "Moyenne = '(valeur de la moyenne)ms" comme résultat au fur et à mesure que le ping s'execute?
Manar- Bonjour,
Si tu fait tout par macro, n'insère pas de formule dans ta feuille.
Essaye ce code :
Sub Ping() ToursPrevus = ActiveSheet.Cells(3, 2) Toursfaits = 0 While (Toursfaits < ToursPrevus) Adresse = ActiveSheet.Cells(2, 2) Dim PingExe As String PingExe = "C:\Windows\System32\PING.exe -l 1024 " + Adresse Set Sh = CreateObject("WScript.Shell") Set ShellExe = Sh.Exec(PingExe) lecture = ShellExe.StdOut.ReadAll Toursfaits = Toursfaits + 1 CelluleResult = 6 + Toursfaits ActiveSheet.Cells(CelluleResult, 2) = lecture 'AFFICHE LA MOYENNE EN COLONNE C ActiveSheet.Cells(CelluleResult, 3) = Extrait_Moyenne(Range("B" & CelluleResult) Wend End Sub Function Extrait_Moyenne(Rng As Range) As String Extrait_Moyenne = "Moyenne = " & Split(Rng, "Moyenne")(1) End Function
De plus, tu utilisais, dans ta formule, le Range A1 (=Extrait_Moyenne(A1)) alors que tes résultats sont en colonne B...........
-
-
-
Bonjour,
Je reviens sur ce sujet parce que j'ai une question à propos de ce script.
J'ai besoin de le faire executer chaque 20 secondes par exemple, je me suis servie donc de cette commande juste après la boucle While:
Application.OnTime Now + TimeValue("00:00:20"), "Ping"
ça marche bien mais quand le nouveau ping s'execute il remplace l'ancien dans la même case, et moi j'ai besoin de tout garder.
Comment est ce que je peux faire pour faire apparaitre les ping les uns au dessous des autres ?
Merci d'avance