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

Macros et VBA Excel Discussion :

[VBA Excel]Tester caractère par caractères jusque quand on trouve un minuscule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut [VBA Excel]Tester caractère par caractères jusque quand on trouve un minuscule
    Bonjour tout le monde,

    J'ai une feuille Excel dont une des collones reprend des noms et des prénoms.

    Exemple :

    DUPONT Jacques

    J'aimerais extraire le prénom et le copier dans une collone à côté.

    Pour ce faire, je pense qu'il faut tester chaque caractère de la cellule, tant qu'on ne rencontre pas une minuscule, on avance d'un caractère, quand on tombe sur une minuscule, on recule d'un caractère, on sélectionne à partir de la position jusqu'à la fin du mot, on le coupe et on le copie à côté.

    Voilà en gros pour l'algorithme.

    Par contre, je ne sais pas du tout comment faire pour vérifier si un caractère est une minuscule et surtout d'aller au caractère suivant.

    Pour copier à partir de la position jusqu'à la fin du mot je ne sais pas non plus.

    J'espère que vous pourrez m'aider.

    Merci d'avance.

    beegees

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ce serai pas plus simple en séparant par espace... partie de gauche Nom, partie de droite 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
     
    Sub montest()
    Dim st As String
    Dim tb() As String
    st = "DUPONT Jacques"
     tb = Split(st, " ")
    If UBound(tb) = 1 Then
      MsgBox tb(0)
      MsgBox tb(1)
    Else
     MsgBox "Incorrect :" & st
    End If
    End Sub

  3. #3
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Salut bbil,

    Merci pour ta réponse.

    J'ai testé ta procédure, ça fonctionne mais malheureusement il y'a un hic.

    Il y'a dans ma liste des noms composé comme BAR LIASS Mokadam (c'est un exemple inventé).

    Là, ça ne fonctionne pas.

    Par contre, c'est une bonne idée de partir de la fin du prénom.

    Pourrais-tu me dire à quoi correspond les () dans Merci pour ton aide.

    beegees

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    texte = "TRUC MACHIN Chouette"
    minuscule = "abcdefghijklmnopqrstuvwxyzàäâéèëêïîöôùüûÿ"
    For i = 1 To Len(texte)
        If InStr(1, minuscule, Mid(texte, i, 1), vbBinaryCompare) > 0 Then
            MsgBox i
            Exit For
        End If
    Next i
    Tu peux également vérifier le code Asc de la lettre.

  5. #5
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Salut,

    J'obtiens le début du prénom et avec ça je peux couper ?

    Si c'est ça, c'est une bonne idée.

    Tu confirmes stp ?

    Merci
    beegees

  6. #6
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Re bbil,

    J'espère ne pas exagérer mias quand je teste sur un nom composé, j'obtiens une fenêtre avec le nom + prénom entier et ensuite une autre fenêtre blanche se lance.

    Qu'en penses-tu ?

    beegees

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    tb() .. c'est pour déclarer un tableau, dont la taille n'est pas connu au départ...
    split te permet d'éclater ta chaine dans un tableau .. en utilisant (ici) l'espace comme séparateur
    Ubound te permet de connaitre le dernier élément du tableau

    on peu modifier mon code précédent :
    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
     
    Sub montest()
    Dim st As String
    Dim tb() As String
    Dim i As Integer
    Dim stNom As String
    st = "BAR LIASS Mokadam"
     tb = Split(st, " ")
    If UBound(tb) >= 1 Then
     For i = 0 To UBound(tb) - 1
      stNom = stNom & tb(i) & " "
     Next
       MsgBox stNom
      MsgBox tb(UBound(tb))
    Else
     MsgBox "Incorrect :" & st
    End If
    End Sub
    sinon pour ton algorithme initial voir les fonctions de chaines dans

    Manipuler les chaînes de caractères

    InStrRev , par exemple... (
    Mid
    Char


Discussions similaires

  1. [VBA Excel] - Exit Do, si caractère tapé (on change..)
    Par pressorus dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/11/2008, 16h27
  2. [Débutant] Lecture caractère par caractère
    Par boober31 dans le forum Débuter
    Réponses: 10
    Dernier message: 28/09/2007, 14h52
  3. [VBA-Excel]Tester le format du contenu d'une textbox
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/11/2006, 15h47
  4. Réponses: 10
    Dernier message: 19/06/2006, 19h04
  5. [VBA][Excel] Tester l'existence d'une feuille
    Par titflocon dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/11/2005, 14h49

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