Voici quelques explications sur cette ligne de commande :
ShellAndWait "cmd.exe /c " & Valeur & ">>C:addResrv_multi_line.txt", 1
L'utilisation des ">>" permet d'ajouter le résultat d'une commande DOS
à l'information du fichier déjà existant si le fichier n'est pas vide.
tu peux si tu le désires effacer et écrire le résultat de la
commande en utilisant un seul ">" dans la commande.
ShellAndWait "cmd.exe /c " & Valeur & ">C:addResrv_multi_line.txt", 1
On pourrait aussi le faire de cette façon en détournant un peu le rôle
de la commande "Echo off" en DOS comme ceci :
Dans votre programme, cela se traduit de façon suivante
Commande = commande = "cmd.exe /c echo off >C:addResrv_multi_line.txt"
Shell commande, vbHide
Vous insérez ces 2 lignes de code avant le début de la boucle. Cela videra
complètement le contenu du fichier existant.
Pour supprimer un fichier existant
Kill C:addResrv_multi_line.txt
Attention, le fichier est totalement détruit, il ne se
retrouve pas à la poubelle de Windows.
Pour effacer le contenu du fichier texte, vous pouvez utiliser
la même commande :
"ben" a écrit dans le message de groupe de discussion :
Bonjour,
Et merci infiniment pour votre aide.
J'aimerais pour finaliser le projet faire au cas ou, un clear du fichier
txt ?.
Ou bien la suppression du fichier s'il existe avant l'execution.
Merci de me faire les 2 propositions.
Cordialement.
"michdenis" wrote:
> Les 2 lignes ajoutées vont s'exécuter pour tous les items
> contenus dans la boucle. Si tu ne désires inscrire une date
> que pour l'ensemble du code contenu dans la boucle,
> place ces 2 lignes de code avant le début de la ligne For ...
> de la même procédure.
>
> commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> Shell commande, vbHide
>
>
> "michdenis" a écrit dans le message de groupe de discussion :
> #
> Attention aux coupures de lignes de code par le service de messagerie.
>
> N.B. Semble-t-il que la solution retenue s'est éloignée de ta
> demande initiale !
>
> Dans ton code, avant cette ligne de la procédure: Test
> ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
>
> Tu inscris les commandes dans cet ordre :
> Tu peux aussi modifier le format date que tu désires dans "dd/mmm/yyyy H:MM:SS"
> commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> Shell commande, vbHide
> ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
>
> P.S- Tu dois ajouter à la déclaration des variables en début de procédure
> Dim Commande As String
>
>
> "ben" a écrit dans le message de groupe de discussion :
>
> Bonjour michdenis,
>
> Voici ma solution, cependant j'aimerais juste rajouter la date d'exécution
> pour chaque traitement, car j'ai qu'un seule fichier.
> ************************************************
> Declare Function OpenProcess Lib "kernel32" _
> (ByVal dwDesiredAccess As Long, _
> ByVal bInheritHandle As Long, _
> ByVal dwProcessId As Long) As Long
>
> Declare Function GetExitCodeProcess Lib "kernel32" _
> (ByVal hProcess As Long, _
> lpExitCode As Long) As Long
>
> Public Const PROCESS_QUERY_INFORMATION = &H400
> Public Const STILL_ACTIVE = &H103
>
> 'Sub Test()
> 'Dim StartTime As Double
> 'StartTime = Now
> 'ShellAndWait "ping.exe", 1
> 'MsgBox "Gone " & Format(Now - StartTime, "s") & " seconds"
> 'End Sub
> Sub addResrv_multi_line_test()
> ' il faut sélectionner plusieurs valeurs de la ligne
> Dim Cell As Range, Ligne As Range, Valeur, A As Integer
> Dim LogFile As String
> 'vérifier si Selection est une plage de cellules
> If TypeName(Selection) = "Range" Then
> 'Boucle sur chaque ligne de la sélection
> For Each Ligne In Selection.Rows
> 'Boucle sur chaque cellule de la ligne
> For Each Cell In Ligne.Cells
> Valeur = Valeur & " " & Cell.Value
> ' résultats intermédiaires
> 'MsgBox valeur
> Next Cell
> 'MsgBox Valeur
> 'A = A + 1
> 'toexe = "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line" & A & ".txt"
>
> ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> 'ShellAndWait "cmd.exe /c" & Valeur & " | clip ", 1
> Valeur = "" 'après chaque boucle il vide le contenu de la variable Valeur
> Next
> End If
>
> Dim wshShell
> Set wshShell = CreateObject("wscript.shell")
> 'Execution du fichier - ouverture d'un fichier txt
> wshShell.Run "C:addResrv_multi_line.txt"
>
> End Sub
>
>
> 'Window States (Per Help for Shell function):
> ' 1, 5, 9 Normal with focus.
> ' 2 Minimized with focus.
> ' 3 Maximized with focus.
> ' 4, 8 Normal without focus.
> ' 6, 7 Minimized without focus.
> Sub ShellAndWait(ByVal PathName As String, Optional WindowState)
> Dim hProg As Long
> Dim hProcess As Long, ExitCode As Long
>
> 'fill in the missing parameter and execute the program
> If IsMissing(WindowState) Then WindowState = 1
> hProg = Shell(PathName, WindowState)
> 'hProg is a "process ID under Win32. To get the process handle:
> hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
> Do
> 'populate Exitcode variable
> GetExitCodeProcess hProcess, ExitCode
> DoEvents
> Loop While ExitCode = STILL_ACTIVE
> End Sub
>
>
> ************************************************
>
> Cordialement.
>
>
> "michdenis" wrote:
>
> > Cette procédure fait exactement ce que tu désires.
> > Avec celle-ci, tu ne dois pas mettre la commande
> > "nslookup" dans la cellule, tu n'as comme tu désires
> > à saisir la valeur de la variable que tu veux tester.
> >
> > Tu sélectionnes ta liste et tu lances la procédure.
> >
> > P.S- N'oublie pas de modifier le chemin et le
> > nom du batchFile que tu vas créer .
> >
> > '------------------------------------------
> > Sub Créer_Et_Exécuter_Un_BatFile()
> > Dim Fichier As String, Chemin As String
> > Dim X As Long, C As Range, Texte As String
> > X = FreeFile
> >
> > '******* À RENSEIGNER ********
> > 'Où tu veux que le fichier soit créer
> > Chemin = "C:UsersPoweruser"
> > 'Nom du batchfile à créer
> > Fichier = "Denis.bat"
> > '*******************************
> > On Error Resume Next
> > 'Supprimer le fichier si il existe déjà
> > Kill Chemin & Fichier
> > 'supprime l'erreur au cas où le fichier n'exite pas
> > Err.Clear
> > 'S'assure que la selection est une plage de cellule
> >
> > If TypeName(Selection) = "Range" Then
> > 'Ce qui suit met dans la variable "texte" la
> > 'composition des lignes de code du BatchFile
> > Texte = "Echo on " & vbCrLf
> > Texte = "cd" & vbCrLf
> > Texte = texte & "c:" & vbCrLf
> > Texte = texte & "Cls" & vbCrLf
> > For Each C In Selection.Cells
> > If C <> "" Then
> > texte = Texte & "nslookup.exe " & C & vbCrLf
> > texte = Texte & "Pause" & vbCrLf
> > End If
> > Next
> > Texte = Texte & "exit"
> > End If
> > 'Création du fichier lui-même
> > Open Chemin & Fichier For Append As #X
> > 'Copie de la variable dans le fichier
> > Print #X, Texte
> > 'Fermeture du fichier batchfile
> > Close #X
> > 'Exécution du BatchFile
> > Shell "Cmd.exe /K " & Chemin & Fichier, vbNormalFocus
> > End Sub
> > '------------------------------------------
> >
> >
> >
> >
> >
Voici quelques explications sur cette ligne de commande :
ShellAndWait "cmd.exe /c " & Valeur & ">>C:addResrv_multi_line.txt", 1
L'utilisation des ">>" permet d'ajouter le résultat d'une commande DOS
à l'information du fichier déjà existant si le fichier n'est pas vide.
tu peux si tu le désires effacer et écrire le résultat de la
commande en utilisant un seul ">" dans la commande.
ShellAndWait "cmd.exe /c " & Valeur & ">C:addResrv_multi_line.txt", 1
On pourrait aussi le faire de cette façon en détournant un peu le rôle
de la commande "Echo off" en DOS comme ceci :
Dans votre programme, cela se traduit de façon suivante
Commande = commande = "cmd.exe /c echo off >C:addResrv_multi_line.txt"
Shell commande, vbHide
Vous insérez ces 2 lignes de code avant le début de la boucle. Cela videra
complètement le contenu du fichier existant.
Pour supprimer un fichier existant
Kill C:addResrv_multi_line.txt
Attention, le fichier est totalement détruit, il ne se
retrouve pas à la poubelle de Windows.
Pour effacer le contenu du fichier texte, vous pouvez utiliser
la même commande :
"ben" <ben@discussions.microsoft.com> a écrit dans le message de groupe de discussion :
FE1B43C0-9707-49A0-83F3-CA9711FD4A51@microsoft.com...
Bonjour,
Et merci infiniment pour votre aide.
J'aimerais pour finaliser le projet faire au cas ou, un clear du fichier
txt ?.
Ou bien la suppression du fichier s'il existe avant l'execution.
Merci de me faire les 2 propositions.
Cordialement.
"michdenis" wrote:
> Les 2 lignes ajoutées vont s'exécuter pour tous les items
> contenus dans la boucle. Si tu ne désires inscrire une date
> que pour l'ensemble du code contenu dans la boucle,
> place ces 2 lignes de code avant le début de la ligne For ...
> de la même procédure.
>
> commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> Shell commande, vbHide
>
>
> "michdenis" <michdenis@hotmail.com> a écrit dans le message de groupe de discussion :
> #1hANOclJHA.1172@TK2MSFTNGP04.phx.gbl...
> Attention aux coupures de lignes de code par le service de messagerie.
>
> N.B. Semble-t-il que la solution retenue s'est éloignée de ta
> demande initiale !
>
> Dans ton code, avant cette ligne de la procédure: Test
> ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
>
> Tu inscris les commandes dans cet ordre :
> Tu peux aussi modifier le format date que tu désires dans "dd/mmm/yyyy H:MM:SS"
> commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> Shell commande, vbHide
> ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
>
> P.S- Tu dois ajouter à la déclaration des variables en début de procédure
> Dim Commande As String
>
>
> "ben" <ben@discussions.microsoft.com> a écrit dans le message de groupe de discussion :
> 41899344-EDF7-4431-AA45-2A64B3B1986A@microsoft.com...
> Bonjour michdenis,
>
> Voici ma solution, cependant j'aimerais juste rajouter la date d'exécution
> pour chaque traitement, car j'ai qu'un seule fichier.
> ************************************************
> Declare Function OpenProcess Lib "kernel32" _
> (ByVal dwDesiredAccess As Long, _
> ByVal bInheritHandle As Long, _
> ByVal dwProcessId As Long) As Long
>
> Declare Function GetExitCodeProcess Lib "kernel32" _
> (ByVal hProcess As Long, _
> lpExitCode As Long) As Long
>
> Public Const PROCESS_QUERY_INFORMATION = &H400
> Public Const STILL_ACTIVE = &H103
>
> 'Sub Test()
> 'Dim StartTime As Double
> 'StartTime = Now
> 'ShellAndWait "ping.exe", 1
> 'MsgBox "Gone " & Format(Now - StartTime, "s") & " seconds"
> 'End Sub
> Sub addResrv_multi_line_test()
> ' il faut sélectionner plusieurs valeurs de la ligne
> Dim Cell As Range, Ligne As Range, Valeur, A As Integer
> Dim LogFile As String
> 'vérifier si Selection est une plage de cellules
> If TypeName(Selection) = "Range" Then
> 'Boucle sur chaque ligne de la sélection
> For Each Ligne In Selection.Rows
> 'Boucle sur chaque cellule de la ligne
> For Each Cell In Ligne.Cells
> Valeur = Valeur & " " & Cell.Value
> ' résultats intermédiaires
> 'MsgBox valeur
> Next Cell
> 'MsgBox Valeur
> 'A = A + 1
> 'toexe = "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line" & A & ".txt"
>
> ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> 'ShellAndWait "cmd.exe /c" & Valeur & " | clip ", 1
> Valeur = "" 'après chaque boucle il vide le contenu de la variable Valeur
> Next
> End If
>
> Dim wshShell
> Set wshShell = CreateObject("wscript.shell")
> 'Execution du fichier - ouverture d'un fichier txt
> wshShell.Run "C:addResrv_multi_line.txt"
>
> End Sub
>
>
> 'Window States (Per Help for Shell function):
> ' 1, 5, 9 Normal with focus.
> ' 2 Minimized with focus.
> ' 3 Maximized with focus.
> ' 4, 8 Normal without focus.
> ' 6, 7 Minimized without focus.
> Sub ShellAndWait(ByVal PathName As String, Optional WindowState)
> Dim hProg As Long
> Dim hProcess As Long, ExitCode As Long
>
> 'fill in the missing parameter and execute the program
> If IsMissing(WindowState) Then WindowState = 1
> hProg = Shell(PathName, WindowState)
> 'hProg is a "process ID under Win32. To get the process handle:
> hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
> Do
> 'populate Exitcode variable
> GetExitCodeProcess hProcess, ExitCode
> DoEvents
> Loop While ExitCode = STILL_ACTIVE
> End Sub
>
>
> ************************************************
>
> Cordialement.
>
>
> "michdenis" wrote:
>
> > Cette procédure fait exactement ce que tu désires.
> > Avec celle-ci, tu ne dois pas mettre la commande
> > "nslookup" dans la cellule, tu n'as comme tu désires
> > à saisir la valeur de la variable que tu veux tester.
> >
> > Tu sélectionnes ta liste et tu lances la procédure.
> >
> > P.S- N'oublie pas de modifier le chemin et le
> > nom du batchFile que tu vas créer .
> >
> > '------------------------------------------
> > Sub Créer_Et_Exécuter_Un_BatFile()
> > Dim Fichier As String, Chemin As String
> > Dim X As Long, C As Range, Texte As String
> > X = FreeFile
> >
> > '******* À RENSEIGNER ********
> > 'Où tu veux que le fichier soit créer
> > Chemin = "C:UsersPoweruser"
> > 'Nom du batchfile à créer
> > Fichier = "Denis.bat"
> > '*******************************
> > On Error Resume Next
> > 'Supprimer le fichier si il existe déjà
> > Kill Chemin & Fichier
> > 'supprime l'erreur au cas où le fichier n'exite pas
> > Err.Clear
> > 'S'assure que la selection est une plage de cellule
> >
> > If TypeName(Selection) = "Range" Then
> > 'Ce qui suit met dans la variable "texte" la
> > 'composition des lignes de code du BatchFile
> > Texte = "Echo on " & vbCrLf
> > Texte = "cd" & vbCrLf
> > Texte = texte & "c:" & vbCrLf
> > Texte = texte & "Cls" & vbCrLf
> > For Each C In Selection.Cells
> > If C <> "" Then
> > texte = Texte & "nslookup.exe " & C & vbCrLf
> > texte = Texte & "Pause" & vbCrLf
> > End If
> > Next
> > Texte = Texte & "exit"
> > End If
> > 'Création du fichier lui-même
> > Open Chemin & Fichier For Append As #X
> > 'Copie de la variable dans le fichier
> > Print #X, Texte
> > 'Fermeture du fichier batchfile
> > Close #X
> > 'Exécution du BatchFile
> > Shell "Cmd.exe /K " & Chemin & Fichier, vbNormalFocus
> > End Sub
> > '------------------------------------------
> >
> >
> >
> >
> >
Voici quelques explications sur cette ligne de commande :
ShellAndWait "cmd.exe /c " & Valeur & ">>C:addResrv_multi_line.txt", 1
L'utilisation des ">>" permet d'ajouter le résultat d'une commande DOS
à l'information du fichier déjà existant si le fichier n'est pas vide.
tu peux si tu le désires effacer et écrire le résultat de la
commande en utilisant un seul ">" dans la commande.
ShellAndWait "cmd.exe /c " & Valeur & ">C:addResrv_multi_line.txt", 1
On pourrait aussi le faire de cette façon en détournant un peu le rôle
de la commande "Echo off" en DOS comme ceci :
Dans votre programme, cela se traduit de façon suivante
Commande = commande = "cmd.exe /c echo off >C:addResrv_multi_line.txt"
Shell commande, vbHide
Vous insérez ces 2 lignes de code avant le début de la boucle. Cela videra
complètement le contenu du fichier existant.
Pour supprimer un fichier existant
Kill C:addResrv_multi_line.txt
Attention, le fichier est totalement détruit, il ne se
retrouve pas à la poubelle de Windows.
Pour effacer le contenu du fichier texte, vous pouvez utiliser
la même commande :
"ben" a écrit dans le message de groupe de discussion :
Bonjour,
Et merci infiniment pour votre aide.
J'aimerais pour finaliser le projet faire au cas ou, un clear du fichier
txt ?.
Ou bien la suppression du fichier s'il existe avant l'execution.
Merci de me faire les 2 propositions.
Cordialement.
"michdenis" wrote:
> Les 2 lignes ajoutées vont s'exécuter pour tous les items
> contenus dans la boucle. Si tu ne désires inscrire une date
> que pour l'ensemble du code contenu dans la boucle,
> place ces 2 lignes de code avant le début de la ligne For ...
> de la même procédure.
>
> commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> Shell commande, vbHide
>
>
> "michdenis" a écrit dans le message de groupe de discussion :
> #
> Attention aux coupures de lignes de code par le service de messagerie.
>
> N.B. Semble-t-il que la solution retenue s'est éloignée de ta
> demande initiale !
>
> Dans ton code, avant cette ligne de la procédure: Test
> ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
>
> Tu inscris les commandes dans cet ordre :
> Tu peux aussi modifier le format date que tu désires dans "dd/mmm/yyyy H:MM:SS"
> commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> Shell commande, vbHide
> ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
>
> P.S- Tu dois ajouter à la déclaration des variables en début de procédure
> Dim Commande As String
>
>
> "ben" a écrit dans le message de groupe de discussion :
>
> Bonjour michdenis,
>
> Voici ma solution, cependant j'aimerais juste rajouter la date d'exécution
> pour chaque traitement, car j'ai qu'un seule fichier.
> ************************************************
> Declare Function OpenProcess Lib "kernel32" _
> (ByVal dwDesiredAccess As Long, _
> ByVal bInheritHandle As Long, _
> ByVal dwProcessId As Long) As Long
>
> Declare Function GetExitCodeProcess Lib "kernel32" _
> (ByVal hProcess As Long, _
> lpExitCode As Long) As Long
>
> Public Const PROCESS_QUERY_INFORMATION = &H400
> Public Const STILL_ACTIVE = &H103
>
> 'Sub Test()
> 'Dim StartTime As Double
> 'StartTime = Now
> 'ShellAndWait "ping.exe", 1
> 'MsgBox "Gone " & Format(Now - StartTime, "s") & " seconds"
> 'End Sub
> Sub addResrv_multi_line_test()
> ' il faut sélectionner plusieurs valeurs de la ligne
> Dim Cell As Range, Ligne As Range, Valeur, A As Integer
> Dim LogFile As String
> 'vérifier si Selection est une plage de cellules
> If TypeName(Selection) = "Range" Then
> 'Boucle sur chaque ligne de la sélection
> For Each Ligne In Selection.Rows
> 'Boucle sur chaque cellule de la ligne
> For Each Cell In Ligne.Cells
> Valeur = Valeur & " " & Cell.Value
> ' résultats intermédiaires
> 'MsgBox valeur
> Next Cell
> 'MsgBox Valeur
> 'A = A + 1
> 'toexe = "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line" & A & ".txt"
>
> ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> 'ShellAndWait "cmd.exe /c" & Valeur & " | clip ", 1
> Valeur = "" 'après chaque boucle il vide le contenu de la variable Valeur
> Next
> End If
>
> Dim wshShell
> Set wshShell = CreateObject("wscript.shell")
> 'Execution du fichier - ouverture d'un fichier txt
> wshShell.Run "C:addResrv_multi_line.txt"
>
> End Sub
>
>
> 'Window States (Per Help for Shell function):
> ' 1, 5, 9 Normal with focus.
> ' 2 Minimized with focus.
> ' 3 Maximized with focus.
> ' 4, 8 Normal without focus.
> ' 6, 7 Minimized without focus.
> Sub ShellAndWait(ByVal PathName As String, Optional WindowState)
> Dim hProg As Long
> Dim hProcess As Long, ExitCode As Long
>
> 'fill in the missing parameter and execute the program
> If IsMissing(WindowState) Then WindowState = 1
> hProg = Shell(PathName, WindowState)
> 'hProg is a "process ID under Win32. To get the process handle:
> hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
> Do
> 'populate Exitcode variable
> GetExitCodeProcess hProcess, ExitCode
> DoEvents
> Loop While ExitCode = STILL_ACTIVE
> End Sub
>
>
> ************************************************
>
> Cordialement.
>
>
> "michdenis" wrote:
>
> > Cette procédure fait exactement ce que tu désires.
> > Avec celle-ci, tu ne dois pas mettre la commande
> > "nslookup" dans la cellule, tu n'as comme tu désires
> > à saisir la valeur de la variable que tu veux tester.
> >
> > Tu sélectionnes ta liste et tu lances la procédure.
> >
> > P.S- N'oublie pas de modifier le chemin et le
> > nom du batchFile que tu vas créer .
> >
> > '------------------------------------------
> > Sub Créer_Et_Exécuter_Un_BatFile()
> > Dim Fichier As String, Chemin As String
> > Dim X As Long, C As Range, Texte As String
> > X = FreeFile
> >
> > '******* À RENSEIGNER ********
> > 'Où tu veux que le fichier soit créer
> > Chemin = "C:UsersPoweruser"
> > 'Nom du batchfile à créer
> > Fichier = "Denis.bat"
> > '*******************************
> > On Error Resume Next
> > 'Supprimer le fichier si il existe déjà
> > Kill Chemin & Fichier
> > 'supprime l'erreur au cas où le fichier n'exite pas
> > Err.Clear
> > 'S'assure que la selection est une plage de cellule
> >
> > If TypeName(Selection) = "Range" Then
> > 'Ce qui suit met dans la variable "texte" la
> > 'composition des lignes de code du BatchFile
> > Texte = "Echo on " & vbCrLf
> > Texte = "cd" & vbCrLf
> > Texte = texte & "c:" & vbCrLf
> > Texte = texte & "Cls" & vbCrLf
> > For Each C In Selection.Cells
> > If C <> "" Then
> > texte = Texte & "nslookup.exe " & C & vbCrLf
> > texte = Texte & "Pause" & vbCrLf
> > End If
> > Next
> > Texte = Texte & "exit"
> > End If
> > 'Création du fichier lui-même
> > Open Chemin & Fichier For Append As #X
> > 'Copie de la variable dans le fichier
> > Print #X, Texte
> > 'Fermeture du fichier batchfile
> > Close #X
> > 'Exécution du BatchFile
> > Shell "Cmd.exe /K " & Chemin & Fichier, vbNormalFocus
> > End Sub
> > '------------------------------------------
> >
> >
> >
> >
> >
Voici quelques explications sur cette ligne de commande :
ShellAndWait "cmd.exe /c " & Valeur & ">>C:addResrv_multi_line.txt", 1
L'utilisation des ">>" permet d'ajouter le résultat d'une commande DOS
à l'information du fichier déjà existant si le fichier n'est pas vide.
tu peux si tu le désires effacer et écrire le résultat de la
commande en utilisant un seul ">" dans la commande.
ShellAndWait "cmd.exe /c " & Valeur & ">C:addResrv_multi_line.txt", 1
On pourrait aussi le faire de cette façon en détournant un peu le rôle
de la commande "Echo off" en DOS comme ceci :
Dans votre programme, cela se traduit de façon suivante
Commande = commande = "cmd.exe /c echo off >C:addResrv_multi_line.txt"
Shell commande, vbHide
Vous insérez ces 2 lignes de code avant le début de la boucle. Cela videra
complètement le contenu du fichier existant.
Pour supprimer un fichier existant
Kill C:addResrv_multi_line.txt
Attention, le fichier est totalement détruit, il ne se
retrouve pas à la poubelle de Windows.
Pour effacer le contenu du fichier texte, vous pouvez utiliser
la même commande :
"ben" a écrit dans le message de groupe de discussion :
Bonjour,
Et merci infiniment pour votre aide.
J'aimerais pour finaliser le projet faire au cas ou, un clear du fichier
txt ?.
Ou bien la suppression du fichier s'il existe avant l'execution.
Merci de me faire les 2 propositions.
Cordialement.
"michdenis" wrote:
> Les 2 lignes ajoutées vont s'exécuter pour tous les items
> contenus dans la boucle. Si tu ne désires inscrire une date
> que pour l'ensemble du code contenu dans la boucle,
> place ces 2 lignes de code avant le début de la ligne For ...
> de la même procédure.
>
> commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> Shell commande, vbHide
>
>
> "michdenis" a écrit dans le message de groupe de discussion :
> #
> Attention aux coupures de lignes de code par le service de messagerie.
>
> N.B. Semble-t-il que la solution retenue s'est éloignée de ta
> demande initiale !
>
> Dans ton code, avant cette ligne de la procédure: Test
> ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
>
> Tu inscris les commandes dans cet ordre :
> Tu peux aussi modifier le format date que tu désires dans "dd/mmm/yyyy H:MM:SS"
> commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> Shell commande, vbHide
> ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
>
> P.S- Tu dois ajouter à la déclaration des variables en début de procédure
> Dim Commande As String
>
>
> "ben" a écrit dans le message de groupe de discussion
> :
>
> Bonjour michdenis,
>
> Voici ma solution, cependant j'aimerais juste rajouter la date d'exécution
> pour chaque traitement, car j'ai qu'un seule fichier.
> ************************************************
> Declare Function OpenProcess Lib "kernel32" _
> (ByVal dwDesiredAccess As Long, _
> ByVal bInheritHandle As Long, _
> ByVal dwProcessId As Long) As Long
>
> Declare Function GetExitCodeProcess Lib "kernel32" _
> (ByVal hProcess As Long, _
> lpExitCode As Long) As Long
>
> Public Const PROCESS_QUERY_INFORMATION = &H400
> Public Const STILL_ACTIVE = &H103
>
> 'Sub Test()
> 'Dim StartTime As Double
> 'StartTime = Now
> 'ShellAndWait "ping.exe", 1
> 'MsgBox "Gone " & Format(Now - StartTime, "s") & " seconds"
> 'End Sub
> Sub addResrv_multi_line_test()
> ' il faut sélectionner plusieurs valeurs de la ligne
> Dim Cell As Range, Ligne As Range, Valeur, A As Integer
> Dim LogFile As String
> 'vérifier si Selection est une plage de cellules
> If TypeName(Selection) = "Range" Then
> 'Boucle sur chaque ligne de la sélection
> For Each Ligne In Selection.Rows
> 'Boucle sur chaque cellule de la ligne
> For Each Cell In Ligne.Cells
> Valeur = Valeur & " " & Cell.Value
> ' résultats intermédiaires
> 'MsgBox valeur
> Next Cell
> 'MsgBox Valeur
> 'A = A + 1
> 'toexe = "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line" & A & ".txt"
>
> ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> 'ShellAndWait "cmd.exe /c" & Valeur & " | clip ", 1
> Valeur = "" 'après chaque boucle il vide le contenu de la variable Valeur
> Next
> End If
>
> Dim wshShell
> Set wshShell = CreateObject("wscript.shell")
> 'Execution du fichier - ouverture d'un fichier txt
> wshShell.Run "C:addResrv_multi_line.txt"
>
> End Sub
>
>
> 'Window States (Per Help for Shell function):
> ' 1, 5, 9 Normal with focus.
> ' 2 Minimized with focus.
> ' 3 Maximized with focus.
> ' 4, 8 Normal without focus.
> ' 6, 7 Minimized without focus.
> Sub ShellAndWait(ByVal PathName As String, Optional WindowState)
> Dim hProg As Long
> Dim hProcess As Long, ExitCode As Long
>
> 'fill in the missing parameter and execute the program
> If IsMissing(WindowState) Then WindowState = 1
> hProg = Shell(PathName, WindowState)
> 'hProg is a "process ID under Win32. To get the process handle:
> hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
> Do
> 'populate Exitcode variable
> GetExitCodeProcess hProcess, ExitCode
> DoEvents
> Loop While ExitCode = STILL_ACTIVE
> End Sub
>
>
> ************************************************
>
> Cordialement.
>
>
> "michdenis" wrote:
>
> > Cette procédure fait exactement ce que tu désires.
> > Avec celle-ci, tu ne dois pas mettre la commande
> > "nslookup" dans la cellule, tu n'as comme tu désires
> > à saisir la valeur de la variable que tu veux tester.
> >
> > Tu sélectionnes ta liste et tu lances la procédure.
> >
> > P.S- N'oublie pas de modifier le chemin et le
> > nom du batchFile que tu vas créer .
> >
> > '------------------------------------------
> > Sub Créer_Et_Exécuter_Un_BatFile()
> > Dim Fichier As String, Chemin As String
> > Dim X As Long, C As Range, Texte As String
> > X = FreeFile
> >
> > '******* À RENSEIGNER ********
> > 'Où tu veux que le fichier soit créer
> > Chemin = "C:UsersPoweruser"
> > 'Nom du batchfile à créer
> > Fichier = "Denis.bat"
> > '*******************************
> > On Error Resume Next
> > 'Supprimer le fichier si il existe déjà
> > Kill Chemin & Fichier
> > 'supprime l'erreur au cas où le fichier n'exite pas
> > Err.Clear
> > 'S'assure que la selection est une plage de cellule
> >
> > If TypeName(Selection) = "Range" Then
> > 'Ce qui suit met dans la variable "texte" la
> > 'composition des lignes de code du BatchFile
> > Texte = "Echo on " & vbCrLf
> > Texte = "cd" & vbCrLf
> > Texte = texte & "c:" & vbCrLf
> > Texte = texte & "Cls" & vbCrLf
> > For Each C In Selection.Cells
> > If C <> "" Then
> > texte = Texte & "nslookup.exe " & C & vbCrLf
> > texte = Texte & "Pause" & vbCrLf
> > End If
> > Next
> > Texte = Texte & "exit"
> > End If
> > 'Création du fichier lui-même
> > Open Chemin & Fichier For Append As #X
> > 'Copie de la variable dans le fichier
> > Print #X, Texte
> > 'Fermeture du fichier batchfile
> > Close #X
> > 'Exécution du BatchFile
> > Shell "Cmd.exe /K " & Chemin & Fichier, vbNormalFocus
> > End Sub
> > '------------------------------------------
> >
> >
> >
> >
> >
Voici quelques explications sur cette ligne de commande :
ShellAndWait "cmd.exe /c " & Valeur & ">>C:addResrv_multi_line.txt", 1
L'utilisation des ">>" permet d'ajouter le résultat d'une commande DOS
à l'information du fichier déjà existant si le fichier n'est pas vide.
tu peux si tu le désires effacer et écrire le résultat de la
commande en utilisant un seul ">" dans la commande.
ShellAndWait "cmd.exe /c " & Valeur & ">C:addResrv_multi_line.txt", 1
On pourrait aussi le faire de cette façon en détournant un peu le rôle
de la commande "Echo off" en DOS comme ceci :
Dans votre programme, cela se traduit de façon suivante
Commande = commande = "cmd.exe /c echo off >C:addResrv_multi_line.txt"
Shell commande, vbHide
Vous insérez ces 2 lignes de code avant le début de la boucle. Cela videra
complètement le contenu du fichier existant.
Pour supprimer un fichier existant
Kill C:addResrv_multi_line.txt
Attention, le fichier est totalement détruit, il ne se
retrouve pas à la poubelle de Windows.
Pour effacer le contenu du fichier texte, vous pouvez utiliser
la même commande :
"ben" <ben@discussions.microsoft.com> a écrit dans le message de groupe de discussion :
FE1B43C0-9707-49A0-83F3-CA9711FD4A51@microsoft.com...
Bonjour,
Et merci infiniment pour votre aide.
J'aimerais pour finaliser le projet faire au cas ou, un clear du fichier
txt ?.
Ou bien la suppression du fichier s'il existe avant l'execution.
Merci de me faire les 2 propositions.
Cordialement.
"michdenis" wrote:
> Les 2 lignes ajoutées vont s'exécuter pour tous les items
> contenus dans la boucle. Si tu ne désires inscrire une date
> que pour l'ensemble du code contenu dans la boucle,
> place ces 2 lignes de code avant le début de la ligne For ...
> de la même procédure.
>
> commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> Shell commande, vbHide
>
>
> "michdenis" <michdenis@hotmail.com> a écrit dans le message de groupe de discussion :
> #1hANOclJHA.1172@TK2MSFTNGP04.phx.gbl...
> Attention aux coupures de lignes de code par le service de messagerie.
>
> N.B. Semble-t-il que la solution retenue s'est éloignée de ta
> demande initiale !
>
> Dans ton code, avant cette ligne de la procédure: Test
> ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
>
> Tu inscris les commandes dans cet ordre :
> Tu peux aussi modifier le format date que tu désires dans "dd/mmm/yyyy H:MM:SS"
> commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> Shell commande, vbHide
> ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
>
> P.S- Tu dois ajouter à la déclaration des variables en début de procédure
> Dim Commande As String
>
>
> "ben" <ben@discussions.microsoft.com> a écrit dans le message de groupe de discussion
> :
> 41899344-EDF7-4431-AA45-2A64B3B1986A@microsoft.com...
> Bonjour michdenis,
>
> Voici ma solution, cependant j'aimerais juste rajouter la date d'exécution
> pour chaque traitement, car j'ai qu'un seule fichier.
> ************************************************
> Declare Function OpenProcess Lib "kernel32" _
> (ByVal dwDesiredAccess As Long, _
> ByVal bInheritHandle As Long, _
> ByVal dwProcessId As Long) As Long
>
> Declare Function GetExitCodeProcess Lib "kernel32" _
> (ByVal hProcess As Long, _
> lpExitCode As Long) As Long
>
> Public Const PROCESS_QUERY_INFORMATION = &H400
> Public Const STILL_ACTIVE = &H103
>
> 'Sub Test()
> 'Dim StartTime As Double
> 'StartTime = Now
> 'ShellAndWait "ping.exe", 1
> 'MsgBox "Gone " & Format(Now - StartTime, "s") & " seconds"
> 'End Sub
> Sub addResrv_multi_line_test()
> ' il faut sélectionner plusieurs valeurs de la ligne
> Dim Cell As Range, Ligne As Range, Valeur, A As Integer
> Dim LogFile As String
> 'vérifier si Selection est une plage de cellules
> If TypeName(Selection) = "Range" Then
> 'Boucle sur chaque ligne de la sélection
> For Each Ligne In Selection.Rows
> 'Boucle sur chaque cellule de la ligne
> For Each Cell In Ligne.Cells
> Valeur = Valeur & " " & Cell.Value
> ' résultats intermédiaires
> 'MsgBox valeur
> Next Cell
> 'MsgBox Valeur
> 'A = A + 1
> 'toexe = "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line" & A & ".txt"
>
> ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> 'ShellAndWait "cmd.exe /c" & Valeur & " | clip ", 1
> Valeur = "" 'après chaque boucle il vide le contenu de la variable Valeur
> Next
> End If
>
> Dim wshShell
> Set wshShell = CreateObject("wscript.shell")
> 'Execution du fichier - ouverture d'un fichier txt
> wshShell.Run "C:addResrv_multi_line.txt"
>
> End Sub
>
>
> 'Window States (Per Help for Shell function):
> ' 1, 5, 9 Normal with focus.
> ' 2 Minimized with focus.
> ' 3 Maximized with focus.
> ' 4, 8 Normal without focus.
> ' 6, 7 Minimized without focus.
> Sub ShellAndWait(ByVal PathName As String, Optional WindowState)
> Dim hProg As Long
> Dim hProcess As Long, ExitCode As Long
>
> 'fill in the missing parameter and execute the program
> If IsMissing(WindowState) Then WindowState = 1
> hProg = Shell(PathName, WindowState)
> 'hProg is a "process ID under Win32. To get the process handle:
> hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
> Do
> 'populate Exitcode variable
> GetExitCodeProcess hProcess, ExitCode
> DoEvents
> Loop While ExitCode = STILL_ACTIVE
> End Sub
>
>
> ************************************************
>
> Cordialement.
>
>
> "michdenis" wrote:
>
> > Cette procédure fait exactement ce que tu désires.
> > Avec celle-ci, tu ne dois pas mettre la commande
> > "nslookup" dans la cellule, tu n'as comme tu désires
> > à saisir la valeur de la variable que tu veux tester.
> >
> > Tu sélectionnes ta liste et tu lances la procédure.
> >
> > P.S- N'oublie pas de modifier le chemin et le
> > nom du batchFile que tu vas créer .
> >
> > '------------------------------------------
> > Sub Créer_Et_Exécuter_Un_BatFile()
> > Dim Fichier As String, Chemin As String
> > Dim X As Long, C As Range, Texte As String
> > X = FreeFile
> >
> > '******* À RENSEIGNER ********
> > 'Où tu veux que le fichier soit créer
> > Chemin = "C:UsersPoweruser"
> > 'Nom du batchfile à créer
> > Fichier = "Denis.bat"
> > '*******************************
> > On Error Resume Next
> > 'Supprimer le fichier si il existe déjà
> > Kill Chemin & Fichier
> > 'supprime l'erreur au cas où le fichier n'exite pas
> > Err.Clear
> > 'S'assure que la selection est une plage de cellule
> >
> > If TypeName(Selection) = "Range" Then
> > 'Ce qui suit met dans la variable "texte" la
> > 'composition des lignes de code du BatchFile
> > Texte = "Echo on " & vbCrLf
> > Texte = "cd" & vbCrLf
> > Texte = texte & "c:" & vbCrLf
> > Texte = texte & "Cls" & vbCrLf
> > For Each C In Selection.Cells
> > If C <> "" Then
> > texte = Texte & "nslookup.exe " & C & vbCrLf
> > texte = Texte & "Pause" & vbCrLf
> > End If
> > Next
> > Texte = Texte & "exit"
> > End If
> > 'Création du fichier lui-même
> > Open Chemin & Fichier For Append As #X
> > 'Copie de la variable dans le fichier
> > Print #X, Texte
> > 'Fermeture du fichier batchfile
> > Close #X
> > 'Exécution du BatchFile
> > Shell "Cmd.exe /K " & Chemin & Fichier, vbNormalFocus
> > End Sub
> > '------------------------------------------
> >
> >
> >
> >
> >
Voici quelques explications sur cette ligne de commande :
ShellAndWait "cmd.exe /c " & Valeur & ">>C:addResrv_multi_line.txt", 1
L'utilisation des ">>" permet d'ajouter le résultat d'une commande DOS
à l'information du fichier déjà existant si le fichier n'est pas vide.
tu peux si tu le désires effacer et écrire le résultat de la
commande en utilisant un seul ">" dans la commande.
ShellAndWait "cmd.exe /c " & Valeur & ">C:addResrv_multi_line.txt", 1
On pourrait aussi le faire de cette façon en détournant un peu le rôle
de la commande "Echo off" en DOS comme ceci :
Dans votre programme, cela se traduit de façon suivante
Commande = commande = "cmd.exe /c echo off >C:addResrv_multi_line.txt"
Shell commande, vbHide
Vous insérez ces 2 lignes de code avant le début de la boucle. Cela videra
complètement le contenu du fichier existant.
Pour supprimer un fichier existant
Kill C:addResrv_multi_line.txt
Attention, le fichier est totalement détruit, il ne se
retrouve pas à la poubelle de Windows.
Pour effacer le contenu du fichier texte, vous pouvez utiliser
la même commande :
"ben" a écrit dans le message de groupe de discussion :
Bonjour,
Et merci infiniment pour votre aide.
J'aimerais pour finaliser le projet faire au cas ou, un clear du fichier
txt ?.
Ou bien la suppression du fichier s'il existe avant l'execution.
Merci de me faire les 2 propositions.
Cordialement.
"michdenis" wrote:
> Les 2 lignes ajoutées vont s'exécuter pour tous les items
> contenus dans la boucle. Si tu ne désires inscrire une date
> que pour l'ensemble du code contenu dans la boucle,
> place ces 2 lignes de code avant le début de la ligne For ...
> de la même procédure.
>
> commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> Shell commande, vbHide
>
>
> "michdenis" a écrit dans le message de groupe de discussion :
> #
> Attention aux coupures de lignes de code par le service de messagerie.
>
> N.B. Semble-t-il que la solution retenue s'est éloignée de ta
> demande initiale !
>
> Dans ton code, avant cette ligne de la procédure: Test
> ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
>
> Tu inscris les commandes dans cet ordre :
> Tu peux aussi modifier le format date que tu désires dans "dd/mmm/yyyy H:MM:SS"
> commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> Shell commande, vbHide
> ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
>
> P.S- Tu dois ajouter à la déclaration des variables en début de procédure
> Dim Commande As String
>
>
> "ben" a écrit dans le message de groupe de discussion
> :
>
> Bonjour michdenis,
>
> Voici ma solution, cependant j'aimerais juste rajouter la date d'exécution
> pour chaque traitement, car j'ai qu'un seule fichier.
> ************************************************
> Declare Function OpenProcess Lib "kernel32" _
> (ByVal dwDesiredAccess As Long, _
> ByVal bInheritHandle As Long, _
> ByVal dwProcessId As Long) As Long
>
> Declare Function GetExitCodeProcess Lib "kernel32" _
> (ByVal hProcess As Long, _
> lpExitCode As Long) As Long
>
> Public Const PROCESS_QUERY_INFORMATION = &H400
> Public Const STILL_ACTIVE = &H103
>
> 'Sub Test()
> 'Dim StartTime As Double
> 'StartTime = Now
> 'ShellAndWait "ping.exe", 1
> 'MsgBox "Gone " & Format(Now - StartTime, "s") & " seconds"
> 'End Sub
> Sub addResrv_multi_line_test()
> ' il faut sélectionner plusieurs valeurs de la ligne
> Dim Cell As Range, Ligne As Range, Valeur, A As Integer
> Dim LogFile As String
> 'vérifier si Selection est une plage de cellules
> If TypeName(Selection) = "Range" Then
> 'Boucle sur chaque ligne de la sélection
> For Each Ligne In Selection.Rows
> 'Boucle sur chaque cellule de la ligne
> For Each Cell In Ligne.Cells
> Valeur = Valeur & " " & Cell.Value
> ' résultats intermédiaires
> 'MsgBox valeur
> Next Cell
> 'MsgBox Valeur
> 'A = A + 1
> 'toexe = "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line" & A & ".txt"
>
> ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> 'ShellAndWait "cmd.exe /c" & Valeur & " | clip ", 1
> Valeur = "" 'après chaque boucle il vide le contenu de la variable Valeur
> Next
> End If
>
> Dim wshShell
> Set wshShell = CreateObject("wscript.shell")
> 'Execution du fichier - ouverture d'un fichier txt
> wshShell.Run "C:addResrv_multi_line.txt"
>
> End Sub
>
>
> 'Window States (Per Help for Shell function):
> ' 1, 5, 9 Normal with focus.
> ' 2 Minimized with focus.
> ' 3 Maximized with focus.
> ' 4, 8 Normal without focus.
> ' 6, 7 Minimized without focus.
> Sub ShellAndWait(ByVal PathName As String, Optional WindowState)
> Dim hProg As Long
> Dim hProcess As Long, ExitCode As Long
>
> 'fill in the missing parameter and execute the program
> If IsMissing(WindowState) Then WindowState = 1
> hProg = Shell(PathName, WindowState)
> 'hProg is a "process ID under Win32. To get the process handle:
> hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
> Do
> 'populate Exitcode variable
> GetExitCodeProcess hProcess, ExitCode
> DoEvents
> Loop While ExitCode = STILL_ACTIVE
> End Sub
>
>
> ************************************************
>
> Cordialement.
>
>
> "michdenis" wrote:
>
> > Cette procédure fait exactement ce que tu désires.
> > Avec celle-ci, tu ne dois pas mettre la commande
> > "nslookup" dans la cellule, tu n'as comme tu désires
> > à saisir la valeur de la variable que tu veux tester.
> >
> > Tu sélectionnes ta liste et tu lances la procédure.
> >
> > P.S- N'oublie pas de modifier le chemin et le
> > nom du batchFile que tu vas créer .
> >
> > '------------------------------------------
> > Sub Créer_Et_Exécuter_Un_BatFile()
> > Dim Fichier As String, Chemin As String
> > Dim X As Long, C As Range, Texte As String
> > X = FreeFile
> >
> > '******* À RENSEIGNER ********
> > 'Où tu veux que le fichier soit créer
> > Chemin = "C:UsersPoweruser"
> > 'Nom du batchfile à créer
> > Fichier = "Denis.bat"
> > '*******************************
> > On Error Resume Next
> > 'Supprimer le fichier si il existe déjà
> > Kill Chemin & Fichier
> > 'supprime l'erreur au cas où le fichier n'exite pas
> > Err.Clear
> > 'S'assure que la selection est une plage de cellule
> >
> > If TypeName(Selection) = "Range" Then
> > 'Ce qui suit met dans la variable "texte" la
> > 'composition des lignes de code du BatchFile
> > Texte = "Echo on " & vbCrLf
> > Texte = "cd" & vbCrLf
> > Texte = texte & "c:" & vbCrLf
> > Texte = texte & "Cls" & vbCrLf
> > For Each C In Selection.Cells
> > If C <> "" Then
> > texte = Texte & "nslookup.exe " & C & vbCrLf
> > texte = Texte & "Pause" & vbCrLf
> > End If
> > Next
> > Texte = Texte & "exit"
> > End If
> > 'Création du fichier lui-même
> > Open Chemin & Fichier For Append As #X
> > 'Copie de la variable dans le fichier
> > Print #X, Texte
> > 'Fermeture du fichier batchfile
> > Close #X
> > 'Exécution du BatchFile
> > Shell "Cmd.exe /K " & Chemin & Fichier, vbNormalFocus
> > End Sub
> > '------------------------------------------
> >
> >
> >
> >
> >
Que veux-tu dire par "ouvrir un cmd.exe" ?
C'est un exécutable et non un fichier texte...
Que veux-tu faire par la commande sendkeys ?
"ALT+SPACE+E+P " ceci n'est pas une réponse...
Tu expliques ?
"ben" a écrit dans le message de groupe de discussion :
Bonjour,
Est-possible d'ouvrir un cmd.exe et faire un senkeys de cette combinaison
de touche : ALT+SPACE+E+P ?.
Merci.
Cordialement.
"michdenis" wrote:
> Voici quelques explications sur cette ligne de commande :
> ShellAndWait "cmd.exe /c " & Valeur & ">>C:addResrv_multi_line.txt", 1
>
> L'utilisation des ">>" permet d'ajouter le résultat d'une commande DOS
> à l'information du fichier déjà existant si le fichier n'est pas vide.
> tu peux si tu le désires effacer et écrire le résultat de la
> commande en utilisant un seul ">" dans la commande.
> ShellAndWait "cmd.exe /c " & Valeur & ">C:addResrv_multi_line.txt", 1
>
> On pourrait aussi le faire de cette façon en détournant un peu le rôle
> de la commande "Echo off" en DOS comme ceci :
> Dans votre programme, cela se traduit de façon suivante
> Commande = commande = "cmd.exe /c echo off >C:addResrv_multi_line.txt"
> Shell commande, vbHide
> Vous insérez ces 2 lignes de code avant le début de la boucle. Cela videra
> complètement le contenu du fichier existant.
>
> Pour supprimer un fichier existant
> Kill C:addResrv_multi_line.txt
>
> Attention, le fichier est totalement détruit, il ne se
> retrouve pas à la poubelle de Windows.
>
> Pour effacer le contenu du fichier texte, vous pouvez utiliser
> la même commande :
>
>
>
> "ben" a écrit dans le message de groupe de discussion :
>
> Bonjour,
>
> Et merci infiniment pour votre aide.
>
> J'aimerais pour finaliser le projet faire au cas ou, un clear du fichier
> txt ?.
> Ou bien la suppression du fichier s'il existe avant l'execution.
>
> Merci de me faire les 2 propositions.
>
> Cordialement.
>
>
>
> "michdenis" wrote:
>
> > Les 2 lignes ajoutées vont s'exécuter pour tous les items
> > contenus dans la boucle. Si tu ne désires inscrire une date
> > que pour l'ensemble du code contenu dans la boucle,
> > place ces 2 lignes de code avant le début de la ligne For ...
> > de la même procédure.
> >
> > commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> > & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> > Shell commande, vbHide
> >
> >
> > "michdenis" a écrit dans le message de groupe de discussion :
> > #
> > Attention aux coupures de lignes de code par le service de messagerie.
> >
> > N.B. Semble-t-il que la solution retenue s'est éloignée de ta
> > demande initiale !
> >
> > Dans ton code, avant cette ligne de la procédure: Test
> > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> >
> > Tu inscris les commandes dans cet ordre :
> > Tu peux aussi modifier le format date que tu désires dans "dd/mmm/yyyy H:MM:SS"
> > commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> > & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> > Shell commande, vbHide
> > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> >
> > P.S- Tu dois ajouter à la déclaration des variables en début de procédure
> > Dim Commande As String
> >
> >
> > "ben" a écrit dans le message de groupe de discussion
> > :
> >
> > Bonjour michdenis,
> >
> > Voici ma solution, cependant j'aimerais juste rajouter la date d'exécution
> > pour chaque traitement, car j'ai qu'un seule fichier.
> > ************************************************
> > Declare Function OpenProcess Lib "kernel32" _
> > (ByVal dwDesiredAccess As Long, _
> > ByVal bInheritHandle As Long, _
> > ByVal dwProcessId As Long) As Long
> >
> > Declare Function GetExitCodeProcess Lib "kernel32" _
> > (ByVal hProcess As Long, _
> > lpExitCode As Long) As Long
> >
> > Public Const PROCESS_QUERY_INFORMATION = &H400
> > Public Const STILL_ACTIVE = &H103
> >
> > 'Sub Test()
> > 'Dim StartTime As Double
> > 'StartTime = Now
> > 'ShellAndWait "ping.exe", 1
> > 'MsgBox "Gone " & Format(Now - StartTime, "s") & " seconds"
> > 'End Sub
> > Sub addResrv_multi_line_test()
> > ' il faut sélectionner plusieurs valeurs de la ligne
> > Dim Cell As Range, Ligne As Range, Valeur, A As Integer
> > Dim LogFile As String
> > 'vérifier si Selection est une plage de cellules
> > If TypeName(Selection) = "Range" Then
> > 'Boucle sur chaque ligne de la sélection
> > For Each Ligne In Selection.Rows
> > 'Boucle sur chaque cellule de la ligne
> > For Each Cell In Ligne.Cells
> > Valeur = Valeur & " " & Cell.Value
> > ' résultats intermédiaires
> > 'MsgBox valeur
> > Next Cell
> > 'MsgBox Valeur
> > 'A = A + 1
> > 'toexe = "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line" & A & ".txt"
> >
> > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > 'ShellAndWait "cmd.exe /c" & Valeur & " | clip ", 1
> > Valeur = "" 'après chaque boucle il vide le contenu de la variable Valeur
> > Next
> > End If
> >
> > Dim wshShell
> > Set wshShell = CreateObject("wscript.shell")
> > 'Execution du fichier - ouverture d'un fichier txt
> > wshShell.Run "C:addResrv_multi_line.txt"
> >
> > End Sub
> >
> >
> > 'Window States (Per Help for Shell function):
> > ' 1, 5, 9 Normal with focus.
> > ' 2 Minimized with focus.
> > ' 3 Maximized with focus.
> > ' 4, 8 Normal without focus.
> > ' 6, 7 Minimized without focus.
> > Sub ShellAndWait(ByVal PathName As String, Optional WindowState)
> > Dim hProg As Long
> > Dim hProcess As Long, ExitCode As Long
> >
> > 'fill in the missing parameter and execute the program
> > If IsMissing(WindowState) Then WindowState = 1
> > hProg = Shell(PathName, WindowState)
> > 'hProg is a "process ID under Win32. To get the process handle:
> > hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
> > Do
> > 'populate Exitcode variable
> > GetExitCodeProcess hProcess, ExitCode
> > DoEvents
> > Loop While ExitCode = STILL_ACTIVE
> > End Sub
> >
> >
> > ************************************************
> >
> > Cordialement.
> >
> >
> > "michdenis" wrote:
> >
> > > Cette procédure fait exactement ce que tu désires.
> > > Avec celle-ci, tu ne dois pas mettre la commande
> > > "nslookup" dans la cellule, tu n'as comme tu désires
> > > à saisir la valeur de la variable que tu veux tester.
> > >
> > > Tu sélectionnes ta liste et tu lances la procédure.
> > >
> > > P.S- N'oublie pas de modifier le chemin et le
> > > nom du batchFile que tu vas créer .
> > >
> > > '------------------------------------------
> > > Sub Créer_Et_Exécuter_Un_BatFile()
> > > Dim Fichier As String, Chemin As String
> > > Dim X As Long, C As Range, Texte As String
> > > X = FreeFile
> > >
> > > '******* À RENSEIGNER ********
> > > 'Où tu veux que le fichier soit créer
> > > Chemin = "C:UsersPoweruser"
> > > 'Nom du batchfile à créer
> > > Fichier = "Denis.bat"
> > > '*******************************
> > > On Error Resume Next
> > > 'Supprimer le fichier si il existe déjà
> > > Kill Chemin & Fichier
> > > 'supprime l'erreur au cas où le fichier n'exite pas
> > > Err.Clear
> > > 'S'assure que la selection est une plage de cellule
> > >
> > > If TypeName(Selection) = "Range" Then
> > > 'Ce qui suit met dans la variable "texte" la
> > > 'composition des lignes de code du BatchFile
> > > Texte = "Echo on " & vbCrLf
> > > Texte = "cd" & vbCrLf
> > > Texte = texte & "c:" & vbCrLf
> > > Texte = texte & "Cls" & vbCrLf
> > > For Each C In Selection.Cells
> > > If C <> "" Then
> > > texte = Texte & "nslookup.exe " & C & vbCrLf
> > > texte = Texte & "Pause" & vbCrLf
> > > End If
> > > Next
> > > Texte = Texte & "exit"
> > > End If
> > > 'Création du fichier lui-même
> > > Open Chemin & Fichier For Append As #X
> > > 'Copie de la variable dans le fichier
> > > Print #X, Texte
> > > 'Fermeture du fichier batchfile
> > > Close #X
> > > 'Exécution du BatchFile
> > > Shell "Cmd.exe /K " & Chemin & Fichier, vbNormalFocus
> > > End Sub
> > > '------------------------------------------
> > >
> > >
> > >
> > >
> > >
Que veux-tu dire par "ouvrir un cmd.exe" ?
C'est un exécutable et non un fichier texte...
Que veux-tu faire par la commande sendkeys ?
"ALT+SPACE+E+P " ceci n'est pas une réponse...
Tu expliques ?
"ben" <ben@discussions.microsoft.com> a écrit dans le message de groupe de discussion :
7547A565-E623-4A59-80DE-9C25EB0CC51E@microsoft.com...
Bonjour,
Est-possible d'ouvrir un cmd.exe et faire un senkeys de cette combinaison
de touche : ALT+SPACE+E+P ?.
Merci.
Cordialement.
"michdenis" wrote:
> Voici quelques explications sur cette ligne de commande :
> ShellAndWait "cmd.exe /c " & Valeur & ">>C:addResrv_multi_line.txt", 1
>
> L'utilisation des ">>" permet d'ajouter le résultat d'une commande DOS
> à l'information du fichier déjà existant si le fichier n'est pas vide.
> tu peux si tu le désires effacer et écrire le résultat de la
> commande en utilisant un seul ">" dans la commande.
> ShellAndWait "cmd.exe /c " & Valeur & ">C:addResrv_multi_line.txt", 1
>
> On pourrait aussi le faire de cette façon en détournant un peu le rôle
> de la commande "Echo off" en DOS comme ceci :
> Dans votre programme, cela se traduit de façon suivante
> Commande = commande = "cmd.exe /c echo off >C:addResrv_multi_line.txt"
> Shell commande, vbHide
> Vous insérez ces 2 lignes de code avant le début de la boucle. Cela videra
> complètement le contenu du fichier existant.
>
> Pour supprimer un fichier existant
> Kill C:addResrv_multi_line.txt
>
> Attention, le fichier est totalement détruit, il ne se
> retrouve pas à la poubelle de Windows.
>
> Pour effacer le contenu du fichier texte, vous pouvez utiliser
> la même commande :
>
>
>
> "ben" <ben@discussions.microsoft.com> a écrit dans le message de groupe de discussion :
> FE1B43C0-9707-49A0-83F3-CA9711FD4A51@microsoft.com...
> Bonjour,
>
> Et merci infiniment pour votre aide.
>
> J'aimerais pour finaliser le projet faire au cas ou, un clear du fichier
> txt ?.
> Ou bien la suppression du fichier s'il existe avant l'execution.
>
> Merci de me faire les 2 propositions.
>
> Cordialement.
>
>
>
> "michdenis" wrote:
>
> > Les 2 lignes ajoutées vont s'exécuter pour tous les items
> > contenus dans la boucle. Si tu ne désires inscrire une date
> > que pour l'ensemble du code contenu dans la boucle,
> > place ces 2 lignes de code avant le début de la ligne For ...
> > de la même procédure.
> >
> > commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> > & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> > Shell commande, vbHide
> >
> >
> > "michdenis" <michdenis@hotmail.com> a écrit dans le message de groupe de discussion :
> > #1hANOclJHA.1172@TK2MSFTNGP04.phx.gbl...
> > Attention aux coupures de lignes de code par le service de messagerie.
> >
> > N.B. Semble-t-il que la solution retenue s'est éloignée de ta
> > demande initiale !
> >
> > Dans ton code, avant cette ligne de la procédure: Test
> > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> >
> > Tu inscris les commandes dans cet ordre :
> > Tu peux aussi modifier le format date que tu désires dans "dd/mmm/yyyy H:MM:SS"
> > commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> > & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> > Shell commande, vbHide
> > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> >
> > P.S- Tu dois ajouter à la déclaration des variables en début de procédure
> > Dim Commande As String
> >
> >
> > "ben" <ben@discussions.microsoft.com> a écrit dans le message de groupe de discussion
> > :
> > 41899344-EDF7-4431-AA45-2A64B3B1986A@microsoft.com...
> > Bonjour michdenis,
> >
> > Voici ma solution, cependant j'aimerais juste rajouter la date d'exécution
> > pour chaque traitement, car j'ai qu'un seule fichier.
> > ************************************************
> > Declare Function OpenProcess Lib "kernel32" _
> > (ByVal dwDesiredAccess As Long, _
> > ByVal bInheritHandle As Long, _
> > ByVal dwProcessId As Long) As Long
> >
> > Declare Function GetExitCodeProcess Lib "kernel32" _
> > (ByVal hProcess As Long, _
> > lpExitCode As Long) As Long
> >
> > Public Const PROCESS_QUERY_INFORMATION = &H400
> > Public Const STILL_ACTIVE = &H103
> >
> > 'Sub Test()
> > 'Dim StartTime As Double
> > 'StartTime = Now
> > 'ShellAndWait "ping.exe", 1
> > 'MsgBox "Gone " & Format(Now - StartTime, "s") & " seconds"
> > 'End Sub
> > Sub addResrv_multi_line_test()
> > ' il faut sélectionner plusieurs valeurs de la ligne
> > Dim Cell As Range, Ligne As Range, Valeur, A As Integer
> > Dim LogFile As String
> > 'vérifier si Selection est une plage de cellules
> > If TypeName(Selection) = "Range" Then
> > 'Boucle sur chaque ligne de la sélection
> > For Each Ligne In Selection.Rows
> > 'Boucle sur chaque cellule de la ligne
> > For Each Cell In Ligne.Cells
> > Valeur = Valeur & " " & Cell.Value
> > ' résultats intermédiaires
> > 'MsgBox valeur
> > Next Cell
> > 'MsgBox Valeur
> > 'A = A + 1
> > 'toexe = "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line" & A & ".txt"
> >
> > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > 'ShellAndWait "cmd.exe /c" & Valeur & " | clip ", 1
> > Valeur = "" 'après chaque boucle il vide le contenu de la variable Valeur
> > Next
> > End If
> >
> > Dim wshShell
> > Set wshShell = CreateObject("wscript.shell")
> > 'Execution du fichier - ouverture d'un fichier txt
> > wshShell.Run "C:addResrv_multi_line.txt"
> >
> > End Sub
> >
> >
> > 'Window States (Per Help for Shell function):
> > ' 1, 5, 9 Normal with focus.
> > ' 2 Minimized with focus.
> > ' 3 Maximized with focus.
> > ' 4, 8 Normal without focus.
> > ' 6, 7 Minimized without focus.
> > Sub ShellAndWait(ByVal PathName As String, Optional WindowState)
> > Dim hProg As Long
> > Dim hProcess As Long, ExitCode As Long
> >
> > 'fill in the missing parameter and execute the program
> > If IsMissing(WindowState) Then WindowState = 1
> > hProg = Shell(PathName, WindowState)
> > 'hProg is a "process ID under Win32. To get the process handle:
> > hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
> > Do
> > 'populate Exitcode variable
> > GetExitCodeProcess hProcess, ExitCode
> > DoEvents
> > Loop While ExitCode = STILL_ACTIVE
> > End Sub
> >
> >
> > ************************************************
> >
> > Cordialement.
> >
> >
> > "michdenis" wrote:
> >
> > > Cette procédure fait exactement ce que tu désires.
> > > Avec celle-ci, tu ne dois pas mettre la commande
> > > "nslookup" dans la cellule, tu n'as comme tu désires
> > > à saisir la valeur de la variable que tu veux tester.
> > >
> > > Tu sélectionnes ta liste et tu lances la procédure.
> > >
> > > P.S- N'oublie pas de modifier le chemin et le
> > > nom du batchFile que tu vas créer .
> > >
> > > '------------------------------------------
> > > Sub Créer_Et_Exécuter_Un_BatFile()
> > > Dim Fichier As String, Chemin As String
> > > Dim X As Long, C As Range, Texte As String
> > > X = FreeFile
> > >
> > > '******* À RENSEIGNER ********
> > > 'Où tu veux que le fichier soit créer
> > > Chemin = "C:UsersPoweruser"
> > > 'Nom du batchfile à créer
> > > Fichier = "Denis.bat"
> > > '*******************************
> > > On Error Resume Next
> > > 'Supprimer le fichier si il existe déjà
> > > Kill Chemin & Fichier
> > > 'supprime l'erreur au cas où le fichier n'exite pas
> > > Err.Clear
> > > 'S'assure que la selection est une plage de cellule
> > >
> > > If TypeName(Selection) = "Range" Then
> > > 'Ce qui suit met dans la variable "texte" la
> > > 'composition des lignes de code du BatchFile
> > > Texte = "Echo on " & vbCrLf
> > > Texte = "cd" & vbCrLf
> > > Texte = texte & "c:" & vbCrLf
> > > Texte = texte & "Cls" & vbCrLf
> > > For Each C In Selection.Cells
> > > If C <> "" Then
> > > texte = Texte & "nslookup.exe " & C & vbCrLf
> > > texte = Texte & "Pause" & vbCrLf
> > > End If
> > > Next
> > > Texte = Texte & "exit"
> > > End If
> > > 'Création du fichier lui-même
> > > Open Chemin & Fichier For Append As #X
> > > 'Copie de la variable dans le fichier
> > > Print #X, Texte
> > > 'Fermeture du fichier batchfile
> > > Close #X
> > > 'Exécution du BatchFile
> > > Shell "Cmd.exe /K " & Chemin & Fichier, vbNormalFocus
> > > End Sub
> > > '------------------------------------------
> > >
> > >
> > >
> > >
> > >
Que veux-tu dire par "ouvrir un cmd.exe" ?
C'est un exécutable et non un fichier texte...
Que veux-tu faire par la commande sendkeys ?
"ALT+SPACE+E+P " ceci n'est pas une réponse...
Tu expliques ?
"ben" a écrit dans le message de groupe de discussion :
Bonjour,
Est-possible d'ouvrir un cmd.exe et faire un senkeys de cette combinaison
de touche : ALT+SPACE+E+P ?.
Merci.
Cordialement.
"michdenis" wrote:
> Voici quelques explications sur cette ligne de commande :
> ShellAndWait "cmd.exe /c " & Valeur & ">>C:addResrv_multi_line.txt", 1
>
> L'utilisation des ">>" permet d'ajouter le résultat d'une commande DOS
> à l'information du fichier déjà existant si le fichier n'est pas vide.
> tu peux si tu le désires effacer et écrire le résultat de la
> commande en utilisant un seul ">" dans la commande.
> ShellAndWait "cmd.exe /c " & Valeur & ">C:addResrv_multi_line.txt", 1
>
> On pourrait aussi le faire de cette façon en détournant un peu le rôle
> de la commande "Echo off" en DOS comme ceci :
> Dans votre programme, cela se traduit de façon suivante
> Commande = commande = "cmd.exe /c echo off >C:addResrv_multi_line.txt"
> Shell commande, vbHide
> Vous insérez ces 2 lignes de code avant le début de la boucle. Cela videra
> complètement le contenu du fichier existant.
>
> Pour supprimer un fichier existant
> Kill C:addResrv_multi_line.txt
>
> Attention, le fichier est totalement détruit, il ne se
> retrouve pas à la poubelle de Windows.
>
> Pour effacer le contenu du fichier texte, vous pouvez utiliser
> la même commande :
>
>
>
> "ben" a écrit dans le message de groupe de discussion :
>
> Bonjour,
>
> Et merci infiniment pour votre aide.
>
> J'aimerais pour finaliser le projet faire au cas ou, un clear du fichier
> txt ?.
> Ou bien la suppression du fichier s'il existe avant l'execution.
>
> Merci de me faire les 2 propositions.
>
> Cordialement.
>
>
>
> "michdenis" wrote:
>
> > Les 2 lignes ajoutées vont s'exécuter pour tous les items
> > contenus dans la boucle. Si tu ne désires inscrire une date
> > que pour l'ensemble du code contenu dans la boucle,
> > place ces 2 lignes de code avant le début de la ligne For ...
> > de la même procédure.
> >
> > commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> > & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> > Shell commande, vbHide
> >
> >
> > "michdenis" a écrit dans le message de groupe de discussion :
> > #
> > Attention aux coupures de lignes de code par le service de messagerie.
> >
> > N.B. Semble-t-il que la solution retenue s'est éloignée de ta
> > demande initiale !
> >
> > Dans ton code, avant cette ligne de la procédure: Test
> > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> >
> > Tu inscris les commandes dans cet ordre :
> > Tu peux aussi modifier le format date que tu désires dans "dd/mmm/yyyy H:MM:SS"
> > commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> > & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> > Shell commande, vbHide
> > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> >
> > P.S- Tu dois ajouter à la déclaration des variables en début de procédure
> > Dim Commande As String
> >
> >
> > "ben" a écrit dans le message de groupe de discussion
> > :
> >
> > Bonjour michdenis,
> >
> > Voici ma solution, cependant j'aimerais juste rajouter la date d'exécution
> > pour chaque traitement, car j'ai qu'un seule fichier.
> > ************************************************
> > Declare Function OpenProcess Lib "kernel32" _
> > (ByVal dwDesiredAccess As Long, _
> > ByVal bInheritHandle As Long, _
> > ByVal dwProcessId As Long) As Long
> >
> > Declare Function GetExitCodeProcess Lib "kernel32" _
> > (ByVal hProcess As Long, _
> > lpExitCode As Long) As Long
> >
> > Public Const PROCESS_QUERY_INFORMATION = &H400
> > Public Const STILL_ACTIVE = &H103
> >
> > 'Sub Test()
> > 'Dim StartTime As Double
> > 'StartTime = Now
> > 'ShellAndWait "ping.exe", 1
> > 'MsgBox "Gone " & Format(Now - StartTime, "s") & " seconds"
> > 'End Sub
> > Sub addResrv_multi_line_test()
> > ' il faut sélectionner plusieurs valeurs de la ligne
> > Dim Cell As Range, Ligne As Range, Valeur, A As Integer
> > Dim LogFile As String
> > 'vérifier si Selection est une plage de cellules
> > If TypeName(Selection) = "Range" Then
> > 'Boucle sur chaque ligne de la sélection
> > For Each Ligne In Selection.Rows
> > 'Boucle sur chaque cellule de la ligne
> > For Each Cell In Ligne.Cells
> > Valeur = Valeur & " " & Cell.Value
> > ' résultats intermédiaires
> > 'MsgBox valeur
> > Next Cell
> > 'MsgBox Valeur
> > 'A = A + 1
> > 'toexe = "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line" & A & ".txt"
> >
> > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > 'ShellAndWait "cmd.exe /c" & Valeur & " | clip ", 1
> > Valeur = "" 'après chaque boucle il vide le contenu de la variable Valeur
> > Next
> > End If
> >
> > Dim wshShell
> > Set wshShell = CreateObject("wscript.shell")
> > 'Execution du fichier - ouverture d'un fichier txt
> > wshShell.Run "C:addResrv_multi_line.txt"
> >
> > End Sub
> >
> >
> > 'Window States (Per Help for Shell function):
> > ' 1, 5, 9 Normal with focus.
> > ' 2 Minimized with focus.
> > ' 3 Maximized with focus.
> > ' 4, 8 Normal without focus.
> > ' 6, 7 Minimized without focus.
> > Sub ShellAndWait(ByVal PathName As String, Optional WindowState)
> > Dim hProg As Long
> > Dim hProcess As Long, ExitCode As Long
> >
> > 'fill in the missing parameter and execute the program
> > If IsMissing(WindowState) Then WindowState = 1
> > hProg = Shell(PathName, WindowState)
> > 'hProg is a "process ID under Win32. To get the process handle:
> > hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
> > Do
> > 'populate Exitcode variable
> > GetExitCodeProcess hProcess, ExitCode
> > DoEvents
> > Loop While ExitCode = STILL_ACTIVE
> > End Sub
> >
> >
> > ************************************************
> >
> > Cordialement.
> >
> >
> > "michdenis" wrote:
> >
> > > Cette procédure fait exactement ce que tu désires.
> > > Avec celle-ci, tu ne dois pas mettre la commande
> > > "nslookup" dans la cellule, tu n'as comme tu désires
> > > à saisir la valeur de la variable que tu veux tester.
> > >
> > > Tu sélectionnes ta liste et tu lances la procédure.
> > >
> > > P.S- N'oublie pas de modifier le chemin et le
> > > nom du batchFile que tu vas créer .
> > >
> > > '------------------------------------------
> > > Sub Créer_Et_Exécuter_Un_BatFile()
> > > Dim Fichier As String, Chemin As String
> > > Dim X As Long, C As Range, Texte As String
> > > X = FreeFile
> > >
> > > '******* À RENSEIGNER ********
> > > 'Où tu veux que le fichier soit créer
> > > Chemin = "C:UsersPoweruser"
> > > 'Nom du batchfile à créer
> > > Fichier = "Denis.bat"
> > > '*******************************
> > > On Error Resume Next
> > > 'Supprimer le fichier si il existe déjà
> > > Kill Chemin & Fichier
> > > 'supprime l'erreur au cas où le fichier n'exite pas
> > > Err.Clear
> > > 'S'assure que la selection est une plage de cellule
> > >
> > > If TypeName(Selection) = "Range" Then
> > > 'Ce qui suit met dans la variable "texte" la
> > > 'composition des lignes de code du BatchFile
> > > Texte = "Echo on " & vbCrLf
> > > Texte = "cd" & vbCrLf
> > > Texte = texte & "c:" & vbCrLf
> > > Texte = texte & "Cls" & vbCrLf
> > > For Each C In Selection.Cells
> > > If C <> "" Then
> > > texte = Texte & "nslookup.exe " & C & vbCrLf
> > > texte = Texte & "Pause" & vbCrLf
> > > End If
> > > Next
> > > Texte = Texte & "exit"
> > > End If
> > > 'Création du fichier lui-même
> > > Open Chemin & Fichier For Append As #X
> > > 'Copie de la variable dans le fichier
> > > Print #X, Texte
> > > 'Fermeture du fichier batchfile
> > > Close #X
> > > 'Exécution du BatchFile
> > > Shell "Cmd.exe /K " & Chemin & Fichier, vbNormalFocus
> > > End Sub
> > > '------------------------------------------
> > >
> > >
> > >
> > >
> > >
Bonjour,
Plus clairement :
Sub Command2_Click()
Shell "CMD.EXE", vbNormalFocus
SendKeys "% ep", 1 'paste en dos : ALT+SPACE+E+P
End Sub
PS : ne fonction pas encore...uniquement le ALT mais pas au niveau
dosCordialement.
"michdenis" wrote:
> Que veux-tu dire par "ouvrir un cmd.exe" ?
> C'est un exécutable et non un fichier texte...
>
> Que veux-tu faire par la commande sendkeys ?
> "ALT+SPACE+E+P " ceci n'est pas une réponse...
>
> Tu expliques ?
>
>
> "ben" a écrit dans le message de groupe de discussion :
>
> Bonjour,
>
> Est-possible d'ouvrir un cmd.exe et faire un senkeys de cette combinaison
> de touche : ALT+SPACE+E+P ?.
>
> Merci.
>
> Cordialement.
>
> "michdenis" wrote:
>
> > Voici quelques explications sur cette ligne de commande :
> > ShellAndWait "cmd.exe /c " & Valeur & ">>C:addResrv_multi_line.txt", 1
> >
> > L'utilisation des ">>" permet d'ajouter le résultat d'une commande DOS
> > à l'information du fichier déjà existant si le fichier n'est pas vide.
> > tu peux si tu le désires effacer et écrire le résultat de la
> > commande en utilisant un seul ">" dans la commande.
> > ShellAndWait "cmd.exe /c " & Valeur & ">C:addResrv_multi_line.txt", 1
> >
> > On pourrait aussi le faire de cette façon en détournant un peu le rôle
> > de la commande "Echo off" en DOS comme ceci :
> > Dans votre programme, cela se traduit de façon suivante
> > Commande = commande = "cmd.exe /c echo off >C:addResrv_multi_line.txt"
> > Shell commande, vbHide
> > Vous insérez ces 2 lignes de code avant le début de la boucle. Cela videra
> > complètement le contenu du fichier existant.
> >
> > Pour supprimer un fichier existant
> > Kill C:addResrv_multi_line.txt
> >
> > Attention, le fichier est totalement détruit, il ne se
> > retrouve pas à la poubelle de Windows.
> >
> > Pour effacer le contenu du fichier texte, vous pouvez utiliser
> > la même commande :
> >
> >
> >
> > "ben" a écrit dans le message de groupe de discussion :
> >
> > Bonjour,
> >
> > Et merci infiniment pour votre aide.
> >
> > J'aimerais pour finaliser le projet faire au cas ou, un clear du fichier
> > txt ?.
> > Ou bien la suppression du fichier s'il existe avant l'execution.
> >
> > Merci de me faire les 2 propositions.
> >
> > Cordialement.
> >
> >
> >
> > "michdenis" wrote:
> >
> > > Les 2 lignes ajoutées vont s'exécuter pour tous les items
> > > contenus dans la boucle. Si tu ne désires inscrire une date
> > > que pour l'ensemble du code contenu dans la boucle,
> > > place ces 2 lignes de code avant le début de la ligne For ...
> > > de la même procédure.
> > >
> > > commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> > > & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> > > Shell commande, vbHide
> > >
> > >
> > > "michdenis" a écrit dans le message de groupe de discussion :
> > > #
> > > Attention aux coupures de lignes de code par le service de messagerie.
> > >
> > > N.B. Semble-t-il que la solution retenue s'est éloignée de ta
> > > demande initiale !
> > >
> > > Dans ton code, avant cette ligne de la procédure: Test
> > > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > >
> > > Tu inscris les commandes dans cet ordre :
> > > Tu peux aussi modifier le format date que tu désires dans "dd/mmm/yyyy H:MM:SS"
> > > commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> > > & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> > > Shell commande, vbHide
> > > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > >
> > > P.S- Tu dois ajouter à la déclaration des variables en début de procédure
> > > Dim Commande As String
> > >
> > >
> > > "ben" a écrit dans le message de groupe de discussion
> > > :
> > >
> > > Bonjour michdenis,
> > >
> > > Voici ma solution, cependant j'aimerais juste rajouter la date d'exécution
> > > pour chaque traitement, car j'ai qu'un seule fichier.
> > > ************************************************
> > > Declare Function OpenProcess Lib "kernel32" _
> > > (ByVal dwDesiredAccess As Long, _
> > > ByVal bInheritHandle As Long, _
> > > ByVal dwProcessId As Long) As Long
> > >
> > > Declare Function GetExitCodeProcess Lib "kernel32" _
> > > (ByVal hProcess As Long, _
> > > lpExitCode As Long) As Long
> > >
> > > Public Const PROCESS_QUERY_INFORMATION = &H400
> > > Public Const STILL_ACTIVE = &H103
> > >
> > > 'Sub Test()
> > > 'Dim StartTime As Double
> > > 'StartTime = Now
> > > 'ShellAndWait "ping.exe", 1
> > > 'MsgBox "Gone " & Format(Now - StartTime, "s") & " seconds"
> > > 'End Sub
> > > Sub addResrv_multi_line_test()
> > > ' il faut sélectionner plusieurs valeurs de la ligne
> > > Dim Cell As Range, Ligne As Range, Valeur, A As Integer
> > > Dim LogFile As String
> > > 'vérifier si Selection est une plage de cellules
> > > If TypeName(Selection) = "Range" Then
> > > 'Boucle sur chaque ligne de la sélection
> > > For Each Ligne In Selection.Rows
> > > 'Boucle sur chaque cellule de la ligne
> > > For Each Cell In Ligne.Cells
> > > Valeur = Valeur & " " & Cell.Value
> > > ' résultats intermédiaires
> > > 'MsgBox valeur
> > > Next Cell
> > > 'MsgBox Valeur
> > > 'A = A + 1
> > > 'toexe = "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line" & A & ".txt"
> > >
> > > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > > 'ShellAndWait "cmd.exe /c" & Valeur & " | clip ", 1
> > > Valeur = "" 'après chaque boucle il vide le contenu de la variable Valeur
> > > Next
> > > End If
> > >
> > > Dim wshShell
> > > Set wshShell = CreateObject("wscript.shell")
> > > 'Execution du fichier - ouverture d'un fichier txt
> > > wshShell.Run "C:addResrv_multi_line.txt"
> > >
> > > End Sub
> > >
> > >
> > > 'Window States (Per Help for Shell function):
> > > ' 1, 5, 9 Normal with focus.
> > > ' 2 Minimized with focus.
> > > ' 3 Maximized with focus.
> > > ' 4, 8 Normal without focus.
> > > ' 6, 7 Minimized without focus.
> > > Sub ShellAndWait(ByVal PathName As String, Optional WindowState)
> > > Dim hProg As Long
> > > Dim hProcess As Long, ExitCode As Long
> > >
> > > 'fill in the missing parameter and execute the program
> > > If IsMissing(WindowState) Then WindowState = 1
> > > hProg = Shell(PathName, WindowState)
> > > 'hProg is a "process ID under Win32. To get the process handle:
> > > hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
> > > Do
> > > 'populate Exitcode variable
> > > GetExitCodeProcess hProcess, ExitCode
> > > DoEvents
> > > Loop While ExitCode = STILL_ACTIVE
> > > End Sub
> > >
> > >
> > > ************************************************
> > >
> > > Cordialement.
> > >
> > >
> > > "michdenis" wrote:
> > >
> > > > Cette procédure fait exactement ce que tu désires.
> > > > Avec celle-ci, tu ne dois pas mettre la commande
> > > > "nslookup" dans la cellule, tu n'as comme tu désires
> > > > à saisir la valeur de la variable que tu veux tester.
> > > >
> > > > Tu sélectionnes ta liste et tu lances la procédure.
> > > >
> > > > P.S- N'oublie pas de modifier le chemin et le
> > > > nom du batchFile que tu vas créer .
> > > >
> > > > '------------------------------------------
> > > > Sub Créer_Et_Exécuter_Un_BatFile()
> > > > Dim Fichier As String, Chemin As String
> > > > Dim X As Long, C As Range, Texte As String
> > > > X = FreeFile
> > > >
> > > > '******* À RENSEIGNER ********
> > > > 'Où tu veux que le fichier soit créer
> > > > Chemin = "C:UsersPoweruser"
> > > > 'Nom du batchfile à créer
> > > > Fichier = "Denis.bat"
> > > > '*******************************
> > > > On Error Resume Next
> > > > 'Supprimer le fichier si il existe déjà
> > > > Kill Chemin & Fichier
> > > > 'supprime l'erreur au cas où le fichier n'exite pas
> > > > Err.Clear
> > > > 'S'assure que la selection est une plage de cellule
> > > >
> > > > If TypeName(Selection) = "Range" Then
> > > > 'Ce qui suit met dans la variable "texte" la
> > > > 'composition des lignes de code du BatchFile
> > > > Texte = "Echo on " & vbCrLf
> > > > Texte = "cd" & vbCrLf
> > > > Texte = texte & "c:" & vbCrLf
> > > > Texte = texte & "Cls" & vbCrLf
> > > > For Each C In Selection.Cells
> > > > If C <> "" Then
> > > > texte = Texte & "nslookup.exe " & C & vbCrLf
> > > > texte = Texte & "Pause" & vbCrLf
> > > > End If
> > > > Next
> > > > Texte = Texte & "exit"
> > > > End If
> > > > 'Création du fichier lui-même
> > > > Open Chemin & Fichier For Append As #X
> > > > 'Copie de la variable dans le fichier
> > > > Print #X, Texte
> > > > 'Fermeture du fichier batchfile
> > > > Close #X
> > > > 'Exécution du BatchFile
> > > > Shell "Cmd.exe /K " & Chemin & Fichier, vbNormalFocus
> > > > End Sub
> > > > '------------------------------------------
> > > >
> > > >
> > > >
> > > >
> > > >
Bonjour,
Plus clairement :
Sub Command2_Click()
Shell "CMD.EXE", vbNormalFocus
SendKeys "% ep", 1 'paste en dos : ALT+SPACE+E+P
End Sub
PS : ne fonction pas encore...uniquement le ALT mais pas au niveau
dosCordialement.
"michdenis" wrote:
> Que veux-tu dire par "ouvrir un cmd.exe" ?
> C'est un exécutable et non un fichier texte...
>
> Que veux-tu faire par la commande sendkeys ?
> "ALT+SPACE+E+P " ceci n'est pas une réponse...
>
> Tu expliques ?
>
>
> "ben" <ben@discussions.microsoft.com> a écrit dans le message de groupe de discussion :
> 7547A565-E623-4A59-80DE-9C25EB0CC51E@microsoft.com...
> Bonjour,
>
> Est-possible d'ouvrir un cmd.exe et faire un senkeys de cette combinaison
> de touche : ALT+SPACE+E+P ?.
>
> Merci.
>
> Cordialement.
>
> "michdenis" wrote:
>
> > Voici quelques explications sur cette ligne de commande :
> > ShellAndWait "cmd.exe /c " & Valeur & ">>C:addResrv_multi_line.txt", 1
> >
> > L'utilisation des ">>" permet d'ajouter le résultat d'une commande DOS
> > à l'information du fichier déjà existant si le fichier n'est pas vide.
> > tu peux si tu le désires effacer et écrire le résultat de la
> > commande en utilisant un seul ">" dans la commande.
> > ShellAndWait "cmd.exe /c " & Valeur & ">C:addResrv_multi_line.txt", 1
> >
> > On pourrait aussi le faire de cette façon en détournant un peu le rôle
> > de la commande "Echo off" en DOS comme ceci :
> > Dans votre programme, cela se traduit de façon suivante
> > Commande = commande = "cmd.exe /c echo off >C:addResrv_multi_line.txt"
> > Shell commande, vbHide
> > Vous insérez ces 2 lignes de code avant le début de la boucle. Cela videra
> > complètement le contenu du fichier existant.
> >
> > Pour supprimer un fichier existant
> > Kill C:addResrv_multi_line.txt
> >
> > Attention, le fichier est totalement détruit, il ne se
> > retrouve pas à la poubelle de Windows.
> >
> > Pour effacer le contenu du fichier texte, vous pouvez utiliser
> > la même commande :
> >
> >
> >
> > "ben" <ben@discussions.microsoft.com> a écrit dans le message de groupe de discussion :
> > FE1B43C0-9707-49A0-83F3-CA9711FD4A51@microsoft.com...
> > Bonjour,
> >
> > Et merci infiniment pour votre aide.
> >
> > J'aimerais pour finaliser le projet faire au cas ou, un clear du fichier
> > txt ?.
> > Ou bien la suppression du fichier s'il existe avant l'execution.
> >
> > Merci de me faire les 2 propositions.
> >
> > Cordialement.
> >
> >
> >
> > "michdenis" wrote:
> >
> > > Les 2 lignes ajoutées vont s'exécuter pour tous les items
> > > contenus dans la boucle. Si tu ne désires inscrire une date
> > > que pour l'ensemble du code contenu dans la boucle,
> > > place ces 2 lignes de code avant le début de la ligne For ...
> > > de la même procédure.
> > >
> > > commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> > > & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> > > Shell commande, vbHide
> > >
> > >
> > > "michdenis" <michdenis@hotmail.com> a écrit dans le message de groupe de discussion :
> > > #1hANOclJHA.1172@TK2MSFTNGP04.phx.gbl...
> > > Attention aux coupures de lignes de code par le service de messagerie.
> > >
> > > N.B. Semble-t-il que la solution retenue s'est éloignée de ta
> > > demande initiale !
> > >
> > > Dans ton code, avant cette ligne de la procédure: Test
> > > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > >
> > > Tu inscris les commandes dans cet ordre :
> > > Tu peux aussi modifier le format date que tu désires dans "dd/mmm/yyyy H:MM:SS"
> > > commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> > > & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> > > Shell commande, vbHide
> > > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > >
> > > P.S- Tu dois ajouter à la déclaration des variables en début de procédure
> > > Dim Commande As String
> > >
> > >
> > > "ben" <ben@discussions.microsoft.com> a écrit dans le message de groupe de discussion
> > > :
> > > 41899344-EDF7-4431-AA45-2A64B3B1986A@microsoft.com...
> > > Bonjour michdenis,
> > >
> > > Voici ma solution, cependant j'aimerais juste rajouter la date d'exécution
> > > pour chaque traitement, car j'ai qu'un seule fichier.
> > > ************************************************
> > > Declare Function OpenProcess Lib "kernel32" _
> > > (ByVal dwDesiredAccess As Long, _
> > > ByVal bInheritHandle As Long, _
> > > ByVal dwProcessId As Long) As Long
> > >
> > > Declare Function GetExitCodeProcess Lib "kernel32" _
> > > (ByVal hProcess As Long, _
> > > lpExitCode As Long) As Long
> > >
> > > Public Const PROCESS_QUERY_INFORMATION = &H400
> > > Public Const STILL_ACTIVE = &H103
> > >
> > > 'Sub Test()
> > > 'Dim StartTime As Double
> > > 'StartTime = Now
> > > 'ShellAndWait "ping.exe", 1
> > > 'MsgBox "Gone " & Format(Now - StartTime, "s") & " seconds"
> > > 'End Sub
> > > Sub addResrv_multi_line_test()
> > > ' il faut sélectionner plusieurs valeurs de la ligne
> > > Dim Cell As Range, Ligne As Range, Valeur, A As Integer
> > > Dim LogFile As String
> > > 'vérifier si Selection est une plage de cellules
> > > If TypeName(Selection) = "Range" Then
> > > 'Boucle sur chaque ligne de la sélection
> > > For Each Ligne In Selection.Rows
> > > 'Boucle sur chaque cellule de la ligne
> > > For Each Cell In Ligne.Cells
> > > Valeur = Valeur & " " & Cell.Value
> > > ' résultats intermédiaires
> > > 'MsgBox valeur
> > > Next Cell
> > > 'MsgBox Valeur
> > > 'A = A + 1
> > > 'toexe = "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line" & A & ".txt"
> > >
> > > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > > 'ShellAndWait "cmd.exe /c" & Valeur & " | clip ", 1
> > > Valeur = "" 'après chaque boucle il vide le contenu de la variable Valeur
> > > Next
> > > End If
> > >
> > > Dim wshShell
> > > Set wshShell = CreateObject("wscript.shell")
> > > 'Execution du fichier - ouverture d'un fichier txt
> > > wshShell.Run "C:addResrv_multi_line.txt"
> > >
> > > End Sub
> > >
> > >
> > > 'Window States (Per Help for Shell function):
> > > ' 1, 5, 9 Normal with focus.
> > > ' 2 Minimized with focus.
> > > ' 3 Maximized with focus.
> > > ' 4, 8 Normal without focus.
> > > ' 6, 7 Minimized without focus.
> > > Sub ShellAndWait(ByVal PathName As String, Optional WindowState)
> > > Dim hProg As Long
> > > Dim hProcess As Long, ExitCode As Long
> > >
> > > 'fill in the missing parameter and execute the program
> > > If IsMissing(WindowState) Then WindowState = 1
> > > hProg = Shell(PathName, WindowState)
> > > 'hProg is a "process ID under Win32. To get the process handle:
> > > hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
> > > Do
> > > 'populate Exitcode variable
> > > GetExitCodeProcess hProcess, ExitCode
> > > DoEvents
> > > Loop While ExitCode = STILL_ACTIVE
> > > End Sub
> > >
> > >
> > > ************************************************
> > >
> > > Cordialement.
> > >
> > >
> > > "michdenis" wrote:
> > >
> > > > Cette procédure fait exactement ce que tu désires.
> > > > Avec celle-ci, tu ne dois pas mettre la commande
> > > > "nslookup" dans la cellule, tu n'as comme tu désires
> > > > à saisir la valeur de la variable que tu veux tester.
> > > >
> > > > Tu sélectionnes ta liste et tu lances la procédure.
> > > >
> > > > P.S- N'oublie pas de modifier le chemin et le
> > > > nom du batchFile que tu vas créer .
> > > >
> > > > '------------------------------------------
> > > > Sub Créer_Et_Exécuter_Un_BatFile()
> > > > Dim Fichier As String, Chemin As String
> > > > Dim X As Long, C As Range, Texte As String
> > > > X = FreeFile
> > > >
> > > > '******* À RENSEIGNER ********
> > > > 'Où tu veux que le fichier soit créer
> > > > Chemin = "C:UsersPoweruser"
> > > > 'Nom du batchfile à créer
> > > > Fichier = "Denis.bat"
> > > > '*******************************
> > > > On Error Resume Next
> > > > 'Supprimer le fichier si il existe déjà
> > > > Kill Chemin & Fichier
> > > > 'supprime l'erreur au cas où le fichier n'exite pas
> > > > Err.Clear
> > > > 'S'assure que la selection est une plage de cellule
> > > >
> > > > If TypeName(Selection) = "Range" Then
> > > > 'Ce qui suit met dans la variable "texte" la
> > > > 'composition des lignes de code du BatchFile
> > > > Texte = "Echo on " & vbCrLf
> > > > Texte = "cd" & vbCrLf
> > > > Texte = texte & "c:" & vbCrLf
> > > > Texte = texte & "Cls" & vbCrLf
> > > > For Each C In Selection.Cells
> > > > If C <> "" Then
> > > > texte = Texte & "nslookup.exe " & C & vbCrLf
> > > > texte = Texte & "Pause" & vbCrLf
> > > > End If
> > > > Next
> > > > Texte = Texte & "exit"
> > > > End If
> > > > 'Création du fichier lui-même
> > > > Open Chemin & Fichier For Append As #X
> > > > 'Copie de la variable dans le fichier
> > > > Print #X, Texte
> > > > 'Fermeture du fichier batchfile
> > > > Close #X
> > > > 'Exécution du BatchFile
> > > > Shell "Cmd.exe /K " & Chemin & Fichier, vbNormalFocus
> > > > End Sub
> > > > '------------------------------------------
> > > >
> > > >
> > > >
> > > >
> > > >
Bonjour,
Plus clairement :
Sub Command2_Click()
Shell "CMD.EXE", vbNormalFocus
SendKeys "% ep", 1 'paste en dos : ALT+SPACE+E+P
End Sub
PS : ne fonction pas encore...uniquement le ALT mais pas au niveau
dosCordialement.
"michdenis" wrote:
> Que veux-tu dire par "ouvrir un cmd.exe" ?
> C'est un exécutable et non un fichier texte...
>
> Que veux-tu faire par la commande sendkeys ?
> "ALT+SPACE+E+P " ceci n'est pas une réponse...
>
> Tu expliques ?
>
>
> "ben" a écrit dans le message de groupe de discussion :
>
> Bonjour,
>
> Est-possible d'ouvrir un cmd.exe et faire un senkeys de cette combinaison
> de touche : ALT+SPACE+E+P ?.
>
> Merci.
>
> Cordialement.
>
> "michdenis" wrote:
>
> > Voici quelques explications sur cette ligne de commande :
> > ShellAndWait "cmd.exe /c " & Valeur & ">>C:addResrv_multi_line.txt", 1
> >
> > L'utilisation des ">>" permet d'ajouter le résultat d'une commande DOS
> > à l'information du fichier déjà existant si le fichier n'est pas vide.
> > tu peux si tu le désires effacer et écrire le résultat de la
> > commande en utilisant un seul ">" dans la commande.
> > ShellAndWait "cmd.exe /c " & Valeur & ">C:addResrv_multi_line.txt", 1
> >
> > On pourrait aussi le faire de cette façon en détournant un peu le rôle
> > de la commande "Echo off" en DOS comme ceci :
> > Dans votre programme, cela se traduit de façon suivante
> > Commande = commande = "cmd.exe /c echo off >C:addResrv_multi_line.txt"
> > Shell commande, vbHide
> > Vous insérez ces 2 lignes de code avant le début de la boucle. Cela videra
> > complètement le contenu du fichier existant.
> >
> > Pour supprimer un fichier existant
> > Kill C:addResrv_multi_line.txt
> >
> > Attention, le fichier est totalement détruit, il ne se
> > retrouve pas à la poubelle de Windows.
> >
> > Pour effacer le contenu du fichier texte, vous pouvez utiliser
> > la même commande :
> >
> >
> >
> > "ben" a écrit dans le message de groupe de discussion :
> >
> > Bonjour,
> >
> > Et merci infiniment pour votre aide.
> >
> > J'aimerais pour finaliser le projet faire au cas ou, un clear du fichier
> > txt ?.
> > Ou bien la suppression du fichier s'il existe avant l'execution.
> >
> > Merci de me faire les 2 propositions.
> >
> > Cordialement.
> >
> >
> >
> > "michdenis" wrote:
> >
> > > Les 2 lignes ajoutées vont s'exécuter pour tous les items
> > > contenus dans la boucle. Si tu ne désires inscrire une date
> > > que pour l'ensemble du code contenu dans la boucle,
> > > place ces 2 lignes de code avant le début de la ligne For ...
> > > de la même procédure.
> > >
> > > commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> > > & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> > > Shell commande, vbHide
> > >
> > >
> > > "michdenis" a écrit dans le message de groupe de discussion :
> > > #
> > > Attention aux coupures de lignes de code par le service de messagerie.
> > >
> > > N.B. Semble-t-il que la solution retenue s'est éloignée de ta
> > > demande initiale !
> > >
> > > Dans ton code, avant cette ligne de la procédure: Test
> > > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > >
> > > Tu inscris les commandes dans cet ordre :
> > > Tu peux aussi modifier le format date que tu désires dans "dd/mmm/yyyy H:MM:SS"
> > > commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> > > & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> > > Shell commande, vbHide
> > > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > >
> > > P.S- Tu dois ajouter à la déclaration des variables en début de procédure
> > > Dim Commande As String
> > >
> > >
> > > "ben" a écrit dans le message de groupe de discussion
> > > :
> > >
> > > Bonjour michdenis,
> > >
> > > Voici ma solution, cependant j'aimerais juste rajouter la date d'exécution
> > > pour chaque traitement, car j'ai qu'un seule fichier.
> > > ************************************************
> > > Declare Function OpenProcess Lib "kernel32" _
> > > (ByVal dwDesiredAccess As Long, _
> > > ByVal bInheritHandle As Long, _
> > > ByVal dwProcessId As Long) As Long
> > >
> > > Declare Function GetExitCodeProcess Lib "kernel32" _
> > > (ByVal hProcess As Long, _
> > > lpExitCode As Long) As Long
> > >
> > > Public Const PROCESS_QUERY_INFORMATION = &H400
> > > Public Const STILL_ACTIVE = &H103
> > >
> > > 'Sub Test()
> > > 'Dim StartTime As Double
> > > 'StartTime = Now
> > > 'ShellAndWait "ping.exe", 1
> > > 'MsgBox "Gone " & Format(Now - StartTime, "s") & " seconds"
> > > 'End Sub
> > > Sub addResrv_multi_line_test()
> > > ' il faut sélectionner plusieurs valeurs de la ligne
> > > Dim Cell As Range, Ligne As Range, Valeur, A As Integer
> > > Dim LogFile As String
> > > 'vérifier si Selection est une plage de cellules
> > > If TypeName(Selection) = "Range" Then
> > > 'Boucle sur chaque ligne de la sélection
> > > For Each Ligne In Selection.Rows
> > > 'Boucle sur chaque cellule de la ligne
> > > For Each Cell In Ligne.Cells
> > > Valeur = Valeur & " " & Cell.Value
> > > ' résultats intermédiaires
> > > 'MsgBox valeur
> > > Next Cell
> > > 'MsgBox Valeur
> > > 'A = A + 1
> > > 'toexe = "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line" & A & ".txt"
> > >
> > > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > > 'ShellAndWait "cmd.exe /c" & Valeur & " | clip ", 1
> > > Valeur = "" 'après chaque boucle il vide le contenu de la variable Valeur
> > > Next
> > > End If
> > >
> > > Dim wshShell
> > > Set wshShell = CreateObject("wscript.shell")
> > > 'Execution du fichier - ouverture d'un fichier txt
> > > wshShell.Run "C:addResrv_multi_line.txt"
> > >
> > > End Sub
> > >
> > >
> > > 'Window States (Per Help for Shell function):
> > > ' 1, 5, 9 Normal with focus.
> > > ' 2 Minimized with focus.
> > > ' 3 Maximized with focus.
> > > ' 4, 8 Normal without focus.
> > > ' 6, 7 Minimized without focus.
> > > Sub ShellAndWait(ByVal PathName As String, Optional WindowState)
> > > Dim hProg As Long
> > > Dim hProcess As Long, ExitCode As Long
> > >
> > > 'fill in the missing parameter and execute the program
> > > If IsMissing(WindowState) Then WindowState = 1
> > > hProg = Shell(PathName, WindowState)
> > > 'hProg is a "process ID under Win32. To get the process handle:
> > > hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
> > > Do
> > > 'populate Exitcode variable
> > > GetExitCodeProcess hProcess, ExitCode
> > > DoEvents
> > > Loop While ExitCode = STILL_ACTIVE
> > > End Sub
> > >
> > >
> > > ************************************************
> > >
> > > Cordialement.
> > >
> > >
> > > "michdenis" wrote:
> > >
> > > > Cette procédure fait exactement ce que tu désires.
> > > > Avec celle-ci, tu ne dois pas mettre la commande
> > > > "nslookup" dans la cellule, tu n'as comme tu désires
> > > > à saisir la valeur de la variable que tu veux tester.
> > > >
> > > > Tu sélectionnes ta liste et tu lances la procédure.
> > > >
> > > > P.S- N'oublie pas de modifier le chemin et le
> > > > nom du batchFile que tu vas créer .
> > > >
> > > > '------------------------------------------
> > > > Sub Créer_Et_Exécuter_Un_BatFile()
> > > > Dim Fichier As String, Chemin As String
> > > > Dim X As Long, C As Range, Texte As String
> > > > X = FreeFile
> > > >
> > > > '******* À RENSEIGNER ********
> > > > 'Où tu veux que le fichier soit créer
> > > > Chemin = "C:UsersPoweruser"
> > > > 'Nom du batchfile à créer
> > > > Fichier = "Denis.bat"
> > > > '*******************************
> > > > On Error Resume Next
> > > > 'Supprimer le fichier si il existe déjà
> > > > Kill Chemin & Fichier
> > > > 'supprime l'erreur au cas où le fichier n'exite pas
> > > > Err.Clear
> > > > 'S'assure que la selection est une plage de cellule
> > > >
> > > > If TypeName(Selection) = "Range" Then
> > > > 'Ce qui suit met dans la variable "texte" la
> > > > 'composition des lignes de code du BatchFile
> > > > Texte = "Echo on " & vbCrLf
> > > > Texte = "cd" & vbCrLf
> > > > Texte = texte & "c:" & vbCrLf
> > > > Texte = texte & "Cls" & vbCrLf
> > > > For Each C In Selection.Cells
> > > > If C <> "" Then
> > > > texte = Texte & "nslookup.exe " & C & vbCrLf
> > > > texte = Texte & "Pause" & vbCrLf
> > > > End If
> > > > Next
> > > > Texte = Texte & "exit"
> > > > End If
> > > > 'Création du fichier lui-même
> > > > Open Chemin & Fichier For Append As #X
> > > > 'Copie de la variable dans le fichier
> > > > Print #X, Texte
> > > > 'Fermeture du fichier batchfile
> > > > Close #X
> > > > 'Exécution du BatchFile
> > > > Shell "Cmd.exe /K " & Chemin & Fichier, vbNormalFocus
> > > > End Sub
> > > > '------------------------------------------
> > > >
> > > >
> > > >
> > > >
> > > >
Bonjour,
Plus clairement :
Sub Command2_Click()
Shell "CMD.EXE", vbNormalFocus
SendKeys "% ep", 1 'paste en dos : ALT+SPACE+E+P
End Sub
PS : ne fonction pas encore...uniquement le ALT mais pas au niveau
dosCordialement.
"michdenis" wrote:
> Que veux-tu dire par "ouvrir un cmd.exe" ?
> C'est un exécutable et non un fichier texte...
>
> Que veux-tu faire par la commande sendkeys ?
> "ALT+SPACE+E+P " ceci n'est pas une réponse...
>
> Tu expliques ?
>
>
> "ben" a écrit dans le message de groupe de discussion
> :
>
> Bonjour,
>
> Est-possible d'ouvrir un cmd.exe et faire un senkeys de cette combinaison
> de touche : ALT+SPACE+E+P ?.
>
> Merci.
>
> Cordialement.
>
> "michdenis" wrote:
>
> > Voici quelques explications sur cette ligne de commande :
> > ShellAndWait "cmd.exe /c " & Valeur & ">>C:addResrv_multi_line.txt", 1
> >
> > L'utilisation des ">>" permet d'ajouter le résultat d'une commande DOS
> > à l'information du fichier déjà existant si le fichier n'est pas vide.
> > tu peux si tu le désires effacer et écrire le résultat de la
> > commande en utilisant un seul ">" dans la commande.
> > ShellAndWait "cmd.exe /c " & Valeur & ">C:addResrv_multi_line.txt", 1
> >
> > On pourrait aussi le faire de cette façon en détournant un peu le rôle
> > de la commande "Echo off" en DOS comme ceci :
> > Dans votre programme, cela se traduit de façon suivante
> > Commande = commande = "cmd.exe /c echo off >C:addResrv_multi_line.txt"
> > Shell commande, vbHide
> > Vous insérez ces 2 lignes de code avant le début de la boucle. Cela videra
> > complètement le contenu du fichier existant.
> >
> > Pour supprimer un fichier existant
> > Kill C:addResrv_multi_line.txt
> >
> > Attention, le fichier est totalement détruit, il ne se
> > retrouve pas à la poubelle de Windows.
> >
> > Pour effacer le contenu du fichier texte, vous pouvez utiliser
> > la même commande :
> >
> >
> >
> > "ben" a écrit dans le message de groupe de
> > discussion :
> >
> > Bonjour,
> >
> > Et merci infiniment pour votre aide.
> >
> > J'aimerais pour finaliser le projet faire au cas ou, un clear du fichier
> > txt ?.
> > Ou bien la suppression du fichier s'il existe avant l'execution.
> >
> > Merci de me faire les 2 propositions.
> >
> > Cordialement.
> >
> >
> >
> > "michdenis" wrote:
> >
> > > Les 2 lignes ajoutées vont s'exécuter pour tous les items
> > > contenus dans la boucle. Si tu ne désires inscrire une date
> > > que pour l'ensemble du code contenu dans la boucle,
> > > place ces 2 lignes de code avant le début de la ligne For ...
> > > de la même procédure.
> > >
> > > commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> > > & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> > > Shell commande, vbHide
> > >
> > >
> > > "michdenis" a écrit dans le message de groupe de
> > > discussion :
> > > #
> > > Attention aux coupures de lignes de code par le service de messagerie.
> > >
> > > N.B. Semble-t-il que la solution retenue s'est éloignée de ta
> > > demande initiale !
> > >
> > > Dans ton code, avant cette ligne de la procédure: Test
> > > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > >
> > > Tu inscris les commandes dans cet ordre :
> > > Tu peux aussi modifier le format date que tu désires dans "dd/mmm/yyyy H:MM:SS"
> > > commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> > > & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> > > Shell commande, vbHide
> > > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > >
> > > P.S- Tu dois ajouter à la déclaration des variables en début de procédure
> > > Dim Commande As String
> > >
> > >
> > > "ben" a écrit dans le message de groupe de
> > > discussion
> > > :
> > >
> > > Bonjour michdenis,
> > >
> > > Voici ma solution, cependant j'aimerais juste rajouter la date d'exécution
> > > pour chaque traitement, car j'ai qu'un seule fichier.
> > > ************************************************
> > > Declare Function OpenProcess Lib "kernel32" _
> > > (ByVal dwDesiredAccess As Long, _
> > > ByVal bInheritHandle As Long, _
> > > ByVal dwProcessId As Long) As Long
> > >
> > > Declare Function GetExitCodeProcess Lib "kernel32" _
> > > (ByVal hProcess As Long, _
> > > lpExitCode As Long) As Long
> > >
> > > Public Const PROCESS_QUERY_INFORMATION = &H400
> > > Public Const STILL_ACTIVE = &H103
> > >
> > > 'Sub Test()
> > > 'Dim StartTime As Double
> > > 'StartTime = Now
> > > 'ShellAndWait "ping.exe", 1
> > > 'MsgBox "Gone " & Format(Now - StartTime, "s") & " seconds"
> > > 'End Sub
> > > Sub addResrv_multi_line_test()
> > > ' il faut sélectionner plusieurs valeurs de la ligne
> > > Dim Cell As Range, Ligne As Range, Valeur, A As Integer
> > > Dim LogFile As String
> > > 'vérifier si Selection est une plage de cellules
> > > If TypeName(Selection) = "Range" Then
> > > 'Boucle sur chaque ligne de la sélection
> > > For Each Ligne In Selection.Rows
> > > 'Boucle sur chaque cellule de la ligne
> > > For Each Cell In Ligne.Cells
> > > Valeur = Valeur & " " & Cell.Value
> > > ' résultats intermédiaires
> > > 'MsgBox valeur
> > > Next Cell
> > > 'MsgBox Valeur
> > > 'A = A + 1
> > > 'toexe = "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line" & A & ".txt"
> > >
> > > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > > 'ShellAndWait "cmd.exe /c" & Valeur & " | clip ", 1
> > > Valeur = "" 'après chaque boucle il vide le contenu de la variable Valeur
> > > Next
> > > End If
> > >
> > > Dim wshShell
> > > Set wshShell = CreateObject("wscript.shell")
> > > 'Execution du fichier - ouverture d'un fichier txt
> > > wshShell.Run "C:addResrv_multi_line.txt"
> > >
> > > End Sub
> > >
> > >
> > > 'Window States (Per Help for Shell function):
> > > ' 1, 5, 9 Normal with focus.
> > > ' 2 Minimized with focus.
> > > ' 3 Maximized with focus.
> > > ' 4, 8 Normal without focus.
> > > ' 6, 7 Minimized without focus.
> > > Sub ShellAndWait(ByVal PathName As String, Optional WindowState)
> > > Dim hProg As Long
> > > Dim hProcess As Long, ExitCode As Long
> > >
> > > 'fill in the missing parameter and execute the program
> > > If IsMissing(WindowState) Then WindowState = 1
> > > hProg = Shell(PathName, WindowState)
> > > 'hProg is a "process ID under Win32. To get the process handle:
> > > hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
> > > Do
> > > 'populate Exitcode variable
> > > GetExitCodeProcess hProcess, ExitCode
> > > DoEvents
> > > Loop While ExitCode = STILL_ACTIVE
> > > End Sub
> > >
> > >
> > > ************************************************
> > >
> > > Cordialement.
> > >
> > >
> > > "michdenis" wrote:
> > >
> > > > Cette procédure fait exactement ce que tu désires.
> > > > Avec celle-ci, tu ne dois pas mettre la commande
> > > > "nslookup" dans la cellule, tu n'as comme tu désires
> > > > à saisir la valeur de la variable que tu veux tester.
> > > >
> > > > Tu sélectionnes ta liste et tu lances la procédure.
> > > >
> > > > P.S- N'oublie pas de modifier le chemin et le
> > > > nom du batchFile que tu vas créer .
> > > >
> > > > '------------------------------------------
> > > > Sub Créer_Et_Exécuter_Un_BatFile()
> > > > Dim Fichier As String, Chemin As String
> > > > Dim X As Long, C As Range, Texte As String
> > > > X = FreeFile
> > > >
> > > > '******* À RENSEIGNER ********
> > > > 'Où tu veux que le fichier soit créer
> > > > Chemin = "C:UsersPoweruser"
> > > > 'Nom du batchfile à créer
> > > > Fichier = "Denis.bat"
> > > > '*******************************
> > > > On Error Resume Next
> > > > 'Supprimer le fichier si il existe déjà
> > > > Kill Chemin & Fichier
> > > > 'supprime l'erreur au cas où le fichier n'exite pas
> > > > Err.Clear
> > > > 'S'assure que la selection est une plage de cellule
> > > >
> > > > If TypeName(Selection) = "Range" Then
> > > > 'Ce qui suit met dans la variable "texte" la
> > > > 'composition des lignes de code du BatchFile
> > > > Texte = "Echo on " & vbCrLf
> > > > Texte = "cd" & vbCrLf
> > > > Texte = texte & "c:" & vbCrLf
> > > > Texte = texte & "Cls" & vbCrLf
> > > > For Each C In Selection.Cells
> > > > If C <> "" Then
> > > > texte = Texte & "nslookup.exe " & C & vbCrLf
> > > > texte = Texte & "Pause" & vbCrLf
> > > > End If
> > > > Next
> > > > Texte = Texte & "exit"
> > > > End If
> > > > 'Création du fichier lui-même
> > > > Open Chemin & Fichier For Append As #X
> > > > 'Copie de la variable dans le fichier
> > > > Print #X, Texte
> > > > 'Fermeture du fichier batchfile
> > > > Close #X
> > > > 'Exécution du BatchFile
> > > > Shell "Cmd.exe /K " & Chemin & Fichier, vbNormalFocus
> > > > End Sub
> > > > '------------------------------------------
> > > >
> > > >
> > > >
> > > >
> > > >
Bonjour,
Plus clairement :
Sub Command2_Click()
Shell "CMD.EXE", vbNormalFocus
SendKeys "% ep", 1 'paste en dos : ALT+SPACE+E+P
End Sub
PS : ne fonction pas encore...uniquement le ALT mais pas au niveau
dosCordialement.
"michdenis" wrote:
> Que veux-tu dire par "ouvrir un cmd.exe" ?
> C'est un exécutable et non un fichier texte...
>
> Que veux-tu faire par la commande sendkeys ?
> "ALT+SPACE+E+P " ceci n'est pas une réponse...
>
> Tu expliques ?
>
>
> "ben" <ben@discussions.microsoft.com> a écrit dans le message de groupe de discussion
> :
> 7547A565-E623-4A59-80DE-9C25EB0CC51E@microsoft.com...
> Bonjour,
>
> Est-possible d'ouvrir un cmd.exe et faire un senkeys de cette combinaison
> de touche : ALT+SPACE+E+P ?.
>
> Merci.
>
> Cordialement.
>
> "michdenis" wrote:
>
> > Voici quelques explications sur cette ligne de commande :
> > ShellAndWait "cmd.exe /c " & Valeur & ">>C:addResrv_multi_line.txt", 1
> >
> > L'utilisation des ">>" permet d'ajouter le résultat d'une commande DOS
> > à l'information du fichier déjà existant si le fichier n'est pas vide.
> > tu peux si tu le désires effacer et écrire le résultat de la
> > commande en utilisant un seul ">" dans la commande.
> > ShellAndWait "cmd.exe /c " & Valeur & ">C:addResrv_multi_line.txt", 1
> >
> > On pourrait aussi le faire de cette façon en détournant un peu le rôle
> > de la commande "Echo off" en DOS comme ceci :
> > Dans votre programme, cela se traduit de façon suivante
> > Commande = commande = "cmd.exe /c echo off >C:addResrv_multi_line.txt"
> > Shell commande, vbHide
> > Vous insérez ces 2 lignes de code avant le début de la boucle. Cela videra
> > complètement le contenu du fichier existant.
> >
> > Pour supprimer un fichier existant
> > Kill C:addResrv_multi_line.txt
> >
> > Attention, le fichier est totalement détruit, il ne se
> > retrouve pas à la poubelle de Windows.
> >
> > Pour effacer le contenu du fichier texte, vous pouvez utiliser
> > la même commande :
> >
> >
> >
> > "ben" <ben@discussions.microsoft.com> a écrit dans le message de groupe de
> > discussion :
> > FE1B43C0-9707-49A0-83F3-CA9711FD4A51@microsoft.com...
> > Bonjour,
> >
> > Et merci infiniment pour votre aide.
> >
> > J'aimerais pour finaliser le projet faire au cas ou, un clear du fichier
> > txt ?.
> > Ou bien la suppression du fichier s'il existe avant l'execution.
> >
> > Merci de me faire les 2 propositions.
> >
> > Cordialement.
> >
> >
> >
> > "michdenis" wrote:
> >
> > > Les 2 lignes ajoutées vont s'exécuter pour tous les items
> > > contenus dans la boucle. Si tu ne désires inscrire une date
> > > que pour l'ensemble du code contenu dans la boucle,
> > > place ces 2 lignes de code avant le début de la ligne For ...
> > > de la même procédure.
> > >
> > > commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> > > & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> > > Shell commande, vbHide
> > >
> > >
> > > "michdenis" <michdenis@hotmail.com> a écrit dans le message de groupe de
> > > discussion :
> > > #1hANOclJHA.1172@TK2MSFTNGP04.phx.gbl...
> > > Attention aux coupures de lignes de code par le service de messagerie.
> > >
> > > N.B. Semble-t-il que la solution retenue s'est éloignée de ta
> > > demande initiale !
> > >
> > > Dans ton code, avant cette ligne de la procédure: Test
> > > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > >
> > > Tu inscris les commandes dans cet ordre :
> > > Tu peux aussi modifier le format date que tu désires dans "dd/mmm/yyyy H:MM:SS"
> > > commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> > > & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> > > Shell commande, vbHide
> > > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > >
> > > P.S- Tu dois ajouter à la déclaration des variables en début de procédure
> > > Dim Commande As String
> > >
> > >
> > > "ben" <ben@discussions.microsoft.com> a écrit dans le message de groupe de
> > > discussion
> > > :
> > > 41899344-EDF7-4431-AA45-2A64B3B1986A@microsoft.com...
> > > Bonjour michdenis,
> > >
> > > Voici ma solution, cependant j'aimerais juste rajouter la date d'exécution
> > > pour chaque traitement, car j'ai qu'un seule fichier.
> > > ************************************************
> > > Declare Function OpenProcess Lib "kernel32" _
> > > (ByVal dwDesiredAccess As Long, _
> > > ByVal bInheritHandle As Long, _
> > > ByVal dwProcessId As Long) As Long
> > >
> > > Declare Function GetExitCodeProcess Lib "kernel32" _
> > > (ByVal hProcess As Long, _
> > > lpExitCode As Long) As Long
> > >
> > > Public Const PROCESS_QUERY_INFORMATION = &H400
> > > Public Const STILL_ACTIVE = &H103
> > >
> > > 'Sub Test()
> > > 'Dim StartTime As Double
> > > 'StartTime = Now
> > > 'ShellAndWait "ping.exe", 1
> > > 'MsgBox "Gone " & Format(Now - StartTime, "s") & " seconds"
> > > 'End Sub
> > > Sub addResrv_multi_line_test()
> > > ' il faut sélectionner plusieurs valeurs de la ligne
> > > Dim Cell As Range, Ligne As Range, Valeur, A As Integer
> > > Dim LogFile As String
> > > 'vérifier si Selection est une plage de cellules
> > > If TypeName(Selection) = "Range" Then
> > > 'Boucle sur chaque ligne de la sélection
> > > For Each Ligne In Selection.Rows
> > > 'Boucle sur chaque cellule de la ligne
> > > For Each Cell In Ligne.Cells
> > > Valeur = Valeur & " " & Cell.Value
> > > ' résultats intermédiaires
> > > 'MsgBox valeur
> > > Next Cell
> > > 'MsgBox Valeur
> > > 'A = A + 1
> > > 'toexe = "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line" & A & ".txt"
> > >
> > > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > > 'ShellAndWait "cmd.exe /c" & Valeur & " | clip ", 1
> > > Valeur = "" 'après chaque boucle il vide le contenu de la variable Valeur
> > > Next
> > > End If
> > >
> > > Dim wshShell
> > > Set wshShell = CreateObject("wscript.shell")
> > > 'Execution du fichier - ouverture d'un fichier txt
> > > wshShell.Run "C:addResrv_multi_line.txt"
> > >
> > > End Sub
> > >
> > >
> > > 'Window States (Per Help for Shell function):
> > > ' 1, 5, 9 Normal with focus.
> > > ' 2 Minimized with focus.
> > > ' 3 Maximized with focus.
> > > ' 4, 8 Normal without focus.
> > > ' 6, 7 Minimized without focus.
> > > Sub ShellAndWait(ByVal PathName As String, Optional WindowState)
> > > Dim hProg As Long
> > > Dim hProcess As Long, ExitCode As Long
> > >
> > > 'fill in the missing parameter and execute the program
> > > If IsMissing(WindowState) Then WindowState = 1
> > > hProg = Shell(PathName, WindowState)
> > > 'hProg is a "process ID under Win32. To get the process handle:
> > > hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
> > > Do
> > > 'populate Exitcode variable
> > > GetExitCodeProcess hProcess, ExitCode
> > > DoEvents
> > > Loop While ExitCode = STILL_ACTIVE
> > > End Sub
> > >
> > >
> > > ************************************************
> > >
> > > Cordialement.
> > >
> > >
> > > "michdenis" wrote:
> > >
> > > > Cette procédure fait exactement ce que tu désires.
> > > > Avec celle-ci, tu ne dois pas mettre la commande
> > > > "nslookup" dans la cellule, tu n'as comme tu désires
> > > > à saisir la valeur de la variable que tu veux tester.
> > > >
> > > > Tu sélectionnes ta liste et tu lances la procédure.
> > > >
> > > > P.S- N'oublie pas de modifier le chemin et le
> > > > nom du batchFile que tu vas créer .
> > > >
> > > > '------------------------------------------
> > > > Sub Créer_Et_Exécuter_Un_BatFile()
> > > > Dim Fichier As String, Chemin As String
> > > > Dim X As Long, C As Range, Texte As String
> > > > X = FreeFile
> > > >
> > > > '******* À RENSEIGNER ********
> > > > 'Où tu veux que le fichier soit créer
> > > > Chemin = "C:UsersPoweruser"
> > > > 'Nom du batchfile à créer
> > > > Fichier = "Denis.bat"
> > > > '*******************************
> > > > On Error Resume Next
> > > > 'Supprimer le fichier si il existe déjà
> > > > Kill Chemin & Fichier
> > > > 'supprime l'erreur au cas où le fichier n'exite pas
> > > > Err.Clear
> > > > 'S'assure que la selection est une plage de cellule
> > > >
> > > > If TypeName(Selection) = "Range" Then
> > > > 'Ce qui suit met dans la variable "texte" la
> > > > 'composition des lignes de code du BatchFile
> > > > Texte = "Echo on " & vbCrLf
> > > > Texte = "cd" & vbCrLf
> > > > Texte = texte & "c:" & vbCrLf
> > > > Texte = texte & "Cls" & vbCrLf
> > > > For Each C In Selection.Cells
> > > > If C <> "" Then
> > > > texte = Texte & "nslookup.exe " & C & vbCrLf
> > > > texte = Texte & "Pause" & vbCrLf
> > > > End If
> > > > Next
> > > > Texte = Texte & "exit"
> > > > End If
> > > > 'Création du fichier lui-même
> > > > Open Chemin & Fichier For Append As #X
> > > > 'Copie de la variable dans le fichier
> > > > Print #X, Texte
> > > > 'Fermeture du fichier batchfile
> > > > Close #X
> > > > 'Exécution du BatchFile
> > > > Shell "Cmd.exe /K " & Chemin & Fichier, vbNormalFocus
> > > > End Sub
> > > > '------------------------------------------
> > > >
> > > >
> > > >
> > > >
> > > >
Bonjour,
Plus clairement :
Sub Command2_Click()
Shell "CMD.EXE", vbNormalFocus
SendKeys "% ep", 1 'paste en dos : ALT+SPACE+E+P
End Sub
PS : ne fonction pas encore...uniquement le ALT mais pas au niveau
dosCordialement.
"michdenis" wrote:
> Que veux-tu dire par "ouvrir un cmd.exe" ?
> C'est un exécutable et non un fichier texte...
>
> Que veux-tu faire par la commande sendkeys ?
> "ALT+SPACE+E+P " ceci n'est pas une réponse...
>
> Tu expliques ?
>
>
> "ben" a écrit dans le message de groupe de discussion
> :
>
> Bonjour,
>
> Est-possible d'ouvrir un cmd.exe et faire un senkeys de cette combinaison
> de touche : ALT+SPACE+E+P ?.
>
> Merci.
>
> Cordialement.
>
> "michdenis" wrote:
>
> > Voici quelques explications sur cette ligne de commande :
> > ShellAndWait "cmd.exe /c " & Valeur & ">>C:addResrv_multi_line.txt", 1
> >
> > L'utilisation des ">>" permet d'ajouter le résultat d'une commande DOS
> > à l'information du fichier déjà existant si le fichier n'est pas vide.
> > tu peux si tu le désires effacer et écrire le résultat de la
> > commande en utilisant un seul ">" dans la commande.
> > ShellAndWait "cmd.exe /c " & Valeur & ">C:addResrv_multi_line.txt", 1
> >
> > On pourrait aussi le faire de cette façon en détournant un peu le rôle
> > de la commande "Echo off" en DOS comme ceci :
> > Dans votre programme, cela se traduit de façon suivante
> > Commande = commande = "cmd.exe /c echo off >C:addResrv_multi_line.txt"
> > Shell commande, vbHide
> > Vous insérez ces 2 lignes de code avant le début de la boucle. Cela videra
> > complètement le contenu du fichier existant.
> >
> > Pour supprimer un fichier existant
> > Kill C:addResrv_multi_line.txt
> >
> > Attention, le fichier est totalement détruit, il ne se
> > retrouve pas à la poubelle de Windows.
> >
> > Pour effacer le contenu du fichier texte, vous pouvez utiliser
> > la même commande :
> >
> >
> >
> > "ben" a écrit dans le message de groupe de
> > discussion :
> >
> > Bonjour,
> >
> > Et merci infiniment pour votre aide.
> >
> > J'aimerais pour finaliser le projet faire au cas ou, un clear du fichier
> > txt ?.
> > Ou bien la suppression du fichier s'il existe avant l'execution.
> >
> > Merci de me faire les 2 propositions.
> >
> > Cordialement.
> >
> >
> >
> > "michdenis" wrote:
> >
> > > Les 2 lignes ajoutées vont s'exécuter pour tous les items
> > > contenus dans la boucle. Si tu ne désires inscrire une date
> > > que pour l'ensemble du code contenu dans la boucle,
> > > place ces 2 lignes de code avant le début de la ligne For ...
> > > de la même procédure.
> > >
> > > commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> > > & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> > > Shell commande, vbHide
> > >
> > >
> > > "michdenis" a écrit dans le message de groupe de
> > > discussion :
> > > #
> > > Attention aux coupures de lignes de code par le service de messagerie.
> > >
> > > N.B. Semble-t-il que la solution retenue s'est éloignée de ta
> > > demande initiale !
> > >
> > > Dans ton code, avant cette ligne de la procédure: Test
> > > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > >
> > > Tu inscris les commandes dans cet ordre :
> > > Tu peux aussi modifier le format date que tu désires dans "dd/mmm/yyyy H:MM:SS"
> > > commande = "cmd.exe /c Echo La date et l'heure de l'exécution est : " _
> > > & Format(Now, "dd/mmm/yyyy H:MM:SS") & ">>C:addResrv_multi_line.txt"
> > > Shell commande, vbHide
> > > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > >
> > > P.S- Tu dois ajouter à la déclaration des variables en début de procédure
> > > Dim Commande As String
> > >
> > >
> > > "ben" a écrit dans le message de groupe de
> > > discussion
> > > :
> > >
> > > Bonjour michdenis,
> > >
> > > Voici ma solution, cependant j'aimerais juste rajouter la date d'exécution
> > > pour chaque traitement, car j'ai qu'un seule fichier.
> > > ************************************************
> > > Declare Function OpenProcess Lib "kernel32" _
> > > (ByVal dwDesiredAccess As Long, _
> > > ByVal bInheritHandle As Long, _
> > > ByVal dwProcessId As Long) As Long
> > >
> > > Declare Function GetExitCodeProcess Lib "kernel32" _
> > > (ByVal hProcess As Long, _
> > > lpExitCode As Long) As Long
> > >
> > > Public Const PROCESS_QUERY_INFORMATION = &H400
> > > Public Const STILL_ACTIVE = &H103
> > >
> > > 'Sub Test()
> > > 'Dim StartTime As Double
> > > 'StartTime = Now
> > > 'ShellAndWait "ping.exe", 1
> > > 'MsgBox "Gone " & Format(Now - StartTime, "s") & " seconds"
> > > 'End Sub
> > > Sub addResrv_multi_line_test()
> > > ' il faut sélectionner plusieurs valeurs de la ligne
> > > Dim Cell As Range, Ligne As Range, Valeur, A As Integer
> > > Dim LogFile As String
> > > 'vérifier si Selection est une plage de cellules
> > > If TypeName(Selection) = "Range" Then
> > > 'Boucle sur chaque ligne de la sélection
> > > For Each Ligne In Selection.Rows
> > > 'Boucle sur chaque cellule de la ligne
> > > For Each Cell In Ligne.Cells
> > > Valeur = Valeur & " " & Cell.Value
> > > ' résultats intermédiaires
> > > 'MsgBox valeur
> > > Next Cell
> > > 'MsgBox Valeur
> > > 'A = A + 1
> > > 'toexe = "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line" & A & ".txt"
> > >
> > > ShellAndWait "cmd.exe /c" & Valeur & ">>C:addResrv_multi_line.txt", 1
> > > 'ShellAndWait "cmd.exe /c" & Valeur & " | clip ", 1
> > > Valeur = "" 'après chaque boucle il vide le contenu de la variable Valeur
> > > Next
> > > End If
> > >
> > > Dim wshShell
> > > Set wshShell = CreateObject("wscript.shell")
> > > 'Execution du fichier - ouverture d'un fichier txt
> > > wshShell.Run "C:addResrv_multi_line.txt"
> > >
> > > End Sub
> > >
> > >
> > > 'Window States (Per Help for Shell function):
> > > ' 1, 5, 9 Normal with focus.
> > > ' 2 Minimized with focus.
> > > ' 3 Maximized with focus.
> > > ' 4, 8 Normal without focus.
> > > ' 6, 7 Minimized without focus.
> > > Sub ShellAndWait(ByVal PathName As String, Optional WindowState)
> > > Dim hProg As Long
> > > Dim hProcess As Long, ExitCode As Long
> > >
> > > 'fill in the missing parameter and execute the program
> > > If IsMissing(WindowState) Then WindowState = 1
> > > hProg = Shell(PathName, WindowState)
> > > 'hProg is a "process ID under Win32. To get the process handle:
> > > hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
> > > Do
> > > 'populate Exitcode variable
> > > GetExitCodeProcess hProcess, ExitCode
> > > DoEvents
> > > Loop While ExitCode = STILL_ACTIVE
> > > End Sub
> > >
> > >
> > > ************************************************
> > >
> > > Cordialement.
> > >
> > >
> > > "michdenis" wrote:
> > >
> > > > Cette procédure fait exactement ce que tu désires.
> > > > Avec celle-ci, tu ne dois pas mettre la commande
> > > > "nslookup" dans la cellule, tu n'as comme tu désires
> > > > à saisir la valeur de la variable que tu veux tester.
> > > >
> > > > Tu sélectionnes ta liste et tu lances la procédure.
> > > >
> > > > P.S- N'oublie pas de modifier le chemin et le
> > > > nom du batchFile que tu vas créer .
> > > >
> > > > '------------------------------------------
> > > > Sub Créer_Et_Exécuter_Un_BatFile()
> > > > Dim Fichier As String, Chemin As String
> > > > Dim X As Long, C As Range, Texte As String
> > > > X = FreeFile
> > > >
> > > > '******* À RENSEIGNER ********
> > > > 'Où tu veux que le fichier soit créer
> > > > Chemin = "C:UsersPoweruser"
> > > > 'Nom du batchfile à créer
> > > > Fichier = "Denis.bat"
> > > > '*******************************
> > > > On Error Resume Next
> > > > 'Supprimer le fichier si il existe déjà
> > > > Kill Chemin & Fichier
> > > > 'supprime l'erreur au cas où le fichier n'exite pas
> > > > Err.Clear
> > > > 'S'assure que la selection est une plage de cellule
> > > >
> > > > If TypeName(Selection) = "Range" Then
> > > > 'Ce qui suit met dans la variable "texte" la
> > > > 'composition des lignes de code du BatchFile
> > > > Texte = "Echo on " & vbCrLf
> > > > Texte = "cd" & vbCrLf
> > > > Texte = texte & "c:" & vbCrLf
> > > > Texte = texte & "Cls" & vbCrLf
> > > > For Each C In Selection.Cells
> > > > If C <> "" Then
> > > > texte = Texte & "nslookup.exe " & C & vbCrLf
> > > > texte = Texte & "Pause" & vbCrLf
> > > > End If
> > > > Next
> > > > Texte = Texte & "exit"
> > > > End If
> > > > 'Création du fichier lui-même
> > > > Open Chemin & Fichier For Append As #X
> > > > 'Copie de la variable dans le fichier
> > > > Print #X, Texte
> > > > 'Fermeture du fichier batchfile
> > > > Close #X
> > > > 'Exécution du BatchFile
> > > > Shell "Cmd.exe /K " & Chemin & Fichier, vbNormalFocus
> > > > End Sub
> > > > '------------------------------------------
> > > >
> > > >
> > > >
> > > >
> > > >