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 :)
A voir également:
- Extraire une phrase et la mettre dans une autre case
- Extraire une video youtube - Guide
- Extraire le son d'une vidéo - Guide
- Vérifier si une phrase est correcte - Accueil - Google
- Aller à la ligne dans une case excel - Guide
- Extraire texte d'une image - Guide
3 réponses
Bonjour,
Manque de précision...
Tout ce texte se trouve dans la même cellule ou sur plusieurs lignes?
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"
2- tu veux comme résultat : 0
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)
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 : 0
Function 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:
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
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 :
De plus, tu utilisais, dans ta formule, le Range A1 (=Extrait_Moyenne(A1)) alors que tes résultats sont en colonne B...........
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
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
Tout ce texte se trouve dans la même cellule.
J'ai fait un programme qui lance un ping sur excel et j'ai besoin d'extraire du résultat que la moyenne à chaque fois, et faire un graphe par la suite.
Manar