Mâle ou femelle ? après on le spécifie

Bonjour à tous,

Malgré mes essais d’apporter une solution à mon problème, je vous avoue que je n’y arrive pas.

Grand MERCI à tous ceux qui vont consacrer un peu de leur temps pour apporter une solution à mon problème avec vba S.V.P.

Voici toutes les informations nécessaires pour solutionner le problème.

Toutes les cellules de ma colonne "A" se terminent soit avec la lettre "M" pour Mâle ou la lettre "F" pour "Femelle".

on parcourant les lignes de la colonne A, on peut déterminer le sexe des sujets.

1- On traite le cas où la cellule se termine par la lettre "F"

Si le dernier caractère de la 1ere cellule de la colonne "A" est "F", le sujet est une Femelle, alors on va à la cellule de la colonne "J" (de la même ligne), on vérifie si le mot "Femelle " se trouve au début de la cellule de la colonne "J", si c’est le cas, on passe à la ligne suivante, si ce n’est pas le cas, on l’ajoute au début de la cellule de la colonne "J".

2- On traite le cas où la cellule se termine par la lettre "M"

Si le dernier caractère de la 1ere cellule de la colonne "A" est "M", le sujet est une Mâle, alors on va à la cellule de la colonne "J" (de la même ligne), on vérifie que le mot "Mâle " se trouve au début de la cellule de la colonne "J", si c’est le cas, on passe à la ligne suivante, si ce n’est pas le cas, on l’ajoute au début de la cellule de la colonne "J".

D’avance merci pour vos propositions.

Salutations.

Bonjour,

Une proposition :

Sub GestionSexe()

Dim Lig As Long, LigFin As Long 'Déclaration des variables

With Sheets("Feuil1") 'Tout objet commençant par un "." s'y rapporte
    LigFin = .Range("A" & Rows.Count).End(xlUp).Row 'Détermine la dernière ligne
    For Lig = 2 To LigFin 'Boucle sur les lignes
        Select Case Right(.Range("A" & Lig), 1) 'Etudie dernier caractère de la cellule A
            Case "F"
                If Not .Range("J" & Lig) Like "Femelle*" Then .Range("J" & Lig) = "Femelle " & .Range("J" & Lig) 'Contrôle du contenu de J
            Case "M"
                If Not .Range("J" & Lig) Like "Mâle*" Then .Range("J" & Lig) = "Mâle " & .Range("J" & Lig) 'Contrôle du contenu de J
        End Select
    Next Lig
End With

End Sub

Bonjour Harzer, le forum,

Un essai....

Sub test()

Dim i As Long, dl As Long

Application.ScreenUpdating = False

 With Sheets("Feuil1")
  dl = .Range("A" & Rows.Count).End(xlUp).Row
   For i = 2 To dl
    If Right(.Cells(i, 1), 1) = "F" Then
     If Left(.Cells(i, 10), 7) <> "Femelle" Then
      .Cells(i, 10) = "Femelle " & .Cells(i, 10)
     End If
    End If

    If Right(.Cells(i, 1), 1) = "M" Then
     If Left(.Cells(i, 10), 4) <> "Mâle" Then
      .Cells(i, 10) = "Mâle " & .Cells(i, 10)
     End If
    End If
   Next i
 End With

 Application.ScreenUpdating = True

End Sub

Cordialement,

EDIT: Salut Pedro22 et Ausecour,

Bonjour,

Comme tu ne précisais pas si tu voulais traiter les cellules en colonne J qui étaient vides, je les traite aussi, le résultat est le suivant:

EDIT:

Bonjour Pedro22 et xorsankukai

Bonjour Pedro22, xorsankukai, Ausecour et le Forum,

J’ai testé vos propositions respectives et le résultat que je souhaite est au rendez-vous, quel plaisir, trois magnifiques propositions fonctionnelles.

En réponse à Ausecour :

Les cellules vides de la colonne J devaient être traitées aussi, merci de l’avoir signalé.

Grand merci à tous les trois pour vos propositions et aussi pour vos réponses rapides.

Amitiés à tous les trois.

Re,

de rien!

merci de ton côté d'avoir passé le sujet en résolu

Rechercher des sujets similaires à "male femelle specifie"