Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème de portée de variables (VBS) [ Langages dérivés / VBScript ] (BefaDuDesert)

mardi 18 septembre 2007 à 16:04:58 | Problème de portée de variables (VBS)

BefaDuDesert

Bonjour à tous.
J'ai rédigé un programme qui analyse ce que sort la fonction cacls mais j'ai des problèmes pour écrire les analyses dans un tableau HTML. Lorsque j'execute partiellement le programme pas de problème mais le programme entier il me dit qu'il ne connait pas la variable MonFic.

Voici le code :
'ligne normale :             "C:\Nouveau COSMOS\fabienmoreau:(OI)(CI)F"
'ligne utilisateur sup. : " COSMOS\fabienmoreau:(OI)(CI)F"
'ligne de droits : " FILE_WRITE_ATTRIBUTES"

'_________________________LECTURE d'un fichier_____________________________
'déclaration file system object
Dim FSO
'instanciation
Set FSO = CreateObject("Scripting.FileSystemObject")
'on instance le fichier texte
Set Ftxt = FSO.OpenTextFile("C:\Documents and Settings\fabienmoreau\test.txt")
'on parcours chaque ligne du fichier texte
Do While Not Ftxt.AtEndOfStream
MaVariable = Ftxt.Readline
if MaVariable <> "" Then
'WScript.echo MaVariable
traitementLigne(MaVariable)
End If
Loop
Ftxt.Close

'__________________________Ecrire d'un fichier_______________________________
Dim FSys, MonFic
FSys = CreateObject("Scripting.FileSystemObject")
MonFic = FSys.CreateTextFile("C:\droits.html")

'cette fonction permet de ne pas écraser ce qui avait écrit précédement dans le fichier
Sub MonFic.writeLine(chaine)
Set FSys = CreateObject("Scripting.FileSystemObject")
Set f = FSys.OpenTextFile("C:\droits.html",8)
With f
MonFic.writeLine chaine
End With
End Sub

'____________________________Préparation du fichier HTML_______________________
MonFic.writeLine "coucou"
MonFic.writeLine "<HTML>"
MonFic.writeLine "<HEAD>"
MonFic.writeLine "<TITLE>Récapitulatifs des droits des dossiers partagés du réseau de chez Lexibook</TITLE>"
MonFic.writeLine "</HEAD>"
MonFic.writeLine "<BODY>"
MonFic.writeLine "<TABLE BORDER=""" & "1" &""" ALIGN=" & """CENTER""" & ">"
MonFic.writeLine "<CAPTION> Droits </CAPTION>"
MonFic.writeLine "<TR ALIGN=""" & "CENTER""" & ">"
MonFic.writeLine "<TH> Chemin du répertoire ou fichier </TH>"
MonFic.writeLine "<TH> Groupe ou utilisateur ayant des droits</TH>"
MonFic.writeLine "<TH> Lecture </TH>"
MonFic.writeLine "<TH> Ecriture </TH>"
MonFic.writeLine "<TH> Modification </TH>"
MonFic.writeLine "<TH> Execution </TH>"
MonFic.writeLine "<TH> Appropriation </TH>"
MonFic.writeLine "<TH> Controle total </TH>"
MonFic.writeLine "</TR>"
MonFic.writeLine "coucou"

'_________________________Choix du mot dans la ligne___________________________
'cette fontion découpe les mots d'une chaine et sort le mot de la chaine choisi
'elle affiche également les mots de la chaine
'cette fonction permet de découper la chaine de caractères avec différentes sortes de séparateurs
'cette fonction gère également lorsqu'il y a plusieurs séparateurs à la suite
Function motChoisi(chaine,separateur,numMot)
chaineU=chaine
cpt = 1
nb = -1
Do While nb <> 0
'nb renvoie le premier caractère " " trouvé dans la chaine
nb=Instr(chaineU,separateur)
'si aucun espace a été trouvé
If nb <> 0 Then
'un espace est trouvé comme mot
If nb = 1 Then
cpt = cpt-1
chaineU = right(chaineU, len(chaineU)-1)
Else
mot_courant = left(chaineU, nb-1)
If numMot=cpt Then
motChoisi=mot_courant
End If
End If
chaineU=right(chaineU, len(chaineU) - nb+1)
cpt = cpt+1
Else
If numMot=cpt Then
motChoisi=chaineU
End If
End If
Loop
End Function

'__________________________Traitement de chaque ligne_________________________
Sub traitementLigne(Ligne)
'premiere ligne'
If left(Ligne,1) <> " " Then
'WScript.echo "vous etes sur la première ligne"
chemin = motChoisi(Ligne," ",1)
MonFic.writeLine "<TR>"
MonFic.writeLine "<TD>" & chemin & "</TD>"
reste = right(Ligne,len(Ligne)-len(chemin)-1)
util = motChoisi(motChoisi(reste,"\",2),":",1)
MonFic.writeLine "<TD>" & util & "</TD>"
domaineEtUtil=motChoisi(reste,":",1)
droits = right(reste,len(reste)-len(domaineEtUtil)-1)
WScript.echo "chemin : " & chemin
'WScript.echo "reste _" & reste
'Si nomDeDomaine\NomUtilisateur:droits
WScript.echo "Voici l'utilisateur ou le groupe: " & util
WScript.echo "Voici les droits : " & droits

'On s'occupe maintenant des droits
If Instr(droits,"(CI)") <> 0 OR Instr(droits,"(IO)") <> 0 OR Instr(droits,"(OI)") <> 0 Then
WScript.echo "Ces droits sont hérités"
MonFic.writeLine "<TD>" & "X" & "</TD>"
Else WScript.echo "Ces droits ne sont pas hérités"
MonFic.writeLine "<TD>" & "-" & "</TD>"
End If
If Instr(droits,"F") <> 0 Then
Wscript.echo "possede tous les droits"
MonFic.writeLine "<TD>" & "X" & "</TD>"
MonFic.writeLine "<TD>" & "X" & "</TD>"
MonFic.writeLine "<TD>" & "X" & "</TD>"
MonFic.writeLine "<TD>" & "X" & "</TD>"
MonFic.writeLine "<TD>" & "X" & "</TD>"
MonFic.writeLine "</TR>"

Else If Instr(droits,"C") <> 0 Then
WScript.echo "ne possèdent pas tous les droits"
Wscript.echo "droit de modification"
WScript.echo "droit de lecture"
WScript.echo "droit d'écriture"
MonFic.writeLine "<TD>" & "X" & "</TD>"
MonFic.writeLine "<TD>" & "X" & "</TD>"
MonFic.writeLine "<TD>" & "X" & "</TD>"
MonFic.writeLine "<TD>" & "X" & "</TD>"
MonFic.writeLine "<TD>" & "-" & "</TD>"
MonFic.writeLine "<TR>"
Else If Instr(droits,"(acc¦s sp,cialÿ:)") <> 0 Then
Wscript.echo "On doit aller voir plus loin"
End If
End If
End If
'pas ligne normale donc soit ligne utilisateur sup. soit ligne de droits
Else
'ligne utilisateur sup.
If Instr(Ligne,"\") Then
MonFic.writeLine "</TR>"
MonFic.writeLine "<TR>"
'nous traitons donc le cas même chemin que le précédent
MonFic.writeLine "<TD>" & chemin & "</TD>"
WScript.echo "C'est une ligne pour un nouvel utilisateur"
Ligne=sansEspaces(Ligne)
Util=motChoisi(motChoisi(Ligne,"\",2),":",1)
MonFic.writeLine "<TD>" & util & "</TD>"
domaineEtUtil=motChoisi(reste,":",1)
droits = right(reste,len(Ligne)-len(domaineEtUtil)-1)
WScript.echo "droits et nouvelles regles pour " & Util
WScript.echo "droits " & droits
If Instr(Ligne,"F") <> 0 Then
Wscript.echo "possede tous les droits"
MonFic.writeLine "<TD>" & "X" & "</TD>"
MonFic.writeLine "<TD>" & "X" & "</TD>"
MonFic.writeLine "<TD>" & "X" & "</TD>"
MonFic.writeLine "<TD>" & "X" & "</TD>"
MonFic.writeLine "<TD>" & "X" & "</TD>"
Else If Instr(Ligne,"C") <> 0 Then
MonFic.writeLine "<TD>" & "X" & "</TD>"
MonFic.writeLine "<TD>" & "X" & "</TD>"
MonFic.writeLine "<TD>" & "X" & "</TD>"
MonFic.writeLine "<TD>" & "X" & "</TD>"
MonFic.writeLine "<TD>" & "-" & "</TD>"
WScript.echo "ne possèdent pas tous les droits"
Wscript.echo "droit de modification"
WScript.echo "droit de lecture"
WScript.echo "droit d'écriture"
Else If Instr(Ligne,"(acc¦s sp,cialÿ:)") <> 0 Then
'le GUID permet de faciliter la mise en page du tableau HTML
'code : si présent 1 si non présent : 0
'lecture ecriture modification execution appropriation
' 1 1 1 1 1
GUID = 0
'Wscript.echo "On doit aller voir plus loin"
End If
End If
End If
'ligne de droits
Else
Ligne=sansEspaces(Ligne)
analyseDroits(Ligne)
End If
End If
End Sub

Function sansEspaces(mot)
Do While left(mot,1) = " "
mot=right(mot,len(mot)-1)
Loop
sansEspaces=mot
End Function

'Récapitulatif des droits dont nous avons besoin
'+controle total : F
'-controle total: C
'+lecture : READ_CONTROL
'+ecriture: FILE_WRITE_DATA
'+executer: FILE_EXECUTE
'changement appropriation: WRITE_OWNER

Sub analyseDroits(Ligne)
If Ligne = "READ_CONTROL" Then
WScript.echo "vous avez les droits de lecture"
GUID = GUID + 10000
End If
If Ligne = "FILE_WRITE_DATA" Then
Wscript.echo "Vous avez le droit d'écriture"
GUID = GUID + 01000
End If
If Ligne = "DELETE" Then
WScript.echo "vous avez le droit d'appropriation"
GUID = GUID + 00100
End If
If Ligne = "FILE_EXECUTE" Then
WScript.echo "Vous avez le droit d'execution"
GUID = GUID + 00010
End If
If Ligne = "WRITE_OWNER" Then
WScript.echo "vous avez le droit d'appropriation"
GUID = GUID + 00001
End If
analyseGUID GUID
End Sub

Sub analyseGUID(nombre)
chiffre1 = mid(GUID, 1,1)
chiffre2 = mid(GUID, 2,1)
chiffre3 = mid(GUID, 3,1)
chiffre4 = mid(GUID, 4,1)
chiffre5 = mid(GUID, 5,1)
If chiffre1="1" Then
MonFic.writeLine "<TD>" & "X" & "</TD>"
Else MonFic.writeLine "<TD>" & "-" & "</TD>"
End If
If chiffre2="1" Then
MonFic.writeLine "<TD>" & "X" & "</TD>"
Else MonFic.writeLine "<TD>" & "-" & "</TD>"
End If
If chiffre3="1" Then
MonFic.writeLine "<TD>" & "X" & "</TD>"
Else MonFic.writeLine "<TD>" & "-" & "</TD>"
End If
If chiffre4="1" Then
MonFic.writeLine "<TD>" & "X" & "</TD>"
Else MonFic.writeLine "<TD>" & "-" & "</TD>"
End If
If chiffre5="1" Then
MonFic.writeLine "<TD>" & "X" & "</TD>"
Else MonFic.writeLine "<TD>" & "-" & "</TD>"
End If
MonFic.writeLine "</TR>"
End Sub

'cloture du tableau et du fichier HTML
MonFic.writeLine "</TABLE>"
MonFic.writeLine "</BODY>"
MonFic.writeLine "</HTML>"

'traitementLigne("C:\Nouveau COSMOS\fabienmoreau:(OI)(CI)(acc¦s sp,cialÿ:)")

Merci d'avance pour votre aide

mardi 18 septembre 2007 à 18:46:23 | Re : Problème de portée de variables (VBS)

JMO

Membre Club


 Bonsoir,


J'ai un doute sur cette syntaxe:
'__________________________Ecrire d'un fichier_______________________________
Dim FSys, MonFic
FSys = CreateObject("Scripting.FileSystemObject")
MonFic = FSys.CreateTextFile("C:\droits.html")

'cette fonction permet de ne pas écraser ce qui avait écrit précédement dans le fichier
Sub MonFic.writeLine(chaine)
    Set FSys = CreateObject("Scripting.FileSystemObject")
    Set f = FSys.OpenTextFile("C:\droits.html",8)
    With f
        MonFic.writeLine chaine
    End With
End Sub



jean-marc

mercredi 19 septembre 2007 à 10:31:55 | Re : Problème de portée de variables (VBS)

BefaDuDesert

Bonjour,
oui c'est du aux nombreux tests que j'ai réalisés.
La fonction est ecrireDansFichier(chaine) et partout ou il y a MonFic.writeLine il faut le remplacer par ecrireDansFichier.

lundi 24 septembre 2007 à 16:28:05 | Re : Problème de portée de variables (VBS)


Cette discussion est classé dans : ligne, wscript, droits, monfic, writeline


Répondre à ce message

Sujets en rapport avec ce message

problème de code [ par penchu ] Bonjour à tous, je suis en stage dans une entreprise dans laquelle on m'a demandé de faire un programme de gestion des stocks avec un envoi de comma réservation IP [ par fr252040 ] Bonjour à tous, J'ai écrit un petit script qui, à partir d'un tableau excel contenant un certain nombre d'informations devrait effectuer la réservat Générer un fichier XML [ par chocolatgc ] Bonjour à tousje souhaite réaliser un bout de code afin de générer un fichier XML. Je procède comme suit :    Set fs = CreateObject("Scripting.FileSys utilisation d'une variable avec WshShell [ par pieherg ] Bonjour,j'essaie de positionner des droits sur des dossiers  pour chaque utilisateur dans un domainedonc mon script crée le dossier à partir d'une lis Répertoire [ par lcastell ] Bonjour ,je voudrais créer un répertoire en sauvegardant ayant le Nom comme sous-répertoire, voici ma sauvegarde :   ' Création du Fichier Nom+An.txt  Probleme .txt [ par boboker ] Bonjour, Je suis débutant de chez débutant en VB, et dans le code qui suis je veux créer un nouveau fichier (ici piece2.txt) .txt à partir d'un fichie Erreur lors de suppression de ligne ds BDD [ par ManuAntibes ] Salut Je n'arrive pas à supprimer des lignes dans une table "Detail_Commande".La chose se presente comme ça:1 table "Table_Liste" avec IdListe_Com, Cl HELP! Formules excel à faire sous access [ par zouloute84 ] Bonjour, je travaille sous Access pour un modèle et pour l'une de ces étapes du modèle,j'ai fait un tableau sous Excel pour avoir en tête la démarch auto-selection ds combobox [ par nerone21 ] Bonjour les codeurs, Tout d'abord je suis debutant en VB, alors un peu d'intransigeance lol.... et en vb2005 en plus ^^je vous explique l'utilité de l


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


LG KP501

Entre 9€ et 159€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.