VBA - TextToColumns - Formules

Résolu
SupraDolph Messages postés 196 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 1 septembre 2008 - 14 juin 2006 à 09:20
SupraDolph Messages postés 196 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 1 septembre 2008 - 14 juin 2006 à 11:01
Bonjour a tous.


J'espere qu'il y a des professionnel d'Excel parmis vous !
J'ai une chaine de charactere (dans une cellule) que je convertie en colonne (a chaque espace).
Fonction : Cells(1, 1).TextToColumns DataType:=xlDelimited, Other:=True, OtherChar:=" ", ConsecutiveDelimiter:=True


Je ne peu pas connaitre a l'avance le nombre de colonne qui seront generees, je ne peu donc pas utiliser la proprietee fieldinfo qui a ma connaissance demande de creer autant d'array que de colonnes.


Cette chaine de caractere peut etre du style :
blablaba -6565-G6565 545451 -5454-5454


Si je la convertie cela me donne:
Colonne 1: blablabla
Colonne 2: NOMBRE?
Colonne 3: 545451
Colonne 4: 0


En fait, les nombres commencant par le signe moins sont concidere comme une formule (avec un signe egal d'ajoute automatiquement ex : "-6565-G6565" devient "=-6565-G6565" d'ou l'erreur)
Ce que je veux c'est conserver le type "texte" dans chacune de mes colonnes et donc qu'Excel ne m'ajoute pas ce signe =.


Merci d'avance


PS : Je suis desole pour les accents, mon clavier ne me permet pas de les mettres.


SupraDolph.

2 réponses

SupraDolph Messages postés 196 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 1 septembre 2008 1
14 juin 2006 à 11:01
Merci pour ta reponse 647037 mortalino
J'y avais pense, mais les valeurs devront surement etres reprises.
J'ai toutefois trouve la solution :

Dim Arr() As Integer
ReDim Arr(mavar, 1) 'mavar represente le nombre de colonnes de mon tableau
Dim i As Integer

For i = 0 To Ubound(Arr,1)
    Arr(i, 0) = i + 1
    Arr(i, 1) = 2
Next
    Cells(1, 1).TextToColumns DataType:=xlDelimited, Other:=True, OtherChar:=" ", ConsecutiveDelimiter:=True, FieldInfo:=Arr, TrailingMinusNumbers:=True

J'ai donc reussi a utiliser le FieldInfo sachant que normalement, il s'ecrit :
FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8, 2), Array(9, 2), Array(10, 2), Array(11, 2), Array(12, 2), Array(13, 2), Array(14, 2), Array(15, 2))

SupraDolph.
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 juin 2006 à 10:21
Salut,

Et en placant une apostrophe juste devant   =>   '

 Ca fonctionne ?













c'est peut-etre comme les zéro (comme les numéros de tel), si t'en met pas, il disparait, si t'en met un, le zéro reste et le'apostrophe n'est pas dans le string.

@++
<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /?><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>  Mortalino 

Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement
0
Rejoignez-nous