Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 30/06/2009, 14h03   #1
Invité de passage
 
Inscription : novembre 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 10
Points : 3
Points : 3
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.

Dernière modification par jacques_jean ; 30/06/2009 à 15h24. Motif: Titre
vincent-57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 15h03   #2
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
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 :
1
2
3
4
 
for i = 0 to UBound(tableau)
msgbox tableau(i)
next i
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 15h20   #3
Invité de passage
 
Inscription : novembre 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 10
Points : 3
Points : 3
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.
vincent-57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 15h30   #4
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
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
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 07h52   #5
Invité de passage
 
Inscription : novembre 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 10
Points : 3
Points : 3
Bonjour,

voici commen se compose mais ligne que je veux splité :
Code :
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 :
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.
vincent-57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 08h17   #6
Membre habitué
 
Développeur informatique
Inscription : janvier 2009
Messages : 124
Détails du profil
Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2009
Messages : 124
Points : 139
Points : 139
Envoyer un message via MSN à Lynx92260
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 .


Lynx92260 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 08h28   #7
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
Bonjour,
Ca serait pas plus simple de faire une boucle pour remplir les cellules?
Code :
1
2
3
for i = 0 to ubound(a)
        Cells(l, i+1) = a(i) 
next i
Car si la ligne pose le problème que tu signale c'est peut être que a n'a pas 23 dimension (pour une raison ou un autre)

Sinon comme le signale Lynx92260 est ce que tu as des caractères spéciaux?
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 08h59   #8
Invité de passage
 
Inscription : novembre 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 10
Points : 3
Points : 3
pour les caracteres speciaux, dans ma ligne que je split il y a :

- des chiffres
- des lettres
- des $
- des ,
- des "
- des Blancs.

la ligne ou je recois mon erreur, me coupe mon code en plein milieu de commentaires...si je regarde la cellule dans laquel je copie mes données je vois le debut de mon commentaire jusqu'au mot "any" l'espace d'aprés puis plus rien.

J'ai deja verifier cette ligne plusieur fois, j'ai bien 24 element en tout. Pour mes 2 autre ligne qui crée problemes c'est pareil, je dispose bien de 24 element (donc Tableau de 0 a 23) et il me coupe mon comentaire en plein milieu.


Edit : Avec ta boucle pour remplis les celulles je n'est plus d'erreur tout se deroule a merveille, mais dans mes 3 cas ou il y avait le probelemes avant, ma lignes n'est pas completes...mon commentaire n'est tjs pas en entier et ma dernieres valeur du tableau soit Tableu(23) est manquante.

Bizare Bizar.
merci,
Amicalement,
vincent

Dernière modification par vincent-57 ; 01/07/2009 à 09h09.
vincent-57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 09h14   #9
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
les " doivent poser problème non?
car ca délimite la fin de la chaine de caractère normalement
a moins qu'il ne soit doublé

Affiche les variable local (menue affichage/variables local) et met une pause après le split et regarde dans les variable local le contenue de ton tableau a.
A mon avis les " peuvent poser problème et tu n'as pas vraiment la chaine de caractère que tu pense avoir
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 09h22   #10
Invité de passage
 
Inscription : novembre 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 10
Points : 3
Points : 3
En faite je voulais utilisé la , comme delimitateur, hoer j'ai des Valeur danc certain champ, qui eux on aussi comme delimitateur de millier la , donc je me suis dit je prend la [,] puis le ["[ qui le suit comme delimitateur.

Donc possible que le " crée des problemes mais dans ce cas pourquoi juste sur 3 de mes 365 ligne...(ligne 71, 299 et 300)
vincent-57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 09h50   #11
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
En fait je viens de me rendre compte que ta chaine de viens d'une cellule donc visiblement le " n'est pas vraiment problématique

Tu as regarder le contenue de ton tableau?
Essaye de déclarer tes variables ca peut éviter de tourner en rond pour une erreur de frappe
(met option explicite en première ligne de ton module)
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 10h13   #12
Invité de passage
 
Inscription : novembre 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 10
Points : 3
Points : 3
Qu'apporte le fait de mettre "option explicit" ?

Pour declarer ems variables etc...je vais attendre, ma macro tourne comme il faut maintenant meme si dans certain cas mon commentaire n'est pas en entier, je me contenterai de sa...les informations essentiel etant recuperer.

Je vous remerci pour votre aide et met ce post en résolu. si je devait avoir un nouveau problemes, je reouvrirai un post qui fera reference a celui ci.

Merci mille fois,
bonne journée encore,
Amicalement,
Vincent
vincent-57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 10h19   #13
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
Si tu te met en option explicite tu es obligé de déclarer les variable l'intérêt est que si tu te plante dans une syntaxe il ne va pas passer outre en se disant c'est juste une nouvelle variable de plus et ca évite nombre de bêtise
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 10h29   #14
Invité de passage
 
Inscription : novembre 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 10
Points : 3
Points : 3
j'ai ajouter Option Explicit et en Executant a nouveau j'ai declarer mes variables.

merci encore.
Vincent
vincent-57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 15h14.


 
 
 
 
Partenaires

Hébergement Web