Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[Résolu] Savoir si un nom est masculin ou féminin

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Lone-wolf

XLDnaute Barbatruc
Bonsoir à tous,

dans la pièce jointe, j'essaie d'afficher dans une cellule "Nom masculin" ou féminin par rapport aux nom inscrits en feuille 2.

Au départ, j'ai codé comme ceci:

Code:
Private Sub Worksheet_Change(ByVal c As Range)
If Intersect(c, Range("b4")) Is Nothing Then Exit Sub

On Error Resume Next

If Left(c.Value, 2) = "un" Or Left(c.Value, 2) = "le" Then Range("b2") = "Nom masculin"
If Left(c.Value, 3) = "une" Or Left(c.Value, 2) = "la" Then Range("b2") = "Nom féminin"

With Range("b2")
.Font.Size = 13
.Font.FontStyle = "Bold Italic"
.HorizontalAlignment = xlCenter
End With
If Range("b4") = "" Then Range("b2").ClearContents
End Sub

Private Sub Worksheet_SelectionChange(ByVal c As Range)
Application.Goto Range("b4")
End Sub

Le problème était que si j'inscrivais "une tigre" par exemple, bien entendu j'avais tout faux. Maintenant, j'y ai inclu FIND et je narrive pas à trouver la syintaxte exacte.


Merci pour votre aide.



A+ 😎
 

Pièces jointes

Dernière édition:
Re : [Résolu] Savoir si un nom est masculin ou féminin

Bonsoir à tous,

Dans le même ordre d'idée, une version v3 munie d'une recherche dichotomique d'un mot dans le lexique. Le lexique est trié à chaque ouverture de fichier et à chaque désactivation de la feuille contenant le lexique. L'option "Option Compare Text" est indispensable dans module1.
VB:
Function Recherche_Dichotomique(aTrouver)
Dim indH As Long, indB As Long, IndM As Long, T
With Sheets("Lexique3.80")
   indB = 2
   indH = .Range("A" & Rows.Count).End(xlUp).Row
   Do
      IndM = (indH + indB) / 2: T = .Range("A" & IndM).Value
      If aTrouver > T Then indB = IndM + 1 Else indH = IndM - 1
   Loop Until (aTrouver = T) Or (indB > indH)
   If aTrouver = T Then
      Recherche_Dichotomique = .Range("B" & IndM).Value
   Else
      Recherche_Dichotomique = -1
   End If
End With
End Function
 

Pièces jointes

Dernière édition:
Re : [Résolu] Savoir si un nom est masculin ou féminin

Bonjour mapomme,

est-ce que tu pourrais modifier le code afin d'obtenir ce résultat en B2 juste pour des et les:

n.m. pluriel - n.f. pluriel

EDIT: j'ai trouvé cette solution (a modifier peut-être), voir PJ personnalisée.

Code:
 VraiGenre = xTrouve.Offset(, 1).Value
   Select Case GenreArticle
      Case ""           'l'utilisateur n'avait rentré aucun article
        GenreMot = IIf(VraiGenre = "", "m/f", "n. " & VraiGenre & ".")
      Case "f", "m"     'l'utilisateur avait rentré un article sexué
        If GenreArticle = VraiGenre Or VraiGenre = "" Then
            GenreMot = IIf(VraiGenre = "", "m/f", "n. " & VraiGenre & ".")
         Else
            GenreMot = VraiGenre & vbLf & " (Art. saisi erroné)"
         End If
      Case "?"          'l'utilisateur avait rentré un article assexué
        GenreMot = IIf(VraiGenre = "", "m/f", "n. " & VraiGenre & ".")
   End Select
End If
  If Left(Range("c7").Value, 3) = "des" Or Left(Range("c7").Value, 3) = "les" Then _
  GenreMot = IIf(VraiGenre = "", "m/f", "n. " & VraiGenre & ". pluriel")
End Function

A+ 😎
 

Pièces jointes

Dernière édition:
Re : [Résolu] Savoir si un nom est masculin ou féminin

RE mapomme,

voici un bout de code proposé par Softmama ici, qui vas rechercher les mots sur dictionnaire.reverso.net au lieu d'avoir une feuille supplémentaire(LEXIQUE). Est-ce que ça te dirait de l'adapter à ton code?

Code:
'Recherche sur le web
page_Web_à_lire = "http://dictionnaire.reverso.net/francais-definition/" & Mot
internet = OuvreInternet("toto", 0, vbNullString, vbNullString, 0) 'ouvre Internet
URL = Ouvrepage(internet, page_Web_à_lire, vbNullString, _
    0, &H400000 Or &H4000000 Or &H80000000, 0) 'ouvre la page Web
'lecture du code de la page par paquet de 1024 caractères
txt = ""
nb_caractères_lus = 1
'Récupération du code source
Do While nb_caractères_lus > 0
'lit 1024 caractères et les copie dans texte_code
code_page URL, texte_code, 1024, nb_caractères_lus
 txt = txt & Left(texte_code, nb_caractères_lus)
Loop
fermeInternet URL 'ferme la page
fermeInternet internet 'ferme Internet


A+ 😎
 
Dernière édition:
Re : [Résolu] Savoir si un nom est masculin ou féminin

Hello mapomme,

encore un changement de ton code à ce niveau

Code:
'chercher le mot
VraiGenre = Recherche_Dichotomique(xmot)

If VraiGenre = -1 Then
   'Mot non trouvé => Erreur
   GenreMot = "mot inconnu"
   Exit Function
Else
   'le mot a été trouvé - vérif du genre trouvé et du genre saisi
    Select Case GenreArticle
      Case ""           'l'utilisateur n'avait rentré aucun article
       GenreMot = IIf(VraiGenre = "", "n. m. - f.", "n. " & VraiGenre & ".")
      Case "f", "m"     'l'utilisateur avait rentré un article sexué
       If GenreArticle = VraiGenre Or VraiGenre = "" Then
            GenreMot = IIf(VraiGenre = "", "n. m. - f.", "n. " & VraiGenre & ".")
         Else
            GenreMot = "Orthographe erroné"
         End If
      Case "?"          'l'utilisateur avait rentré un article assexué
       GenreMot = IIf(VraiGenre = "", "m. - f.", "n. " & VraiGenre & ".")
   End Select
End If
   If Left(Range("c7").Value, 3) = "des" Or Left(Range("c7").Value, 3) = "les" Then _
  GenreMot = IIf(VraiGenre = "", "n.- m. f. pluriel", "n. " & VraiGenre & ". pluriel")


A+ 😎
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
15
Affichages
468
Réponses
5
Affichages
779
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…