IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comment générer un fichier pré-formaté en cliquant sur un bouton ?


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 1
    Points
    1
    Par défaut Comment générer un fichier pré-formaté en cliquant sur un bouton ?
    Bonjour,

    Désolé de reposter mais je pense avoir posté au mauvais endroit la première fois...

    je souhaiterais à partir d'une feuille Excel contenant des Nom d'équipements et leur adresses IP associées générer un fichier de configuration pour un utilitaire (Puty).

    A partir d'une feuille Excel contenant une liste de Host, formatée de cette manière : NomHost | @IP | login | pwd | typeconnexion

    J'aimerais en cliquant sur un bouton générer un fichier de configuration contenant autant de paragraphes que de host listé ci dessus.
    En exemple ci-dessous, voici le formatage de ces pargraphes.

    Pourriez-vous m'aider à réaliser ce script VBA par des exemples de macro, conseils ou autre...

    Merci d'avance,

    bzh

    HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\HOST1]
    "Present"=dword:00000001
    "HostName"="HOST1"
    "LogFileName"="putty.log"
    "LogType"=dword:00000000
    "LogFileClash"=dword:ffffffff
    "Protocol"="ssh"
    "PortNumber"=dword:00000016
    "CloseOnExit"=dword:00000001
    "WarnOnClose"=dword:00000001
    "PingInterval"=dword:00000000
    "PingIntervalSecs"=dword:00000000
    "TCPNoDelay"=dword:00000001
    "TerminalType"="xterm"
    "TerminalSpeed"="38400,38400"
    "ProxyExcludeList"=""
    "ProxyType"=dword:00000000
    "ProxyHost"="proxy"
    "ProxyPort"=dword:00000050
    "ProxyUsername"=""
    "ProxyPassword"=""
    "ProxyTelnetCommand"="connect %host %port\\n"
    "ProxySOCKSVersion"=dword:00000005
    "Environment"=""
    "UserName"=""
    "LocalUserName"=""
    "NoPTY"=dword:00000000
    "Compression"=dword:00000000
    "AgentFwd"=dword:00000000
    "ChangeUsername"=dword:00000000
    "Cipher"="aes,blowfish,3des,WARN,des,arcfour"
    "AuthTIS"=dword:00000000
    "AuthKI"=dword:00000001
    "SshProt"=dword:00000001
    "SSH2DES"=dword:00000000
    "PublicKeyFile"=""
    "RemoteCommand"=""
    "RFCEnviron"=dword:00000000
    "PassiveTelnet"=dword:00000000
    "BackspaceIsDelete"=dword:00000001
    "RXVTHomeEnd"=dword:00000000
    "LinuxFunctionKeys"=dword:00000000
    "NoApplicationKeys"=dword:00000000
    "NoApplicationCursors"=dword:00000000
    "NoMouseReporting"=dword:00000000
    "NoRemoteResize"=dword:00000000
    "NoAltScreen"=dword:00000000
    "NoRemoteWinTitle"=dword:00000000
    "NoDBackspace"=dword:00000000
    "NoRemoteCharset"=dword:00000000
    "ApplicationCursorKeys"=dword:00000000
    "ApplicationKeypad"=dword:00000000
    "NetHackKeypad"=dword:00000000
    "AltF4"=dword:00000001
    "AltSpace"=dword:00000000
    "AltOnly"=dword:00000000
    "ComposeKey"=dword:00000000
    "CtrlAltKeys"=dword:00000001
    "TelnetKey"=dword:00000000
    "TelnetRet"=dword:00000001
    "LocalEcho"=dword:00000002
    "LocalEdit"=dword:00000002
    "Answerback"="PuTTY"
    "AlwaysOnTop"=dword:00000000
    "FullScreenOnAltEnter"=dword:00000000
    "HideMousePtr"=dword:00000000
    "SunkenEdge"=dword:00000000
    "WindowBorder"=dword:00000001
    "CurType"=dword:00000000
    "BlinkCur"=dword:00000000
    "Beep"=dword:00000001
    "BeepInd"=dword:00000000
    "BellWaveFile"=""
    "BellOverload"=dword:00000001
    "BellOverloadN"=dword:00000005
    "BellOverloadT"=dword:000007d0
    "BellOverloadS"=dword:00001388
    "ScrollbackLines"=dword:00001388
    "DECOriginMode"=dword:00000000
    "AutoWrapMode"=dword:00000001
    "LFImpliesCR"=dword:00000000
    "WinNameAlways"=dword:00000000
    "WinTitle"=""
    "TermWidth"=dword:00000078
    "TermHeight"=dword:00000032
    "Font"="Courier New"
    "FontIsBold"=dword:00000000
    "FontCharSet"=dword:00000000
    "FontHeight"=dword:0000000a
    "FontVTMode"=dword:00000004
    "TryPalette"=dword:00000000
    "BoldAsColour"=dword:00000001
    "Colour0"="0,0,0"
    "Colour1"="0,0,0"
    "Colour2"="255,255,255"
    "Colour3"="85,85,85"
    "Colour4"="0,255,0"
    "Colour5"="0,0,0"
    "Colour6"="0,0,0"
    "Colour7"="85,85,85"
    "Colour8"="187,0,0"
    "Colour9"="255,85,85"
    "Colour10"="85,255,85"
    "Colour11"="0,187,0"
    "Colour12"="187,187,0"
    "Colour13"="255,255,85"
    "Colour14"="0,0,187"
    "Colour15"="85,85,255"
    "Colour16"="187,0,187"
    "Colour17"="255,85,255"
    "Colour18"="0,187,187"
    "Colour19"="85,255,255"
    "Colour20"="255,255,255"
    "Colour21"="187,187,187"
    "RawCNP"=dword:00000000
    "PasteRTF"=dword:00000000
    "MouseIsXterm"=dword:00000000
    "RectSelect"=dword:00000000
    "MouseOverride"=dword:00000001
    "Wordness0"="0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"
    "Wordness32"="0,1,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1"
    "Wordness64"="1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,2"
    "Wordness96"="1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1"
    "Wordness128"="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"
    "Wordness160"="1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"
    "Wordness192"="2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2"
    "Wordness224"="2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2"
    "LineCodePage"="ISO-8859-15:1999 (Latin-9, \"euro\")"
    "Printer"=""
    "CapsLockCyr"=dword:00000000
    "ScrollBar"=dword:00000001
    "ScrollBarFullScreen"=dword:00000000
    "ScrollOnKey"=dword:00000000
    "ScrollOnDisp"=dword:00000001
    "LockSize"=dword:00000000
    "BCE"=dword:00000001
    "BlinkText"=dword:00000000
    "X11Forward"=dword:00000000
    "X11Display"="localhost:0"
    "LocalPortAcceptAll"=dword:00000000
    "RemotePortAcceptAll"=dword:00000000
    "PortForwardings"=""
    "BugIgnore1"=dword:00000000
    "BugPlainPW1"=dword:00000000
    "BugRSA1"=dword:00000000
    "BugHMAC2"=dword:00000000
    "BugDeriveKey2"=dword:00000000
    "BugRSAPad2"=dword:00000000
    "BugDHGEx2"=dword:00000000
    "LogFlush"=dword:00000001
    "SSHLogOmitPasswords"=dword:00000001
    "SSHLogOmitData"=dword:00000000
    "TCPKeepalives"=dword:00000000
    "TerminalModes"="INTR=A,QUIT=A,ERASE=A,KILL=A,EOF=A,EOL=A,EOL2=A,START=A,STOP=A,SUSP=A,DSUSP=A,REPRINT=A,WERASE=A,LNEXT=A,FLUSH=A,SWTCH=A,STATUS=A,DISCARD=A,IGNPAR=A,PARMRK=A,INPCK=A,ISTRIP=A,INLCR=A,IGNCR=A,ICRNL=A,IUCLC=A,IXON=A,IXANY=A,IXOFF=A,IMAXBEL=A,ISIG=A,ICANON=A,XCASE=A,ECHO=A,ECHOE=A,ECHOK=A,ECHONL=A,NOFLSH=A,TOSTOP=A,IEXTEN=A,ECHOCTL=A,ECHOKE=A,PENDIN=A,OPOST=A,OLCUC=A,ONLCR=A,OCRNL=A,ONOCR=A,ONLRET=A,CS7=A,CS8=A,PARENB=A,PARODD=A,"
    "AddressFamily"=dword:00000000
    "ProxyDNS"=dword:00000001
    "ProxyLocalhost"=dword:00000000
    "ProxyMethod"=dword:00000000
    "TryAgent"=dword:00000001
    "KEX"="dh-gex-sha1,dh-group14-sha1,dh-group1-sha1,WARN"
    "RekeyTime"=dword:0000003c
    "RekeyBytes"="1G"
    "SshNoAuth"=dword:00000000
    "SshNoShell"=dword:00000000
    "RemoteQTitleAction"=dword:00000001
    "DisableArabicShaping"=dword:00000000
    "DisableBidi"=dword:00000000
    "FontQuality"=dword:00000000
    "UseSystemColours"=dword:00000000
    "ANSIColour"=dword:00000001
    "Xterm256Colour"=dword:00000001
    "CJKAmbigWide"=dword:00000000
    "UTFverride"=dword:00000001
    "EraseToScrollback"=dword:00000001
    "X11AuthType"=dword:00000001
    "BugPKSessID2"=dword:00000000
    "BugRekey2"=dword:00000000
    "StampUtmp"=dword:00000001
    "LoginShell"=dword:00000001
    "ScrollbarOnLeft"=dword:00000000
    "BoldFont"=""
    "BoldFontIsBold"=dword:00000002
    "BoldFontCharSet"=dword:0012ce40
    "BoldFontHeight"=dword:00000004
    "WideFont"=""
    "WideFontIsBold"=dword:004422fd
    "WideFontCharSet"=dword:00000002
    "WideFontHeight"=dword:000000ac
    "WideBoldFont"=""
    "WideBoldFontIsBold"=dword:00000000
    "WideBoldFontCharSet"=dword:004422fd
    "WideBoldFontHeight"=dword:0012ce38
    "ShadowBold"=dword:00000000
    "ShadowBoldOffset"=dword:00000001
    "SerialLine"="COM1"
    "SerialSpeed"=dword:00002580
    "SerialDataBits"=dword:00000008
    "SerialStopHalfbits"=dword:00000002
    "SerialParity"=dword:00000000
    "SerialFlowControl"=dword:00000001

    HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\HOST2]
    .
    .
    .
    HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\HOST3]
    etc.......

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    écris un fichier valable pour un Host
    remplace le nom par une variable %MONHOST% par exemple.

    Ensuite tu peux faire une boucle
    Récupérer le texte du fichier
    Remplacer %MONHOST% par le nom du host
    Créer un fichier avec ce texte

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Merci pour votre réponse, auriez-vous un exemple de code ? ...je ne suis pas fortiche en VBA.

    Merci et bonne journée,

    BZH

  4. #4
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Oui, j'ai ça en magasin

    donc si ton fichier modèle c'est : c:\temp\template config.txt

    tu références le filesystemobject (Microsoft Scripting Runtime)

    tableauHosts() est une variable tableau qui contient tous tes hosts

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Dim fso As FileSystemObject
    Dim fic As TextStream, ficNew As TextStream
    Dim s As String, Dim i As Long
     
    For i = LBound(tableauHosts) To UBound(tableauHosts)
        Set fso = New FileSystemObject
        Set fic = fso.OpenTextFile("c:\temp\template config.txt")
        s = fic.ReadAll
        s = Replace(s, "%MONHOST%", tableauHosts(i))
        Set ficNew = fso.CreateTextFile("c:\temp\template config " & tableauHosts(i) & ".txt", True)
        ficNew.Write s
    next i
    Set fso = Nothing
    Set fic = Nothing
    Set ficNew = Nothing

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Ok et merci, c'est sympha.

    Donc en cherchant un peut, j'ai bien référencé le filesystemobject (Microsoft Scripting Runtime).
    Mais au lancement j'ai une "erreur d'execution '13' Imcompatibilité de type.

    Peux tu m'expliquer ce qu'est "tableauHosts" ? le nom de ma feuille ? le nom de ma collonne peut être ?

    Merci

    BZH

  6. #6
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Le truc c'est que j'ignore sous quelle forme tu récupères ta liste de hosts.
    Donc TableauHosts() est une variable tableau ... mais ce code - à visée pédagogique - est à adapter à ton cas.

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    oui en effet je vois bien que ça se rapproche à ce que je souhaite faire.

    Je récupère ma liste de hosts à partir d'une feuille Excel intitulée "Liste de host" et qui contient plusieurs collonnes formatées de cette manière :
    | NomHost | @IP | login | pwd | typeconnexion |

    Et donc je ne comprends pas encore comment utiliser la variable tableau de ton exemple.

  8. #8
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    OK ... donc adaptation du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Dim fso As FileSystemObject
    Dim fic As TextStream, ficNew As TextStream
    Dim s As String, Dim i As Long
    dim TableauHosts As Variant
     
    ' récupère la plage dans une variable Tableau
    TableauHosts = Workbook("Ton fichier.xls").Sheets("Ton onglet").Range("A2:A200").Value
     
    For i = LBound(tableauHosts, 1) To UBound(tableauHosts, 1)
        Set fso = New FileSystemObject
        Set fic = fso.OpenTextFile("c:\temp\template config.txt")
        s = fic.ReadAll
        s = Replace(s, "%MONHOST%", tableauHosts(i, 1))
        Set ficNew = fso.CreateTextFile("c:\temp\template config " & tableauHosts(i, 1) & ".txt", True)
        ficNew.Write s
    next i
    Set fso = Nothing
    Set fic = Nothing
    Set ficNew = Nothing

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    OK et Merci cafeine, je pense avoir pigé par contre j'ignore comment identifier les nouvelles références/bibliothèques.

    Là je suis bloqué par une "erreur de compilation Sub ou function non définie" qui pointe sur Workbook, je cherche sur le net mais pour le moment je ne vois pas.

    a++

  10. #10
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    vu que j'ai écrit ce code dans le post et pas dans VBE, c'est peut être Workbooks() au lieu de Workbook

  11. #11
    Nouveau Candidat au Club
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Yesss ça marche, ...enfin presque !

    car j'ai un message d'erreur "permission refusée" qui pointe sur cette ligne :
    Set ficNew = fso.CreateTextFile("c:\temp\template\tmp_" & TableauHosts(i, 1) & ".txt", True) ou peut être celle du dessous.

    Quand aux fichiers temporaires, j'en ai donc autant que de host référencés mais ils sont tronqués en chaque début de fichier avec ce marquage :
    WNULNULNULNULNULNUL...."255,255,85"
    "Colour14"="0,0,187"
    "Colour15"="85,85,255"
    "Colour16"="187,0,187"....suite du fichier

    Une idée ? les droit sur le fichiers semblent pourtant corrects et il n'est pas ouvert à coté.

    BZH

  12. #12
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    1- tu dois avoir un HOST qui n'est pas compatible avec un nom de fichier
    => prévoir de renommer si besoin
    2- remets le code qu'on puisse regarder

  13. #13
    Nouveau Candidat au Club
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    J'ai vérifié ma liste de host, il ne semble pas y avoir de syntaxe spéciale.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Sub putty()
    '
    ' putty Macro
    ' Macro enregistrée le 19/02/2008 par xxx
    '
     
    '
     
    Dim fso As FileSystemObject
    Dim fic As TextStream
    Dim ficNew As TextStream
    Dim s As String
    Dim i As Long
    Dim TableauHosts As Variant
     
    ' récupère la plage dans une variable Tableau
    TableauHosts = Workbooks("TESTdevelopment_network_pfs.xls").Sheets("tableHosts").Range("A2:A200").Value
     
    For i = LBound(TableauHosts, 1) To UBound(TableauHosts, 1)
       Set fso = New FileSystemObject
       Set fic = fso.OpenTextFile("c:\temp\template\putty.reg")
       s = fic.ReadAll
       s = Replace(s, "%HostName%", TableauHosts(i, 1))
       Set ficNew = fso.CreateTextFile("c:\temp\template\tmp_" & TableauHosts(i, 1) & ".txt", True)
       ficNew.Write s
    Next i
    Set fso = Nothing
    Set fic = Nothing
    Set ficNew = Nothing
     
    End Sub

  14. #14
    Nouveau Candidat au Club
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Le fichier référence lu fait environ 200 lignes.

    Savez-vous me dire quel est la taille du buffer "s" lié à la commande "ReadAll" ? comment l'augmenter et/ou comment contourner mon problème ?

    Car tous mes fichiers créés sont tronqués de moitié par rapport au fichier référence et avant même que le script ne trouve la chaine à remplacer.

    Merci

    BZH

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/06/2007, 15h35
  2. Réponses: 2
    Dernier message: 14/03/2006, 15h22
  3. Réponses: 3
    Dernier message: 12/10/2005, 14h53
  4. Comment générer un fichier texte à partir d'un XML et XSL
    Par Jayceblaster dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 24/07/2005, 23h42
  5. Réponses: 22
    Dernier message: 24/04/2005, 17h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo