Retranscription PHP / VBScript

♦Umay♦ -  
 ◆Umay◆ -
Bonjour,

J'ai un code php que j'aimerais retranscrire en VBScript mais j'ai vraiment du mal. Le but est de à partir de la casse d'un nom et d'un prenom, le script sache où mettre le prenom et le nom où il faut. En php, j'ai pris une variable $name pour exemple, en VBScript, il lira un fichier contenant des noms ligne par ligne.

En VBScript, j'ai de erreur de type ')' attendu ; et je n'arrive vraiment pas à les résoudre.

Voici le php :
    $temp = explode(" ", $name, 2);
if (strcmp($temp[0], strtoupper($temp[0])) === 0)
{
$Nom= $temp[0];
$Prenom = $temp[1];
}
else
{
$Nom = $temp[1];
$Prenom = $temp[0];
}

?>


Et voici un morceau du VBScript que j'ai tenté de faire :
   Dim name 'as String
temp = split(" ", name, 2)
Dim Nom 'as String
Dim Prenom 'as String

Do Until objFile.AtEndofStream

if (StrComp(temp[0], Ucase(temp[0]) = 0) Then
Nom = temp[0];
Prenom= temp[1];

else
Nom= temp[1];
Prenom= temp[0];

End If

Strline=objFile.ReadLine

osn=Nom

oGivenName=Prenom

oUname = Left(oGivenName,1) & "." & osn

2 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Plusieurs erreurs.... l'utilisation de [] au lieu de () pour les array en vbscript...
    Les points virgules en fin de ligne....
    Les parenthèses en trop et/ou mal placées ....
    L'ordre des arguments incorect dans l'appel de la fonction split ...
    etc..etc...

    Bref,
    voici un début de correction :
    Dim name 'as String
    
    name = "unprenom UNNOM"
    
    temp = split(name," ", 2)
    Dim Nom 'as String
    Dim Prenom 'as String
    
    
    if StrComp(temp(0), Ucase(temp(0))) = 0 Then
    Nom = temp(0)
    Prenom= temp(1)
    
    else
    Nom= temp(1)
    Prenom= temp(0)
    
    End If
    

    Je te laisse adapter le reste de ton code en t'appuyant sur ça
    0
  2. ♦Umay♦
     
    En effet les erreurs sont nombreuses.
    Le code fonctionne. Merci beaucoup ! En revanche, il prend en compte la variable name, et lorsque je l'enlève afin de lui demander de lire le fichier, il veut pas le ligne par ligne. Je redirige pourtant vers ce dernier
    Set objFile=objFSO.OpenTextFile("C:\Users\Administrateur\Desktop\Fichier.txt")

    /* Et je lui demande de lire ligne par ligne */
    Do Until objFile.AtEndofStream


    Un tout dernier petit coup de main ? Il me reste donc juste cela à faire et ce sera parfait. :)
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Montre le code complet....
      Le petit bout que tu montres ne me permet pas de me faire une idée de ton souci
      0
    2. ♦Umay♦
       
      provider="LDAP://"

      OU = "OU=UO,"

      domain = "DC=DOM, DC=FR"

      oClass = "User"

      oCN = "CN="


      ohomeDrive="E:"
      ohomeDirectory="\\DOM\UO\"


      oprofil="\\DOM\Profils\"
      odomain="DOM.fr"
      'oscript="OFCSCAN.BAT"



      Set objFSO=CreateObject("Scripting.FileSystemObject")
      Set objFile=objFSO.OpenTextFile("C:\Users\Administrateur\Desktop\Fichier.txt")



      Dim name 'as String

      name = "Unprenom UNNOM"
      temp = split(name," ", 2)
      Dim Nom 'as String
      Dim Prenom 'as String

      Do Until objFile.AtEndofStream

      if StrComp(temp(0), Ucase(temp(0))) = 0 Then
      Nom = temp(0)
      Prenom= temp(1)

      else
      Nom= temp(1)
      Prenom= temp(0)

      End If

      Strline=objFile.ReadLine

      osn=Nom

      oGivenName=Prenom

      oUname = Left(oGivenName,1) & "." & osn


      Set objDomain = GetObject("LDAP://OU=UO,DC=DOM,DC=FR")
      Set objUser = objDomain.Create(oClass, oCN & oGivenName & " " & osn)

      'Affectation à l'objet utilisateur
      objUser.Put "sAMAccountName", oUname
      objUser.Put "UserPrincipalName", oUname & "@" & odomain
      objUser.Put "sn", osn
      objUser.Put "GivenName", oGivenName
      objUser.Put "displayName", oGivenName & " " & osn
      objUser.Put "description", "DOM"

      'Validation des données
      objUser.SetInfo


      objUser.Put "profilePath", oprofil & oUname
      'objUser.Put "scriptPath", oscript

      'Validation des données
      objUser.SetInfo

      'Set groupe = GetObject(provider & "CN=GpeUO,OU=UO,DC=DOM,DC=FR")
      'groupe.Add (provider & oCN & oGivenName & " " & osn & ",OU=UO,DC=DOM,DC=FR")


      objUser.AccountDisabled=false

      loop

      WScript.Echo("Ajouts terminés")
      objFile.Close


      Le code fait-il également les noms avec espace (Prenom LE NOM) ? Il s'agit d'un détail, pas forcément très important.
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > ♦Umay♦
         
        ... tu copies/colles dans chercher à comprendre !
        Normal qu'il t'affiche Unprenom UNNOM
        Sachant que tu as laissé :
        
        Dim name 'as String
        
        name = "Unprenom UNNOM"
        temp = split(name," ", 2)
        


        Ne penses tu pas que tu devrais (enfin je suppose...) récupérer le "name" depuis ton fichier ? Et donc .. placer ce code DANS TA BOUCLE et non AVANT comme c'est le cas actuellement ??
        Je dirais même ... après le
        Strline=objFile.ReadLine


        Au passage .. je serais toi.. je regarderai ce que contient la variable Strline

        Car là .. d'où viennent ces variables : 'Nom Prenom et oGivenName ???
        osn=Nom
        oGivenName=Prenom
        oUname = Left(oGivenName,1) & "." & osn
        
        0
    3. ◆Umay◆
       
      Oui je l'avais laissé ici. Mais en l'enlevant, c'est là qu'il y avait erreur.

      Nom, Prenom c'est les variables qui ont été affectées dans le if. oGivenName c'est l'objet du prenom dans un serveur windows non ?

      Je revérifierai donc demain. Merci pour votre aide
      0