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 :

Nombre de caractères limité pour la fonction "Split" ? [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Par défaut Nombre de caractères limité pour la fonction "Split" ?
    bonjour a tous,

    suite à mon post d'hier ma fonction split fonctionne à merveille.

    Mais ce matin, en voulant analyser mon nouveau rapport, malheur...je reçois une erreur indiquant que je suis en dehors de l'index de mon tableau, pourtant tout mes "champs" son là.

    D'où ma question : le nombre de caractères pouvant être stockés dans une "case" du tableau renvoyé par le split, est-il limité? car sur 350 lignes toute marche sauf 3 qui ont un commentaire relativement long.

    En espérant m'être fait comprendre, et dans l'attente d'une réponse positive,

    Merci par avance,
    Amicalement,
    Vincent.

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Je en sais pas ce que tu appelle relativement long j'ai fait des test jusqu'à 1000 caractère dans aucun problème.

    En dehors de l'index signifie que quand tu fait tableau(i) i est trop grand
    tableau commence a 0
    Pour connaitre la dimension de tableau fait ubound(tableau)

    exemple d'utilisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for i = 0 to UBound(tableau)
    msgbox tableau(i)
    next i

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Par défaut
    je commence a recuperer els donné dans mon tableau a l'indice 0.

    La ligne sur laquel mon split "bug" contient une chaine de caractere avec 1024caractere.
    je vais essayer le ubound tableau mais ej ne vois pas trop en quoi cela pourais m'aider.

    merci,

    Amicalement,
    Vincent.

    Edit : Ce que je trouve bizare, est que si j'utilise la fonction propre a excel "texte en colonne" cela marche, mais mon split ne marche pas...il bloque sur ma derniere valeur.

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Le ubound sert a ne pas dépasser les dimension de tableau dans la mesure ou si tableau contient 8 valeur ( de 0 a 7 ) tu n'aille pas demander la 9ème
    Visiblement j'arrive a avoir 1801 caractère donc ca ne doit pas venir de la

    Si le ubound ne fonctionne pas il faudrait que tu donne ton code
    la ligne qui cause l'erreur (avance en pas a pas si le debugage ne te la donne pas)
    et la valeur des variable utilisées dans la ligne au moment de l'erreur

  5. #5
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Par défaut
    Bonjour,

    voici commen se compose mais ligne que je veux splité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1,"2","3","4","5","6","7","8,1","9","10 ","11","12","13","14","15","16","17","18","19","20","21","22","mon commentaire de 1024 caractere.","24"
    Et voici le code avec mon Split :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Sub Split_Report()
    '---Makro erstelt von MEGEL Vincent am 29.06.2009---
     
        Dim a As Variant
    Max = Sheets("Feuille1").UsedRange.Rows.Count
     
     
     
    For l = 2 To Max    '--- compteur pour la boucle
     
        Sheets("Feuille1").Select
     
        If Cells(l, 1) = "" Or Cells(l, 1) = " " Then   '---si la cellule est vide. Ceci m'evite les erreurs       
        Else
            Sheets("Feuille1").Select
                a = split(Cells(l, 1).Text, ",""")  ' j'utilise le ," comme separateur, car j'ai des chiffres contenant des virgules qu'il ne faut pas splité
     
                For I = 0 To UBound(a)
                MsgBox a(I)
                Next I
            'On selectionne la bonne feuille
            Sheets("Feuille2").Select
            insertion dans les bonne cellule        Cells(l, 1) = a(0)  ' Cellule A,1...
            Cells(l, 2) = a(1)  ' Cellule A,2 etc...
            Cells(l, 3) = a(2)  
            Cells(l, 4) = a(3)  
            Cells(l, 5) = a(4)
            Cells(l, 6) = a(5)
            Cells(l, 7) = a(6)
            Cells(l, 8) = a(7)
            Cells(l, 9) = a(8)
            Cells(l, 10) = a(9)
            Cells(l, 11) = a(10)
            Cells(l, 12) = a(11)
            Cells(l, 13) = a(12)
            Cells(l, 14) = a(13)
            Cells(l, 15) = a(14)
            Cells(l, 16) = a(15)
            Cells(l, 17) = a(16)
            Cells(l, 18) = a(17)
            Cells(l, 19) = a(18)
            Cells(l, 20) = a(19)
            Cells(l, 21) = a(20)
            Cells(l, 22) = a(21)
            Cells(l, 23) = a(22)
            Cells(l, 24) = a(23)
     
        End If
     
    Next l
     
    End Sub
    l'erruer lors du debogage vien sur la ligne

    mais pourtant avec mes autre ligne que je veux splité qui ont la meme syntaxe, mon split fonctionne a merveille.

    En esperant avoir etait clair,

    Merci d'avance,
    Amicalement,
    Vincent.

  6. #6
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 133
    Par défaut Caractères spéciaux
    Bonjour ,

    Attention aux caractères spéciaux contenus dans une chaine de caractère peuvent provoquer des comportements inattendus dans vba .

    Donc analyse la ligne qui bug contenant 1024 caracteres ..............

    Sinon il n'y a pas de limite pour la fonction split .



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

Discussions similaires

  1. Tags pour limiter le nombre de caractères
    Par DjChat dans le forum Django
    Réponses: 2
    Dernier message: 20/09/2010, 15h50
  2. Réponses: 2
    Dernier message: 29/09/2009, 10h07
  3. ShellExecute : nombre de caractères limité ?
    Par Invité dans le forum Débuter
    Réponses: 3
    Dernier message: 16/08/2008, 16h14

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