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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 17
    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 Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    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.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 17
    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

  4. #4
    Membre éclairé
    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
    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

  5. #5
    Expert confirmé

    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 : 56
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    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' !

  6. #6
    Expert confirmé

    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 : 56
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    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]

  7. #7
    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
    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à

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

Discussions similaires

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

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