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

VBScript Discussion :

Récupérer valeurs dans une fonction


Sujet :

VBScript

  1. #1
    Membre averti
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Par défaut Récupérer valeurs dans une fonction
    Bonjour

    J'ai un p'tit soucis (sinon je ne posterais pas un thread) :p

    J'ai fais des fonction qui permette de chercher dans un fichier .ini des sections afin d'en ressortir les variables.

    Voici mon fichier ini :

    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
    [Langage]
    0002=FR
    0009=FR
    0040=UK
    0061=FR
    0031=DE
    0070=UK
    0080=IE
    0024=NE
    [/Langage]
     
    [FR]
    caNet="C.A. net"
    nbArticle="Nombre d'articles"
    nbTicketCA="Nombre de tickets (avec C.A.)"
    nbTicketAnnu="Nombre de tickets annulés"
    mntTicketAnnu="Montant tickets annulés"
    nbTicketAband="Nombre de tickets abandonnés"
    mntTicketAband="Montant tickets abandonnés"
    [/FR]
     
    [UK]
    caNet="Nett Sales"
    nbArticle="Number of Articles"
    nbTicketCA="Number of Receipts (with sales)"
    [/UK]
    En gros, dans la section "langage", un fonction va vérifier si le dossier 0002 est bien dans un certain chemin d'accès (et il va vérifier pour toute les clé de la section "langage". Une fois la vérification effectué, cette fonction va appeler une autre fonction qui va lister les fichiers (*.log) qui sont dans chaque dossier (0002,0009, etc).

    Le but est de récupérer des informations dans ces fichiers .log .

    J'aimerais avoir une fonction qui dis "si le fichier .log est situé dans le dossier 0002 alors la langue est FR. Va dans la section [FR] puis récupère moi les valeurs de chaque variable et arrête toi dès que tu trouve [/FR]" Mais là je bloque royalement (je ne suis pas du tout développeur et je galère vraiment mais je me donne à fond :p ) voici les fonction que j'ai fais (en sachant que ma fonction bandeRAZ doit remonter mes infos) :

    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
    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
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    Function bandeRAZ(repFile)
     
    	Const ForReading = 1, ForWriting = 2 
    	Dim oFs, oFile
    	Dim nbLgn
    	Set oFs = CreateObject("Scripting.FileSystemObject")
     
    	strSesFile = repFile
    	'FullPathFicIni = "P:\Scripts\band raz\traitement.ini"
     
    	Set ficSes = oFs.OpenTextFile(strSesFile, ForReading)
     
    	'récupération d'un tableau de x lignes totalité du fichier
    	ContenuLgnSes = split(ficSes.ReadAll,vbnewline)
    	'Récupère le nombre de ligne dans un fichier
    	nbLgnSes = ficSes.Line -1
    	'fermeture du fichier
    	ficSes.close
     
    	'Set ficIni = oFs.OpenTextFile(FullPathFicIni, ForReading)
     
    	'récupération d'un tableau de x lignes totalité du fichier
    	'ContenuLgnIni = split(ficIni.ReadAll,vbnewline)
    	'Récupère le nombre de ligne dans un fichier
    	'nbLgnIni = ficIni.Line -1
    	'fermeture du fichier
    	'ficIni.close
     
    	'Initialisation de la variable f
    	set ficSes = nothing
     
     
     
    End Function
     
     
    Function traitementSection(rechercheLang)
     
    	Const ForReading = 1, ForWriting = 2 
    	Dim oFs, oFile
    	Dim nbLgn
    	Set oFs = CreateObject("Scripting.FileSystemObject")
     
    	Dim strIniFile
     
    	lang = rechercheLang
     
    	'Emplacement du fichier traitement.ini
    	strIniFile="P:\Scripts\band raz\traitement.ini"
     
    	Set oFs=CreateObject("Scripting.FileSystemObject")
     
    	'Ouverture et lecture de traitement.ini
    	Set oFile=oFs.OpenTextFile(StrIniFile)
     
    	'récupération d'un tableau de x lignes totalité du fichier
    	ContenuLgn = split(oFile.ReadAll,vbnewline)
    	'Récupère le nombre de ligne dans un fichier
    	nbLgn = oFile.Line -1
    	'Fermeture du fichier ini
    	oFile.close
     
    	for t = 0 to nbLgn
     
    		debSection = left(ContenuLgn(t),"=")
     
    		if debSection = "[" & lang & "]" then
     
    			test = debSection
     
    			msgbox test
     
     
    			exit for
     
    		end if	
     
    	next	
     
    End Function
     
    Function typeLang(t)
     
    	Dim strIniFile
     
    	'Emplacement du fichier traitement.ini
    	strIniFile="P:\Scripts\band raz\traitement.ini"
     
    	Set oFs=CreateObject("Scripting.FileSystemObject")
     
    		If oFs.FileExists(strIniFile) Then
     
    			set resultLang = Nothing
     
    					'Ouverture et lecture de traitement.ini
    					Set oFile=oFs.OpenTextFile(StrIniFile)
     
    					'récupération d'un tableau de x lignes totalité du fichier
    					ContenuLgn = split(oFile.ReadAll,vbnewline)
    					'Récupère le nombre de ligne dans un fichier
    					'nbLgn = oFile.Line -1
    					'Fermeture du fichier ini
    					oFile.close
     
    					'lecture du tableau contenant le contenu du fichier traitement.ini				
    					for t = 1 to traitementIni(nbreLgn)
     
    						'Récupérer les 2 première lettres de chaque variable dans le fichier ini
    						resultLang = replace(ContenuLgn(t),left(ContenuLgn(t),5),"")
     
    						traitementSection(resultLang)
    						'msgbox lang
     
    					next
     
    					Else
     
    					Msgbox "Le dossier (.ini) n'a pas été trouvé"
    					WScript.Quit
     
    		End If
     
    	typeLang = resultLang
     
    	Set oFile=Nothing
    	Set oFs=Nothing ' Si l'on ne s'en sert plus
     
     
    End Function
     
     
     
    Function listerFichiers(repFichiers)
     
    	Dim fichiersRep 'Nom du répertoire à parcourir
    	Dim oFs,oFl
    	Dim name, nameFolder
     
    		Set oFs = CreateObject("Scripting.FileSystemObject")
     
    		fichiersRep = repFichiers
     
    			If oFs.FolderExists(fichiersRep) Then
     
    				'lister les fichiers d'un dossier
    				 For each oFl in  oFs.GetFolder(fichiersRep).Files
     
    				   name = oFl.Name
    				   nameFolder = fichiersRep & "\" & name
     
    				  bandeRAZ(nameFolder)
    				  'msgbox nameFolder
    				  'msgbox name
    				  'typelang()
     
    				 Next
     
    			End If
     
    			'retourne le resultat de la fonction
    			listerFichiers = nameFolder
     
    End Function
     
    Function numKids(pathDossier)
     
    	Dim oFs, FicIni
    	Dim strDebug
     
    	Set oFs = CreateObject("Scripting.FileSystemObject")
     
    	FullPathFicIni = "P:\Scripts\band raz\traitement.ini"
    	If oFs.fileExists(FullPathFicIni) Then
     
    		Set FicIni = oFs.opentextfile(FullPathFicIni)
     
    		'récupération d'un tableau de x lignes totalité du fichier
    		ContenuLgn = split(FicIni.ReadAll,vbnewline)
    		'Récupère le nombre de ligne dans un fichier
    		'nbLgn = FicIni.Line -1
    		'Fermeture du fichier ini
    		FicIni.close
     
    			for t = 1 to traitementIni(nbreLgn)
     
    			'lectureSection = ContenuLgn(t)
    			dossier = replace(ContenuLgn(t),right(ContenuLgn(t),3),"")
     
    			if oFs.FolderExists("P:\Scripts\band raz\Reception\" & dossier) Then
     
    					resultDossier = "P:\Scripts\band raz\Reception\" & dossier
     
    					'Appel de la fonction permettant de lister les fichiers dans chaque répertoire
    					listerFichiers(resultDossier)
     
    				Else
     
    					msgbox "le répertoire " & dossier & " n'existe pas"
     
    			End if
     
    			next
     
    	Else
     
    		Msgbox "Le dossier (.ini) n'a pas été trouvé"
    		WScript.Quit
     
    	End If	
     
     
    End Function
     
    Function traitementIni(nbreLgn)
     
    	Dim oFs, FicIni
    	Dim strDebug
     
    	Set oFs = CreateObject("Scripting.FileSystemObject")
     
    	FullPathFicIni = "P:\Scripts\band raz\traitement.ini"
     
    		Set FicIni = oFs.opentextfile(FullPathFicIni)
     
    		'récupération d'un tableau de x lignes totalité du fichier
    		ContenuLgn = split(FicIni.ReadAll,vbnewline)
    		'Récupère le nombre de ligne dans un fichier
    		nbLgn = FicIni.Line -1
    		'Fermeture du fichier ini
    		FicIni.close
     
    		'lecture du tableau contenant le contenu du fichier traitement.ini			
    		for t = 0 to nbLgn
     
    			'sectionDeb = Left(ContenuLgn(t), 9)
    			sectionFin = Left(ContenuLgn(t),10)
     
    			nbre = nbre + 1
     
    			'tant que la section [/Langage] n'est pas passé, on increment nbre de 1
    			if sectionFin = "[/Langage]" Then
     
    				nbreLgn = nbre - 2
     
    				exit for
     
    			end if
     
    		next	
     
    	'retourne le resultat de la fonction
    	traitementIni = nbreLgn
     
    End Function
     
    'numKids(debTraitement)
    typeLang(g)
    'test(
    Les fonctions :

    traitementIni() récupère le nbre de libre de la section "langage" afin de chercher les clé dedans
    numKids() vérifie que les dossiers 0002, 0009 etc existe et met le chemin dans une variable
    listerFichiers() rentre dans chaque dossiers (0002,0009) et liste les fichier dedans
    typeLang() selectionne la languge de chaque clé du fichier ini (0002 donc FR, 0009 donc FR, etc)
    Je voulais que traitementSection me récupère les valeurs dans chaque section du fichier ini (FR et UK) en sachant que je peux enr ajouter dans le fichier ini donc je ne veux pas de valeur en dure dans mon code mais je pense pas que ce que j'ai fais soit juste...

    Et voici un fichier de log FR et UK :

    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
    --------------------------------------------------------
    Retours                                     60,00 E
    C.A. net                                     53,50 E
    --------------------------------------------------------
    Taxes sur chiffre d'affaires
    --------------------------------------------------------
    T.V.A
      Taux                          Total HT   Montant Taxes
      19,6%                          44,73 E          8,77 E
    --------------------------------------------------------
    Règlements
    --------------------------------------------------------
    CB                                53,50 E        53,50 E
    --------------------------------------------------------
    --------------------------------------------------------
    Sorties de caisse                                 0,00 E
    Dont dépenses                                     0,00 E
    --------------------------------------------------------
    Entrées de caisse                                 0,00 E
    Dont retouches                                    0,00 E
    --------------------------------------------------------
    Nombre d'articles                                   1,00
    Nombre d'articles cadeau                            0,00
    Nombre de tickets (avec C.A.)                          1
    Indice de vente                                     1,00
    Panier moyen                                     53,50 E
    ========================================================
                     *** FIN BANDE RAZ ***

    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
    Sales (Gross)                                  972,00 E
    Cash Discounts                                  239,50 E
    --------------------------------------------------------
    Returns                                      0,00 E
    Nett Sales                                      732,50 E
    --------------------------------------------------------
    Taxes on Sales
    --------------------------------------------------------
    T.V.A
      Taux                          Total HT   Montant Taxes
      19,6%                         612,46 E        120,04 E
    --------------------------------------------------------
    Règlements
    --------------------------------------------------------
    CB                               732,50 E       732,50 E
    --------------------------------------------------------
    --------------------------------------------------------
    Cash Expenditure                                 0,00 E
    Including Expense                                     0,00 E
    --------------------------------------------------------
    Sales Input                                 0,00 E
    Including Alterations                                    0,00 E
    --------------------------------------------------------
    Number of Articles                                 27,00
    Number of Gift Articles                            0,00
    Number of Receipts (with sales)                        9
    Sales Index                                     3,00
    Average basket                                     81,39 E
    ========================================================
                     *** FIN BANDE RAZ ***
    Merci d'avance pour vos éclairsissement et désolé si mon code est pas très propre mais je n'ai jamais fais de developpement auparavent

  2. #2
    Membre averti
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Par défaut
    Bon étant complètement perdu je me suis dis qu'il serait préférable de repartir de zéro (ou presque) et ça devrait aller mieux. C'est ce que j'ai fais et j'ai résolu une grosse partie de mon problème

    J'ai encore un p'tit soucis. 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
    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
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    Function numKids(pathDossier)
     
    	Dim oFs, FicIni
    	Dim strDebug
    	Dim flag,cpt
     
    	Set oFs = CreateObject("Scripting.FileSystemObject")
     
    	FullPathFicIni = "P:\Scripts\band raz\traitement.ini"
    	If oFs.fileExists(FullPathFicIni) Then
     
    		Set FicIni = oFs.opentextfile(FullPathFicIni)
     
    		'récupération d'un tableau de x lignes totalité du fichier
    		ContenuLgn = split(FicIni.ReadAll,vbnewline)
    		'Récupère le nombre de ligne dans un fichier
    		nbLgn = FicIni.Line -1
    		'Fermeture du fichier ini
    		FicIni.close
     
    			for t = 1 to traitementIni(nbreLgn)
     
    			'lectureSection = ContenuLgn(t)
    			dossier = replace(ContenuLgn(t),right(ContenuLgn(t),3),"")
     
    			'vérifie si le repetoire existe
    			if oFs.FolderExists("P:\Scripts\band raz\Reception\" & dossier) Then
     
    				'définie le répertoire complet dans une variable
    				resultDossier = "P:\Scripts\band raz\Reception\" & dossier
     
    				Set oFiles = oFs.GetFolder(resultDossier).Files
     
    					'Pour chaque fichier dans le répertoire
    					For Each oFiles In oFiles
     
    						'Définie le nom de chaques fichiers dans une variable
    						fichier = oFiles.name
     
    						'Vérifie que le fichier soit bien dans le dossier
    						if oFs.FileExists(resultDossier & "\" & fichier) then
     
    							'Le fichier étant dans le dossier alors il définie le type de langue
    							resultLang = replace(ContenuLgn(t),left(ContenuLgn(t),5),"")
     
    							'msgbox resultLang
     
    							cpt = 0
     
    							'pour chaque fichiers on va chercher la section correspondante
    							do while flag = 0
     
    								debSection = left(ContenuLgn(cpt),4)
    								finSection = left(ContenuLgn(cpt),5)
     
    								if debSection = "[" & resultLang & "]" then
     
     
    									'msgbox ContenuLgn(cpt)
    									msgbox debSection
    								end if
     
    								if finSection = "[/" & resultLang & "]" then
     
    									msgbox finSection
     
    									exit do
     
    								end if
     
     
     
    								'end if	
     
    								'if finSection = "[/" & resultLang & "]" then
     
    									'msgbox finSection
     
    									'exit do
    									'
    								'end if
     
    							if cpt = nbLgn then
     
    								flag = 1
     
    							end if
     
    							cpt = cpt + 1
     
    							loop
     
    						end if	
     
     
     
    					next
     
     
     
     
    				Else
     
    					msgbox "le répertoire " & dossier & " n'existe pas"
     
    			End if
     
    			next
     
    	Else
     
    		Msgbox "Le dossier (.ini) n'a pas été trouvé"
    		WScript.Quit
     
    	End If	
     
     
    End Function
     
    Function traitementIni(nbreLgn)
     
    	Dim oFs, FicIni
    	Dim strDebug
     
    	Set oFs = CreateObject("Scripting.FileSystemObject")
     
    	FullPathFicIni = "P:\Scripts\band raz\traitement.ini"
     
    		Set FicIni = oFs.opentextfile(FullPathFicIni)
     
    		'récupération d'un tableau de x lignes totalité du fichier
    		ContenuLgn = split(FicIni.ReadAll,vbnewline)
    		'Récupère le nombre de ligne dans un fichier
    		nbLgn = FicIni.Line -1
    		'Fermeture du fichier ini
    		FicIni.close
     
    		'lecture du tableau contenant le contenu du fichier traitement.ini			
    		for t = 0 to nbLgn
     
    			'sectionDeb = Left(ContenuLgn(t), 9)
    			sectionFin = Left(ContenuLgn(t),10)
     
    			nbre = nbre + 1
     
    			'tant que la section [/Langage] n'est pas passé, on increment nbre de 1
    			if sectionFin = "[/Langage]" Then
     
    				nbreLgn = nbre - 2
     
    				exit for
     
    			end if
     
    		next	
     
    	'retourne le resultat de la fonction
    	traitementIni = nbreLgn
     
    End Function
     
    numKids(debTraitement)
    'typeLang(g)
    'test()
    Donc il me remonte bien la langue de chaque fichier en fonction du fichier .ini

    Maintenant j'aimerais dire que si le debut de section est [FR], tu liste les lignes jusqu'à ce que ce soit [/FR]

    Ma boucle DO WHILE me permet d'afficher les balises [FR] et [/FR] pour chaque fichiers et j'aimerais refaire une boucle dedans pour ce traitement... Des idés ?

    Voici ma boucle do while au milieu du code plus haut :

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    do while flag = 0
     
    								debSection = left(ContenuLgn(cpt),4)
    								finSection = left(ContenuLgn(cpt),5)
     
    								if debSection = "[" & resultLang & "]" then
     
     
    									'msgbox ContenuLgn(cpt)
    									msgbox debSection
    								end if
     
    								if finSection = "[/" & resultLang & "]" then
     
    									msgbox finSection
     
    									exit do
     
    								end if
     
     
     
    								'end if	
     
    								'if finSection = "[/" & resultLang & "]" then
     
    									'msgbox finSection
     
    									'exit do
    									'
    								'end if
     
    							if cpt = nbLgn then
     
    								flag = 1
     
    							end if
     
    							cpt = cpt + 1
     
    							loop

    Merci beaucoup pour votre aide

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/09/2007, 16h58
  2. problème de passage de valeur dans une fonction
    Par jeremie74 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 21/09/2007, 18h30
  3. Récupérer les valeurs dans une fonction
    Par matmay dans le forum MATLAB
    Réponses: 3
    Dernier message: 04/05/2007, 16h50
  4. Récupérer valeur dans une BD
    Par Matmal11 dans le forum Linux
    Réponses: 6
    Dernier message: 05/09/2006, 16h28
  5. fonction récupérant des valeurs dans une fonction popup...
    Par petitsims dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/01/2005, 14h51

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