Déplacer le déterminant à la fin de la phrase

Résolu
mierkool Messages postés 61 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 9 septembre 2009 - 17 mars 2008 à 19:39
mierkool Messages postés 61 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 9 septembre 2009 - 18 mars 2008 à 00:50
Bonjour,

je voudrais savoir comment faire pour dans une chaine de caractères, déplacer le déterminant du début de la phrase et le mettre à la fin de la phrase entre parathèse.

ex :

"LE DEVELOPPEMENT SOUS VB" => "DEVELOPPEMENT SOUS VB (LE)"

qui comprenne tous les déterminants : le la, l', mon, ton, son, ma, ta, sa, mes, tes, ses, cet, cette sauf un et une.

merci

11 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
17 mars 2008 à 23:46
Allez !

Une autre encore (pendant qu'on y est)

Private Sub Command1_Click()
 Dim titi As String, mesdet, I As Integer, mondet As String
 titi = "cette petit et le gros mangent le gateau"
 mesdet = Array("le", "la", "mon", "ton", "son", "ma", "ta", "sa", "mes", "tes", "ses", "cet", "cette")
 For I = 0 To UBound(mesdet)
   If LCase(titi) Like mesdet(I) & " *" Then
     mondet = mesdet(I)
     Exit For
   End If
 Next
 If mondet <> "" Then
   titi = Mid(titi, Len(mondet) + 1) & " " & mondet
 End If
 MsgBox Trim(titi)
End Sub

Et il y en a d'autres ...
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
17 mars 2008 à 20:11
Salut,

quelque chose comme ca :

Sub DeterminantEnFinDePhrase()
    Dim MaChaine As String, Determinant As String
    MaChaine = "le lundi de paque"
    Determinant = " (" & Left(MaChaine, InStr(1, MaChaine, " ") - 1) & ")"
    MaChaine = Replace(MaChaine, Left(MaChaine, InStr(1, MaChaine, " ") - 1), "") & Determinant
    MsgBox MaChaine
End Sub

A+
0
Lunikmarty Messages postés 55 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 17 avril 2008
17 mars 2008 à 20:18
Pour ton exemple, voila ce qui est celon moi la méthode la plus simple:

Private Sub Command1_Click()

    Dim elements() As String
    Dim i As Integer
   
    ' récupération des éléments délimité par un espace dans un tableau
    elements = Split(Text1.Text, " ", -1, 1)
   
    For i = 1 To UBound(elements)
        Label1.Caption = Label1.Caption & " " & elements(i)
    Next i
   
    'Ajout du déterminant à la fin entre parenthése
    Label1.Caption = Label1.Caption & " (" & elements(0) & ")"
   
End Sub
0
mierkool Messages postés 61 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 9 septembre 2009
17 mars 2008 à 21:07
ok merci

mais ça le fait pour n'importe quel mot qui se retrouve en premier, il faudrait que ça le fasse seulement pour les phrases ou il y a un determinant au debut...

merci encore
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lunikmarty Messages postés 55 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 17 avril 2008
17 mars 2008 à 22:20
Private Sub Command1_Click()

    Dim ListeDeterminant As String
    Dim MaChaine As String
    Dim Determinant() As String
    Dim PremierMot As String
    Dim i As Integer
   
    ' Récupération de la liste des déterminant dans un tableau
    ListeDeterminant = "le,la,mon,ton,son,ma,ta,sa,mes,tes,ses,cet,cette"
    Determinant = Split(ListeDeterminant, ",", -1, 1)

    MaChaine =LCase(Text1.Text)

    ' Test si le deuxiéme caractére est l'apostrophe
    If Mid(MaChaine, 2, 1) = "'" Then
        Label1.Caption = Replace(MaChaine, Left(MaChaine, InStr(1, MaChaine, "'")), "") & "(l')"
        Exit Sub
    End If

    PremierMot = Left(MaChaine, InStr(1, MaChaine, " ") - 1)

    For i = 0 To UBound(Determinant)
        If StrComp(Determinant(i), PremierMot) = 0 Then
            MaChaine = Replace(MaChaine, Left(MaChaine, InStr(1, MaChaine, " ") - 1), "") & " (" & Determinant(i) & ")"
            Exit For
        End If
    Next i
    
    Label1.Caption = MaChaine

End Sub
0
mierkool Messages postés 61 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 9 septembre 2009
17 mars 2008 à 23:01
ça marche sauf quand il y a deux foix le même déterminant et en plus le déterminant est remplacé par un espace, genre :
"le petit et le gros mangent le gateau" donne " petit et gros mangent gateau"
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
17 mars 2008 à 23:27
Bonsoir,

Private Sub Command1_Click()
 Dim titi As String, mesdet, I As Integer, mondet As String
 titi = "le petit et le gros mangent le gateau"
 mesdet = Array("le ", "la ", "mon ", "ton ", "son ", "ma ", "ta ", "sa ", "mes ", "tes ", "ses ", "cet ", "cette ")
 For I = 0 To UBound(mesdet)
   If LCase(Left(titi, Len(mesdet(I)))) = mesdet(I) Then
     mondet = mesdet(I)
     Exit For
   End If
 Next
 If mondet <> "" Then
   titi = Mid(titi, Len(mondet) + 1) & " " & mondet
 End If
 MsgBox Trim(titi)
End Sub
0
Lunikmarty Messages postés 55 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 17 avril 2008
17 mars 2008 à 23:43
Private Sub Command1_Click()

    Dim ListeDeterminant As String
    Dim MaChaine As String
    Dim Determinant() As String
    Dim PremierMot As String
    Dim i As Integer
    Dim position As Integer
   
    ' Récupération de la liste des déterminant dans un tableau
    ListeDeterminant = "le,la,mon,ton,son,ma,ta,sa,mes,tes,ses,cet,cette"
    Determinant = Split(ListeDeterminant, ",", -1, 1)

    MaChaine =LCase(Text1.Text)
    position = InStr(1, MaChaine, " ", 1)

    ' Test si le deuxiéme caractére est l'apostrophe
    If Mid(MaChaine, 2, 1) = "'" Then
        Label1.Caption = Mid(MaChaine, position + 1, Len(MaChaine) - position + 1) & "(l')"
        Exit Sub
    End If

    PremierMot = Left(MaChaine, InStr(1, MaChaine, " ") - 1)

    For i = 0 To UBound(Determinant)
        If StrComp(Determinant(i), PremierMot) = 0 Then
           
MaChaine = Mid(MaChaine, position + 1, Len(MaChaine) - position + 1) & " (" & Determinant(i) & ")"
            Exit For
        End If
    Next i
    
    Label1.Caption = MaChaine

End Sub

Voili, Voilou ! ça devrait etre bon maintenant
0
Lunikmarty Messages postés 55 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 17 avril 2008
17 mars 2008 à 23:59
Je ne peux que m'incliner devant l'ingéniosité de la (ou plutôt des ^^)  méthode de jmfmarques. Je te conseil donc de suivre ses conseils.... >> méthode est un peu trop longue. (ma)
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
18 mars 2008 à 00:27
Bonjour, Lunikmarty,
Tu as tort d'applaidir trop vite...

La voilà, la plus rapide

Private Sub Command4_Click()
   Dim titi As String, mesdet As String, pos As Integer
   titi = "Le petit et le gros mangent le gateau"
   mesdet = "le la les mon ton son ma ta sa mes tes ses cet cette ces "
   pos = InStr(titi, " ")
   If InStr(mesdet, LCase(Left(titi, pos))) Then
     titi = Mid(titi, pos + 1) & " " & LCase(Left(titi, pos - 1))
   End If
   MsgBox Trim(titi)
End Sub
0
mierkool Messages postés 61 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 9 septembre 2009
18 mars 2008 à 00:50
encore merci bcp
0
Rejoignez-nous