Retranscription PHP / VBScript

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. Modérateur
    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
    1. 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. Modérateur
        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. 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
      3. Modérateur
        @♦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
      4. 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