splitté des celulles avec des nombre de champs superieur a 255!

fredh

XLDnaute Occasionnel
[Resolu] Splitté des celulles avec des nombre de champs superieur a 255!

Bonjour a tous
J'ai un fichier excel issu d'une extraction de Base de donnés.
Afin de traité cela il faudrait que je splitte les celulles en colonne A:A
Probleme : si je splite simplement alors j'ai 277 colonnes et excel ne peut en avoir que 255, donc je desir "oublier" quelques champs lors du splittage.
.
Pour cela j'ai pondu la macros suivante (attention ca risque de piquer au yeux car je suis encore debutant :)) :

Code:
Sub aCSV()
Dim colon
Dim n As Integer, ncolon As Integer
'Ici je donne les numero de split a copié
'Je ne veut pas le 6em, 7em, 10em et 11em champ).
'plus tard il faudrait que j'inscrive ici environ 200 champ) Est ce possible?
colon = Array(0, 1, 2, 3, 4, 5, 8, 9, 12, 13, 14, 15, 16, 17)
ncolon = 0
'la 1er ligne est une ligne d'exemple qui representge C1 splitté
'la 2em ligne est une ligne d'exemple de ce que je desire obtenir, donc je commence le traitement en 3em ligne
For n = 3 To Range("A65536").End(xlUp).Row
'Split de la colonne A copie dans A, B, C etc....
    t = Split(Range("A" & n), ";")
 
    Range("A" & n) = t(m)
    ncolon = ncolon + 1
    m = colon(ncolon)
 
    Range("B" & n) = t(m)
    ncolon = ncolon + 1
    m = colon(ncolon)
    Range("C" & n) = t(m)
    ncolon = ncolon + 1
    m = colon(ncolon)
 
    Range("D" & n) = t(m)
    ncolon = ncolon + 1
    m = colon(ncolon)
 
    Range("E" & n) = t(m)
    ncolon = ncolon + 1
    m = colon(ncolon)
 
    Range("F" & n) = t(m)
    ncolon = ncolon + 1
    m = colon(ncolon)
 
    Range("G" & n) = t(m)
    ncolon = ncolon + 1
    m = colon(ncolon)
 
    Range("H" & n) = t(m)
    ncolon = ncolon + 1
    m = colon(ncolon)
 
    Range("I" & n) = t(m)
    ncolon = ncolon + 1
    m = colon(ncolon)
 
    Range("J" & n) = t(m)
    ncolon = ncolon + 1
    m = colon(ncolon)
 
    Range("K" & n) = t(m)
    ncolon = ncolon + 1
    m = colon(ncolon)
 
    Range("L" & n) = t(m)
    ncolon = ncolon + 1
    m = colon(ncolon)
 
    Range("M" & n) = t(m)
    ncolon = colon + 1
    m = colon(ncolon)
 
    Range("N" & n) = t(m)
    ncolon = ncolon + 1
    m = colon(ncolon)
 
    Range("O" & n) = t(m)
    ncolon = ncolon + 1
    m = colon(ncolon)
 
    Range("P" & n) = t(m)
    ncolon = ncolon + 1
    m = colon(ncolon)
 
    Range("Q" & n) = t(m)
    ncolon = ncolon + 1
    m = colon(ncolon)
 
    Range("R" & n) = t(m)
    ncolon = colon + 1
    m = colon(ncolon)
 
    Range("S" & n) = t(m)
    ncolon = colon + 1
    m = colon(ncolon)
 
    Range("T" & n) = t(m)
    ncolon = colon + 1
    m = colon(ncolon)
 
    Range("U" & n) = t(m)
    ncolon = colon + 1
    m = colon(ncolon)
 
    Range("V" & n) = t(m)
    ncolon = colon + 1
    m = colon(ncolon)
 
    Range("W" & n) = t(m)
    ncolon = colon + 1
    m = colon(ncolon)
 
    Range("X" & n) = t(m)
    ncolon = colon + 1
    m = colon(ncolon)
 
    Range("Y" & n) = t(m)
    ncolon = colon + 1
    m = colon(ncolon)
 
    Range("Z" & n) = t(m)
    n = n + 1
Next n
End Sub


J'ai quelques problemes :
1.\ a la fin du split j'ai des problemes de rebouclage, il faudrait que je fasse la manoeuvre que tant qu'il y a quelque chose dans le split....
2.\ je n'arrive pas a suprimez des champs.....Resolue
3.\ je ne suis pas sur du resultat plusieurs lignes (enfin ca devrait rouler mais vu que ca bloque avant...)
4.\ j'aimerai simplifié le code en incrementant les colonnes, afin d'evité les repetition. En effet dans l'exemple j'ai 17 colonne mais en realité j'en ai presque 200 (277 sans la supression).


Ci joint un fichier exemple :
avec des boutons pour lancer la macros, un boutons pour revenir au point de depart afin de retester corectement.
La 3em ligne inclus des MFC afin de colorié en vert un bon resultat et en rouge un mauvais resultat.

Voila j'espere avoir été clair. sinon n'hesité pas


PS edit:

merci et @+
 

Pièces jointes

  • test3.zip
    20.5 KB · Affichages: 33
  • test3.zip
    20.5 KB · Affichages: 38
  • test3.zip
    20.5 KB · Affichages: 39
Dernière édition:

fredh

XLDnaute Occasionnel
Re : splitté des celulles avec des nombre de champs superieur a 255!

No prob

En faite "il y a toujours plus malin", je le dit dans le sens "il y a toujours plus malin que moi"....

J'ai retester sur le "gros" fichier et ......
on passe de 1:05:00 a 00:01:30

C'est noel avant l'heure.

Normal a chaque celulle excell voulait rafraichir, donc 200 colonne x 5300 ligne = 1.000.000 de rafraichissement.

Pierrejean merci beaucoup pour ton aide tres precieuse. Si un jour j epeut faire quelque chose pour toi (au niveau optimisation XP, Hardware, connexions etc...) n'hesite pas.

@+

PS je change le titre du Post en resolue
 

Discussions similaires

Réponses
7
Affichages
495

Statistiques des forums

Discussions
314 636
Messages
2 111 456
Membres
111 144
dernier inscrit
shura_77