Ouistyty
Messages postés7Date d'inscriptionmercredi 3 décembre 2003StatutMembreDernière intervention 9 février 2010
-
2 févr. 2005 à 19:16
Ouistyty
Messages postés7Date d'inscriptionmercredi 3 décembre 2003StatutMembreDernière intervention 9 février 2010
-
3 févr. 2005 à 17:58
Bonjour,
J'ai un fichier texte qui contient un liste ne nom de ce genre :
...........
Description ; NOMDEFAMILLE COMOPSE PRENOM ; PNOMDEFAMILLE
Description ; NOMDEFAMILLE PRENOM ; PNOMDEFAMILLE
Description ; NOM DE FAMILLE PRENOM ; PNOMDEFAMILLE
Description ; NOM DE FAMILLE PRENOM ; PNOMDEFAMILLE
Description ; NOM DE FAMILLE PRENOM ; PNOMDEFAMILLE
.......
Je voudrais isolé en deux partie ces chaines de caractères à partir du dernier espace.
Var0 = Description
Var2 = Username
Var1a = NOM DE FAMILLE
Var1b = PRENOM
Je suis en mesure de réqupérer chaques lignes du fichier, de séparer au point virgule mais le traitement à affliger a ma Var1 pour la séparer aux espaces (pas toujours du meme nombre) m'est inconnu.
Voila ou j'en suis :
<HR>
Const ForReading = 1
Set oFSO = CreateObject("scripting.filesystemobject")
Set oTF = oFSO.OpenTextFile(FichierSource,ForReading,True) 'can be local or unc path
Do While oTF.AtEndOfStream <> True
sLine = oTF.ReadLine
aLine = split(sline, ";",-1,1)
Descript = Trim(aLine(0))
NomComplet = Trim(aLine(1))
UserName = Trim(aLine(2))
FonctionNom NomComplet
.....
<HR>
Je pensais aller sur quelques chose du genre...
mrdep1978
Messages postés402Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention 7 juin 20097 2 févr. 2005 à 22:09
Et voila ta procédure FonctionNom
Public Sub FonctionNom(a_NomComplet As String, a_Nom As String, a_Prenom As String)
Dim li_Pos As Integer
'Renvoie la position du premier espace en partant de la fin
li_Pos = InStrRev(a_NomComplet, " ")
If li_Pos > 0 Then
a_Nom = Left(a_NomComplet, li_Pos)
a_Prenom = Right(a_NomComplet, Len(a_NomComplet) - li_Pos)
Else
a_Nom = a_NomComplet
a_Prenom = ""
End If
End Sub
Public Sub test()
Dim a As String
Dim b As String, c As String
a = "toto tata tutu"
Call FonctionNom(a, b, c)
Debug.Print "Nom : " & b
Debug.Print "Prenom : " & c
Ouistyty
Messages postés7Date d'inscriptionmercredi 3 décembre 2003StatutMembreDernière intervention 9 février 2010 3 févr. 2005 à 17:58
Wouais ! Super !
C'est exactement ca :) Ca fontionne nickel.
Merci !
J'ai ajouté une fonction pour s'assurer que le prénom est avec la premiere lettre en majuscule et le reste en minuscule.
Ca donne ca...
<HR>
Function CapitalizeValue(sFullName)
Dim fCapitalizeNextLetter
Dim sNewName
Dim sChar
sFullName = lCase(Trim(sFullName)) if sFullName "" then CapitalizeValue sFullName
fCapitalizeNextLetter = true
For i=1 to Len(sFullName)
sChar = Mid(sFullName,i,1)
If (fCapitalizeNextLetter = True) Then
If IsLetter(sChar) = True Then
sChar = UCase(sChar)
fCapitalizeNextLetter = false
else
fCapitalizeNextLetter = true
end if
else
if IsLetter(sChar) = false then
fCapitalizeNextLetter = true
end if
end if
SNewName = SNewName & SChar
Next
CapitalizeValue = sNewName
End Function
function IsLetter(sChar)
fRet = false
nASCII = ASC(sChar)
if ((nASCII >=65) and (nASCII <=90)) then fRet = true ' Upper case letters
if ((nASCII >=97) and (nASCII <=122)) then fRet = true ' Lower case letters
IsLetter = fRet
End function
|
|
|
Sub FonctionNom(a_NomComplet, a_Nom, a_Prenom)
Dim Li_Pos
'Renvoie la position du premier espace en partant de la fin
Li_Pos = InStrRev(a_NomComplet, " ")
If li_Pos > 0 Then
a_Nom = Left(a_NomComplet, li_Pos)
a_Prenom = Right(a_NomComplet, Len(a_NomComplet) - Li_Pos)
Else
a_Nom = a_NomComplet
a_Prenom = ""
End If
FName = A_Prenom
End Sub