|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Date d'inscription: novembre 2007
Messages: 10
|
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 |
|
|
|
|
|
#2 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
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 :
for i = 0 to UBound(tableau) msgbox tableau(i) next i |
|
|
|
|
|
#3 |
|
Invité régulier
![]() Date d'inscription: novembre 2007
Messages: 10
|
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 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
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 |
|
Invité régulier
![]() Date d'inscription: novembre 2007
Messages: 10
|
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" Code :
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 Code :
Cells(l, 24) = a(23) En esperant avoir etait clair, Merci d'avance, Amicalement, Vincent. |
|
|
|
|
|
#6 |
|
Membre régulier
![]() |
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 .
|
|
|
|
|
|
#7 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
Bonjour,
Ca serait pas plus simple de faire une boucle pour remplir les cellules? Code :
for i = 0 to ubound(a) Cells(l, i+1) = a(i) next i Code :
Cells(l, 24) = a(23) Sinon comme le signale Lynx92260 est ce que tu as des caractères spéciaux? |
|
|
|
|
|
#8 |
|
Invité régulier
![]() Date d'inscription: novembre 2007
Messages: 10
|
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. |
|
|
|
|
|
#9 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
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 |
|
|
|
|
|
#10 |
|
Invité régulier
![]() Date d'inscription: novembre 2007
Messages: 10
|
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) |
|
|
|
|
|
#11 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
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) |
|
|
|
|
|
#12 |
|
Invité régulier
![]() Date d'inscription: novembre 2007
Messages: 10
|
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 |
|
|
|
|
|
#13 |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
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
|
|
|
|
|
|
#14 |
|
Invité régulier
![]() Date d'inscription: novembre 2007
Messages: 10
|
j'ai ajouter Option Explicit et en Executant a nouveau j'ai declarer mes variables.
merci encore. Vincent |
|
|
|
|
|
![]() |
||
[XL-2003] Nombre de caractères limité pour la fonction "Split" ?
|
||
| Outils de la discussion | |
|
|