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 :

Compter le nombre de chaine de caractère d'une cellule séparé par","


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 17
    Points : 16
    Points
    16
    Par défaut Compter le nombre de chaine de caractère d'une cellule séparé par","
    Bonjour,

    J'ai une cellule qui contient un certain nombre de date séparé par des virgules ou -:

    B2
    12/10/1984,05/03/2006,15/06/2008

    Je voudrais dans la colonne F2, récupérer le nombre de date c'est à dire 3 dans ce cas.

    J'ai essayé la fonction split sans résultats.

    Merci de votre aide.

  2. #2
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,

    si, split fait partie de la solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dim tablo() as string
    dim ctr as integer
     
    tablo = split(tacellule, ",")
    ctr = ubound(tablo) + 1
    ctr est ce que tu cherches.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  3. #3
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Devrait faire l'affaire... non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Function NbChaine(sChaine as string) as long
        dim v as variant
        v=Split(sChaine,",")
        NbChaine=ubound(v)+1
    End Function
    [EDIT]Grilled ![/EDIT]

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Result = Ubound(Split("12/10/1984,05/03/2006,15/06/2008",","))+1
    Ce qui revient à dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For NoLig = 1 to derniereLigne
         Cells(NoLig, 6) = Ubound(Split(Cells(NoLig, 2),","))+1
    Next
    Pourquoi + 1 ? Parceque Split donne un tableau dont le premier indice est 0
    Bonne journée

    Edit - Complètement grillé sur ce coup là

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Godzestla Voir le message
    Bonjour,

    si, split fait partie de la solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dim tablo() as string
    dim ctr as integer
     
    tablo = split(tacellule, ",")
    ctr = ubound(tablo) + 1
    ctr est ce que tu cherches.
    Merci de ton aide et des autres, ca fonctionne

    je devais mal utiliser les fonctions split et ubound

  6. #6
    Membre actif
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Points : 246
    Points
    246
    Par défaut
    juste pour la forme et le pluralisme, je me permet de donenr une autre solution :
    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
     
    Function NombreDeDate(byref stMaCellule as string) as integer
    'fonction qui compte le nombre de "," dans la chaine de caractere stMaCelulle 
    dim iTailleDeMaChaine as integer
    dim iTailleDeMaChaineModifiee as integer 
     
     
    NombreDeDate=0
    if stMaCellule<>"" then
      iTailleDeMaChaine=len(stMaCellulle)
      iTailleDeMaChaineModifiee= len(replace(stMaCellule,",",""))
     
      NombreDeDate= 1+iTailleDeMaChaine-iTailleDeMaChaineModifiee
    end if
     
    end function

  7. #7
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    youhouuuuu !
    Wââââh !
    Voila un super sujet de défi flash :
    Quelle est la méthode la plus rapide pour obtenir le nombre de sous-chaines dans une chaine !


    Cool !
    Arkham ? Tu traines dans le coin ?
    T'es concerné là !


    [EDIT]
    Après test, le Ubound(Split(...)))
    renvoie ces temps pour 1000 itérations :
    1,578125
    1,57421875
    1,53125
    1,5625
    1,53125
    Alors que le Len(...) - Len(...) renvoie
    1,69921875
    1,6953125
    1,69921875
    1,69921875
    1,69140625

    Victoire pour le Ubound(Split(...))
    Bravo Ousk' !

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/12/2013, 19h10
  2. Réponses: 8
    Dernier message: 28/11/2012, 16h49
  3. Réponses: 3
    Dernier message: 27/07/2012, 12h25
  4. Réponses: 1
    Dernier message: 06/05/2007, 18h42
  5. conversion dun nombre en chaine de caractère?
    Par franco82 dans le forum C++
    Réponses: 8
    Dernier message: 30/11/2006, 20h05

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