Short link: http://bit.ly/mFZ92g
Le programme de la soirĂ©e (et d’une partie de la nuit) : crĂ©ation d’un fichier Excel “avancĂ©” intĂ©grant des fonctions particulièrement complexes et pour Ă©viter de copier 20 fois la mĂŞme formule, je fais des sub… En clair, du dĂ©veloppement pure en VBA !
C’est alors qu’en discutant avec quelques rares contacts connectĂ©s que l’un d’eux me sort : mais Excel, c’est juste un pauv’ tableur sans danger!
MalgrĂ© le fait que les us et coutumes voudraient que notre cher ami Excel ne soit qu’un vulgaire tableur… il parait que l’on peut y mettre du VBA avec…  Lisez la suite si vous pensez qu’un fichier excel est 100% sans risque !
L’inoffensif petit fichier excel!
Rassurez vous, il est totalement sans danger, c’est seulement pour vous mettre en garde.
Voyons en détails ce que fait mon fichier Excel avec prise en charge des macro (*.xlsm).
Une fois mon innocent tableau  lancé, allez donc regarder à la racine C (poste de travail, Disque local (C:) ou Ordinateur, Disque local (C:)).
Concrètement, il affiche votre nom d’utilisateur, date et heure du système, affiche votre IP et l’Ipconfig de votre machine et gĂ©nère deux fichier Ă la racine de C.
Aussi, libre Ă vous de vous amusez avec les deux boutons prĂ©sents, l’un gĂ©nĂ©rant les fichiers, l’autre les effaçant. ici encore, quand vous effacez les fichiers, Windows ou Excel vous demande une confirmation ?! Non, alors imaginez donc les dĂ©gâts si un petit malin voulait nettoyer votre dossier c:Windows ou pire encore, votre dossier “Mes Documents” ?!
VoilĂ ma bonne action de la semaine, vous serez maintenant prudent quand on vous enverra un pauv’ fichier de tableur…
Ps : ça fonctionne aussi avec Word, Access etc… Dans la majoritĂ© des cas, votre logiciel de bureautique prĂ©fĂ©rĂ© vous demandera avant d’activer le contenu “codĂ© en VBA” mais pas sur tous les cas, alors prudence !
1 : Ouverture du fichier
1 2 3 4 5 6 7 8 |
Private Sub Workbook_Open() Range("A1") = Environ("username") Range("B1") = Now getIP writeIPConfig writeSysFiles getIPConfig End Sub |
2 : Les Subs lancĂ©s sont tous dans le module nommĂ© “mod_start” que voici !
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
Option Explicit 'Récupérer l'adresse ip du client Sub getIP() Dim wsh As Object Dim RegEx As Object, RegM As Object Dim FSO As Object, fil As Object Dim ts As Object, txtAll As String, TempFil As String Set wsh = CreateObject("WScript.Shell") Set FSO = CreateObject("Scripting.FileSystemObject") Set RegEx = CreateObject("vbscript.regexp") TempFil = "C:myip.txt" wsh.Run "%comspec% /c ipconfig > " & TempFil, 0, True With RegEx .Pattern = "(d{1,3}.){3}d{1,3}" .Global = False End With Set fil = FSO.GetFile(TempFil) Set ts = fil.OpenAsTextStream(1) txtAll = ts.ReadAll Set RegM = RegEx.Execute(txtAll) ActiveSheet.Range("B3").Value = RegM(0) ActiveSheet.Range("B3").EntireColumn.AutoFit ts.Close Kill TempFil Set ts = Nothing Set wsh = Nothing Set fil = Nothing Set FSO = Nothing Set RegM = Nothing Set RegEx = Nothing End Sub 'Ecrire l'ipconfig dans c: Sub writeIPConfig() Dim wsh As Object Dim RegEx As Object Dim FSO As Object, fil As Object Dim ts As Object, txtAll As String, TempFil As String Set wsh = CreateObject("WScript.Shell") Set FSO = CreateObject("Scripting.FileSystemObject") Set RegEx = CreateObject("vbscript.regexp") wsh.Run "%comspec% /c ipconfig /all > " & "C:ipconfig.txt", 0, True With RegEx .Pattern = "(d{1,3}.){3}d{1,3}" .Global = False End With Set ts = Nothing Set wsh = Nothing Set fil = Nothing Set FSO = Nothing Set RegEx = Nothing End Sub 'Ecrire la liste des fichiers système dans c: Sub writeSysFiles() Dim wsh As Object Dim RegEx As Object Dim FSO As Object, fil As Object Dim ts As Object, txtAll As String, TempFil As String Set wsh = CreateObject("WScript.Shell") Set FSO = CreateObject("Scripting.FileSystemObject") Set RegEx = CreateObject("vbscript.regexp") wsh.Run "%comspec% /c dir /s > " & "C:SysFiles.txt", 0, True With RegEx .Pattern = "(d{1,3}.){3}d{1,3}" .Global = False End With End Sub 'Afficher l'ipconfig dans excel Sub getIPConfig() Sheets("Feuil1").Select Range("A5").Select Dim objShell As Object Dim intFile As Integer, intRow As Integer, intColumn As Integer Dim strCurrentLine As String Set objShell = CreateObject("Wscript.Shell") objShell.Run ("%comspec% /c ipconfig /all > C:ipcfg.txt") Set objShell = Nothing Application.Wait Now + 0.00003 intFile = FreeFile intRow = ActiveCell.Row intColumn = ActiveCell.Column Open "C:ipcfg.txt" For Input As #intFile Do Line Input #intFile, strCurrentLine Select Case Len(strCurrentLine) Case 0 intRow = intRow - 1 Case Is < 43 Cells(intRow, intColumn) = strCurrentLine Case Else Cells(intRow, intColumn + 1) = Mid(strCurrentLine, 8, 26) Cells(intRow, intColumn + 2) = Mid(strCurrentLine, 45) End Select intRow = intRow + 1 Loop Until EOF(intFile) Close #intFile Kill "C:ipcfg.txt" Set objShell = Nothing End Sub |
Ps : Pour ceux qui voudraient utiliser ces bouts de code (oui oui, vous ĂŞtes Ă la fin de l’article ! Que du code ^_^), c’est codĂ© Ă l’arrache sans aucune optimisation, retenez vous !
Thanks for the share!
Nancy.R
HĂ©, j’ai essayĂ© de vous envoyer concernant ce poste, mais ne sont pas en mesure de vous joindre. S’il vous plaĂ®t e-mail moi quand obtenir un instant. Merci.
Seul point de contact: http://www.tom4897.info/blog/contact/
Un billet qui m’obligera Ă voir Excel d’un autre oeil !
thanks for share!
congratulations for the text. Thanks for the info!