[VBS] Concaténation variable [Résolu]

- - Dernière réponse : NHenry
Messages postés
14500
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
15 juillet 2019
- 31 janv. 2013 à 23:14
Bonjour ,

Une petite question toute simple mais je n'y arrive pas .

Voilà, j'ai une variable strBody (string
pour HTML) dont la valeur se trouve dans une boucle.
Je rentre x fois dans cette boucle et j'aimerai récupérer toutes les valeurs en les concaténant.

J'ai essayé
If ... Then ...
strBody = ...
End If
strBody = "
" & strBody


Mais sans résultat.

Un peu d'aide ?

Merci.

agaa162.
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
14500
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
15 juillet 2019
131
3
Merci
Bonjour,

A chaque tour de
Do Until Fichier.AtEndOfStream

Tu fais dans tes tests un :
strBody = "..."

Donc, tu RAZ à chaque fois la valeur, il faut que tu fasse aussi la concaténation à ces endroits.

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 131 internautes nous ont dit merci ce mois-ci

Commenter la réponse de NHenry
Messages postés
14500
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
15 juillet 2019
131
0
Merci
Bonjour,

Quel est vraiment le code ?
Pourquoi tu ne fais pas la concaténation partout ?

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Commenter la réponse de NHenry
0
Merci
Bonjour,

Qu'entends-tu par concaténation partout ?

If (qteXML > seuilConf) Then	

  strBody = ""
  strBody = strBody & ""
  strBody = strBody & "\"
strBody = strBody & \"----
Genzyme Lyon , \"
strBody = strBody & \"----
Alerte MES, \"
strBody = strBody & \"----
Écart(s) de stock detecte(s), \"
strBody = strBody & \"----
" & Now & ", \"
strBody = strBody & \"----
Matiere/Lot :,  " & codeMatiereXML & "/" & lotXML & "(" & descMatiere & ")" & ",  \"
strBody = strBody & \"----
Quantite ajustee :,  " & qteXML & unitMatiere & " (Seuil d'alerte : " & seuilConf & unitMatiere & "), \"
strBody = strBody & \"----
Quantite standard U.Stk :,  " & quantiteStd & unitMatiere & ", \"
strBody = strBody & \"----
Zone :,  " & locationXML & ", \"
  strBody = strBody & "
"
  strBody = strBody & ""
End If	
strBody = "
" & strBody

Commenter la réponse de agaa162
Messages postés
14500
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
15 juillet 2019
131
0
Merci
Bonjour,

Tu ne donnes qu'un test (un seul If), mais je pense que tu en a plusieurs et le pb viendrait du fait que au début de ton if tu RAZ strBody.

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Commenter la réponse de NHenry
0
Merci
Mon imbrication est longue et j'utilise strBody uniquement ici.
Mais si tu veux tout le code, je peux le mettre
Commenter la réponse de agaa162
0
Merci
Voici le code :
Set oFl = fso.GetFile(Path_ListeXML)
If (oFl.Size <> "0") Then
Do Until Fichier.AtEndOfStream
MsgBox("Parcours des fichiers non déjà scannés")
Fichier_Line = Fichier.ReadLine
xmlDoc.load(Dossier & Fichier_Line) 
Set oElement = xmlDoc.documentElement

' Si le fichier n'est pas vide
If Not oElement Is Nothing Then
Set XmlAttrib = oElement.getElementsByTagName("rmks")
'MsgBox("OK")
For Each x In XmlAttrib
'MsgBox("OK 2")
'-------------------------------------------------------------------------------------------------------------------------------
'RECHERCHE DE WEIGHT ADJ
If x.Text="WEIGHT ADJ" Then	
MsgBox("Le fichier " & Fichier_Line & " contient WEIGHT ADJ")
'-------------------------------------------------------------------------------------------------------------------------------
'RECHERCHE DES VALEURS CLÉS FICHIERS XML			
For Each inventory In xmlDoc.selectNodes("/soapenv:Envelope/soapenv:Body/receiveInventory/inventoryReceipt")

MsgBox("Récupération des valeurs du fichier XML")
'** Code de la Matière **
codeMatiereXML = inventory.selectSingleNode("ptPart").Text

'** Quantité XML **
quantiteXML = inventory.selectSingleNode("lotserialQty").Text
qXML = Replace(quantiteXML,".",",")

'** Zone **
locationXML =  inventory.selectSingleNode("location").Text
'MsgBox(locationXML)

'** Numéro de lot **
lotXML =  inventory.selectSingleNode("lotserial").Text
'--------------------------------------------------------------------------------------------------------------------------------
'RECHERCHE VALEURS MATIÈRE A PARTIR DU FICHIER DE CONFIGURATION

Set FileConfig = fso.OpenTextFile("P:\Detection Ajustement Stock\FichierConfiguration.txt",ForReading,True)
FileConfig_data = FileConfig.ReadAll
FileConfig.Close 
arrLines = Split(FileConfig_data,vbCrLf)

'** Recherche Seuil d'alerte **
Set a = New RegExp
a.Pattern = "seuil_" & codeMatiereXML
a.IgnoreCase = True 
a.Global = False 'Renvoyer seulement la première occurrence

For i = 0 To UBound(arrLines) 						
occurrence = a.Test(arrLines(i))

If (occurrence = True) Then
tab = Split(arrLines(i),"=")
seuilAjustement = tab(1)
sAjust = Replace(seuilAjustement,".",",")
seuilConf = Csng(sAjust)
qteXML = Csng(qXML)

'** Écart de stock **
If (qteXML > seuilConf) Then

MsgBox("Écart de stock dans le fichier " & Fichier_Line)

'** Récupération de l'intitulé matière **
tab1 = Split(arrLines(i+1),"=")
descM = tab1(1)
descMatiere = Replace(descM,".",",")

'** Récupération de la taille de l'unité de stock **
tab2 = Split(arrLines(i+2),"=")
qStd = tab2(1)
quantiteStd = Replace(qStd,".",",")

'** Récuperation unité de poids **
tab3 = Split(arrLines(i+3),"=")
unitMatiere = tab3(1)

'** Corps du mail **
strBody = ""
strBody = strBody & ""
strBody = strBody & "\"
strBody = strBody & \"----
Genzyme Lyon , \"
strBody = strBody & \"----
Alerte MES, \"
strBody = strBody & \"----
Écart(s) de stock detecte(s), \"
strBody = strBody & \"----
" & Now & ", \"
strBody = strBody & \"----
Matiere/Lot :,  " & codeMatiereXML & "/" & lotXML & "(" & descMatiere & ")" & ",  \"
strBody = strBody & \"----
Quantite ajustee :,  " & qteXML & unitMatiere & " (Seuil d'alerte : " & seuilConf & unitMatiere & "), \"
strBody = strBody & \"----
Quantite standard U.Stk :,  " & quantiteStd & unitMatiere & ", \"
strBody = strBody & \"----
Zone :,  " & locationXML & ", \"
strBody = strBody & "
"
strBody = strBody & ""

'** Appel fonction Mail **
Call SendMail("kevin.moine@genzyme.com", strBody, "Rapport Script")
MsgBox("Mail envoyé")

'** HISTORISATION => Écriture dans fichier Log.csv **
Set corps = fso.OpenTextFile("P:\Detection Ajustement Stock\Log.csv",ForAppending)
Message = Fichier_Line & ";" & codeMatiereXML & ";" & lotXML & ";" & descMatiere & ";" & qteXML & ";" & locationXML
corps.WriteLine Message 
corps.Close

Else 
MsgBox("Aucun nouveau écart de stock détecté. Base à jour")
End If	
    Else

'** Corps du mail **
strBody = ""
strBody = strBody & ""
strBody = strBody & "\"
strBody = strBody & \"----
Genzyme Lyon , \"
strBody = strBody & \"----
Alerte MES, \"
strBody = strBody & \"----
Écart(s) de stock detecte(s), \"
strBody = strBody & \"----
" & Now & ", \"
strBody = strBody & \"----
Problème,  Matiere non définie dans les valeurs d'ajustement : " & codeMatiereXML & ",  \"
strBody = strBody & "
"
strBody = strBody & ""

'** Appel fonction Mail **
Call SendMail("kevin.moine@genzyme.com", strBody, "Rapport Script")
MsgBox("Mail envoyé")
End If
Next

Next

End If

Next

End If

Loop
Else
MsgBox("Tous les fichiers ont déjà été traités précedemment")
End If
'strBody = "
" & strBody
Commenter la réponse de agaa162
Commenter la réponse de agaa162