IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Renvoyer la position de la première minuscule dans une cellule


Sujet :

Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 056
    Points : 174
    Points
    174
    Par défaut Renvoyer la position de la première minuscule dans une cellule
    Bonjour,
    Est-il possible de renvoyer la position de la première minuscule d'une cellule?

    NOM COMPOSE Prénom

    Je cherche à scinder une colonne en séparant NOM et Prénom mais il y a des noms composés dans la colonne, je pense donc isoler la position de la première minuscule, toujours deuxième lettre du prénom, avec et renvoyer la chaîne de caractères qui suit (en n'oubliant pas"-1")...) avec .

    Bonne idée?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution possible avec cette fonction. L'idée est de tester le code Ascii de chaque caractère entre 97 et 122 (codes des minuscules).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Function ChercherLePrenom(ByVal ChaineATraiter As String) As String
     
    Dim I As Integer
    Dim J As Integer
     
        Application.Volatile
     
        ChercherLePrenom = ""
        For I = 1 To Len(ChaineATraiter)
            For J = 97 To 122
                If Mid(ChaineATraiter, I, 1) = Chr(J) And I > 1 Then
                   ChercherLePrenom = Mid(ChaineATraiter, I - 1)
                   Exit Function
                End If
            Next J
        Next I
     
    End Function
    Cordialement.

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 056
    Points : 174
    Points
    174
    Par défaut
    Je rentre la fonction dans un module?

    Comment j'indique la colonne concernée (A) en l’occurrence?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Kestion100 Voir le message
    Je rentre la fonction dans un module?
    Oui

    Comment j'indique la colonne concernée (A) en l’occurrence?
    La fonction s'utilise comme toutes les autres fonctions Excel. Il suffit de lui dire quelle est la donnée à traiter.

    Exemple si le traitement est une boucle For each Next

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub Traitement()
     
    Dim Cellule As Range
    Dim AireATraiter As Range
     
        Set AireATraiter = ActiveSheet.Range("A1:A100")
        For Each Cellule In AireATraiter
            Cellule.Offset(0, 1) = ChercherLePrenom(Cellule)
        Next Cellule
        Set AireATraiter = Nothing
     
    End Sub
    Cordialement.

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 056
    Points : 174
    Points
    174
    Par défaut
    Génial!!!!!

    En rentrant dans la cellule

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 056
    Points : 174
    Points
    174
    Par défaut
    Et pour renvoyer la chaîne de caractères antérieurs, pour renvoyer le nom composé, j'adapte entre 65 et 90 mais le code me renvoie le nom et le prénom:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Function ChercherLeNOM(ByVal ChaineATraiter As String) As String
     
    Dim I As Integer
    Dim J As Integer
     
        Application.Volatile
     
        ChercherLeNOM = ""
        For I = 1 To Len(ChaineATraiter)
            For J = 65 To 90
                If Mid(ChaineATraiter, I, 1) = Chr(J) And I > 1 Then
                   ChercherLeNOM = Mid(ChaineATraiter, I - 1)
                   Exit Function
                End If
            Next J
        Next I
     
    End Function
    J'ai raté un pas

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 056
    Points : 174
    Points
    174
    Par défaut
    Il me faudrait trouver la dernière majuscule - 2 et prendre le texte à gauche mais j'avoue ne pas assez bien saisir le code pour adapter

  8. #8
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Function ChercherLeNom(ByVal ChaineATraiter As String) As String
     
    Dim I As Integer
    Dim J As Integer
     
        Application.Volatile
     
        ChercherLeNom = ""
        For I = 1 To Len(ChaineATraiter)
            For J = 97 To 122
                If Mid(ChaineATraiter, I, 1) = Chr(J) And I > 1 Then
                   ChercherLeNom = Trim(Mid(ChaineATraiter, 1, I - 2))
                   Exit Function
                End If
            Next J
        Next I
     
    End Function
     
     
    Sub Traitement()
     
    Dim Cellule As Range
    Dim AireATraiter As Range
     
        Set AireATraiter = ActiveSheet.Range("A1:A100")
        For Each Cellule In AireATraiter
            Cellule.Offset(0, 1) = ChercherLeNom(Cellule)
            Cellule.Offset(0, 2) = ChercherLePrenom(Cellule)
     
        Next Cellule
        Set AireATraiter = Nothing
     
    End Sub
    Cordialement.

  9. #9
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    L'idée est de tester le code Ascii de chaque caractère entre 97 et 122 (codes des minuscules).
    Les minuscules pouvant être accentuées, je conseillerai d'aller jusqu'à 164 (en espérant qu'il n'y ait pas de prénoms turcs, vietnamiens ou autres langues utilisant l'alphabet latin avec des accentuations inhabituelles de voyelles, voir même de consonnes).

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Bien vu.

    Cordialement.

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 056
    Points : 174
    Points
    174
    Par défaut
    Bien vu pour les accents, dans ce cas la il n'y en a pas, pareil pour les noms en caractères non latin.


    MERCI

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 056
    Points : 174
    Points
    174
    Par défaut
    Juste pour ne pas mourir idiot, tu peux en dire plus sur et ?
    La logique du code?

    Il cherche un caractère à un endroit? c'est bien ça?

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Kestion100 Voir le message
    Mid permet d'isoler une partie de la chaîne de caractères.

    Trim élimine les caractères blancs avant et après la chaîne de caractères.

    Pour en savoir plus, utilisez l'aide VBA. Touche ? dans le menu de l'éditeur VBA.

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Insertion de date de première modification dans une cellule
    Par richard_sraing dans le forum Excel
    Réponses: 2
    Dernier message: 08/01/2015, 11h23
  2. Réponses: 3
    Dernier message: 23/01/2012, 14h50
  3. Réponses: 1
    Dernier message: 15/05/2006, 15h49
  4. Rechercher minuscule dans une table
    Par pmonn dans le forum Access
    Réponses: 3
    Dernier message: 25/10/2004, 14h53
  5. Différence entre majuscule et minuscule dans une requête
    Par Asdorve dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/06/2004, 14h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo