Ouverture de txt dans excel : automatiser des préfs.

oh, il ne s'agitpas de coup de chaud ;) mais de la chaleur intolérable qui règne dans ce bureau...
je vais aller me coucher dans le local serveur, au moins j'y trouverai un peu de fraicheur ;)

je réfléchis...

A plus.
 
Nous on a mis des ventilateurs et on laisse la porte grande ouverte…
Et les ordinateurs ne sont pas encore tombés en panne…
M'enfin avec les 2 derniers mois qu'on a eu, faut dire…
 
bon, je n'ai pas trop d'idée là...

bon boulot... moi je me prépare à rentrer, je ne tiens plus.
 
Aaaaah oui, la fraîcheur de l'automobile sous le cagnard dans les bouchons du périphe…

Mais je dis ça, si ça se trouve tu as l'intellignece d'aller travailler à vélo. Ou en métro. Ou tu habites ailleurs que chez les fous.
 
non, non, c'est automobile pour moi (trop loin pour le vélo, et très mauvaise desserte par les transports en commun) mais je m'en sors bien... les voies que j'utilise ne sont pas trop fréquentées, j'ai de la chance.
 
Vous pensez que c'est l'endroit pour parler de cela… :siffle:
 
Mais DosJones, tu sais bien que nous ne pensons pas des choses pareilles. C'est simplement que la chaleur devait nous rendre un peu lascifs, et quand on est lascif, l'éthique et la logique, pfuiiit…

Bon, pour en revenir au sujet, je n'avais pas répondu à la première partie de la dernière question de Starmac.

Donc, l'origine des fichiers, c'est effectivement un site internet où les utilisateurs saisissent les fameux code postaux et compagnie. Quant à savoir si c'est une base SQL, je ne suis pas du tout dans le coup. Ce que j'en vois, en fait, c'est qu'il me sort à chaque fois 2 fichiers, un xml et un txt+tab contenant les mêmes infos.
 
Salut, bonne journée ;)

Finalement, tu as essayé de les mettre bout à bout avec un simple éditeur de texte ?
 
Moi, ce que je ferai, c'est une macro qui
-ouvre un fichier (ca affiche la boite de dialogue classique pour choisir le fichier, on peut même choisir l'extension*.txt par défaut)
-importe le fichier texte comme tu le souhaites (avec délimité patati patata le format des colonnes que tu veux. A condition que ce soit toujours la même chose)
-voilà, c'est prêt!


Après, affecter cette macro à un bouton, voire à un raccourci clavier, et utiliser celui-ci au lieu du traditionnel bouton "ouvrir".

J'avais fait ça, dans une macro plus complexe : j'ouvrais un fichier texte, que je formatais toujours de la même façon. C'est très simple.

(je précise que c'était dans Excel pour Windows. Mais je peux te retrouver le bout de code, si tu veux. En fait, je ne m'étais pas fait suer : j'avais enregistré une macro-qui-se-fait-toute-seule. Au pire, l'adapter un peu).
 
Finalement, tu as essayé de les mettre bout à bout avec un simple éditeur de texte ?

Non. Je suppose que ça ne sera pas plus simple ou plus rapide que de faire avec un tableur.

Moi, ce que je ferai, c'est une macro qui
[…]

Ça semble une bonne idée.
J'ai essayé la macro qui s'enregistre toute seule, mais voici le résultat obtenu en code détaillé
Bloc de code:
Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 20/07/2007 par ccciolll
'
' Touche de raccourci du clavier : Option+Cmd+k
'
    
    ChDir "MacMini:Users:ccciolll:Desktop:"
End Sub
Un peu court et totalement inefficace.
j'ai donc dû merder dans l'usage de "la macro qui se fait toute seule"
Pourtant, j'ai fait ce qui me semblait logique (façon scripts de photoshop)
Outils>Macro>Nouvelle Macro
et puis Pomme-O, choisi le fichier, fait les réglages (tabulations, format texte), et une fois importé cliqué sur Stop (un bouton bleu carré).
Quelles sont les subtilités m'ayant échappé encore ?
 
C'est quoi les en-têtes exacts des fichiers ? On pourrait t'aider à l'écrire cette macro.
 
Gh ?

euh, qu'entends-tu par "les entêtes des fichiers" ?

:-S
 
ben tu disais que ces fichiers comportaient une ligne de titres (ou j'ai rêvé ?).

genre nom prenom adresse CP ville pays tel etc...
 
ben tu disais que ces fichiers comportaient une ligne de titres (ou j'ai rêvé ?).

genre nom prenom adresse CP ville pays tel etc...

Ah oui, ça. D'accord.
Bon, en fait, je disais elle ne change jamais mais ce n'est pas tout à fait exact.
Elle ne change jamais entre plusieurs fichiers (disons frères) que je souhaite mixer, donc ça ne posait pas de problème dans le sens où même une fois mixés ensemble, les divers fichiers-frères respectaient une logique d'ensemble.

Par contre, entre cousins ils sont différents.

Je fais une explication peut-être plus compréhensible.
J'ai Machin1.txt, Machin2.txt, Machin3.txt, Bidule1.txt et Bidule2.txt
Machin 1, 2 et 3 sont frères et ont la même en-tête. Additionner leur contenu ne pose pas de problème : les codes postaux resteront dans la même colonne.
Par contre, leurs cousins (les 2 freres Bidule 1 et 2) n'ont pas tout à fait le même entête.
Si j'additionnais le contenu des Machin et des Bidule, là il y aurait problème : les codes postaux des Machins se retrouveraient dans la même colonne que les fax des Bidule.
Mais heureusement pour moi, je n'ai jamais à mixer les fichiers entre cousins. Ouf !
Par contre, baser une macro ou un script sur l'entête des Machin n'est pas envisageable car cette macro ne fonctionnera pas sur les Bidule.
Et des lignées de cousins j'en ai des dizaines et des dizaines…
 
Un peu court et totalement inefficace.
j'ai donc dû merder dans l'usage de "la macro qui se fait toute seule"
Pourtant, j'ai fait ce qui me semblait logique (façon scripts de photoshop)
Outils>Macro>Nouvelle Macro
et puis Pomme-O, choisi le fichier, fait les réglages (tabulations, format texte), et une fois importé cliqué sur Stop (un bouton bleu carré).
Quelles sont les subtilités m'ayant échappé encore ?

Oui, ca semble court, il en manque un bout. Ca peut pas marcher avec ça

Voici le bout de code que j'ai dans la mienne

Do
fichierCleInverse = Application.GetOpenFilename(, , "Ouvrir le fichier")
Loop Until fichierCleInverse <> False


Workbooks.OpenText FileName:= _
fichierCleInverse, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, _
Comma:=False, Space:=False, Other:=False, 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), Array(16, 2), Array(17, 2), Array(18, 2), Array(19, 2), Array(20, 2), Array(21, 2), _
Array(22, 2), Array(23, 2), Array(24, 2), Array(25, 2), Array(26, 2), Array(27, 2), Array( _
28, 2), Array(29, 2), Array(30, 2), Array(31, 2), Array(32, 2), Array(33, 2), Array(34, 2), _
Array(35, 2), Array(36, 2), Array(37, 2), Array(38, 2), Array(39, 2), Array(40, 2), Array( _
41, 2), Array(42, 2), Array(43, 2), Array(44, 2), Array(45, 2), Array(46, 2))
On voit bien les paramètres spécifiques au fichier texte. La palanquée de Array...je sais pas à quoi ca sert.
J'avais créé cette macro comme tu l'as fait, car je ne connaissais pas la syntaxe, et j'avais pas envie de chercher :D

Mais c'est sur Windows, je le rappelle.
 
  • J’aime
Réactions: ccciolll
Ah oui, ça. D'accord.
Bon, en fait, je disais elle ne change jamais mais ce n'est pas tout à fait exact.
Elle ne change jamais entre plusieurs fichiers (disons frères) que je souhaite mixer, donc ça ne posait pas de problème dans le sens où même une fois mixés ensemble, les divers fichiers-frères respectaient une logique d'ensemble.

Par contre, entre cousins ils sont différents.

Je fais une explication peut-être plus compréhensible.
J'ai Machin1.txt, Machin2.txt, Machin3.txt, Bidule1.txt et Bidule2.txt
Machin 1, 2 et 3 sont frères et ont la même en-tête. Additionner leur contenu ne pose pas de problème : les codes postaux resteront dans la même colonne.
Par contre, leurs cousins (les 2 freres Bidule 1 et 2) n'ont pas tout à fait le même entête.
Si j'additionnais le contenu des Machin et des Bidule, là il y aurait problème : les codes postaux des Machins se retrouveraient dans la même colonne que les fax des Bidule.
Mais heureusement pour moi, je n'ai jamais à mixer les fichiers entre cousins. Ouf !
Par contre, baser une macro ou un script sur l'entête des Machin n'est pas envisageable car cette macro ne fonctionnera pas sur les Bidule.
Et des lignées de cousins j'en ai des dizaines et des dizaines…

Continue à la main...

Si les fichiers de base ne sont pas "normalisables", ce n'est pas trop la peine de se fatiguer à écrire des macros qui ne serviront que trop peu pour en amortir le temps d'écriture.

Enfin, ce que j'en dis. :siffle:
 
La palanqu&#233;e de Array...je sais pas &#224; quoi ca sert.

Peut-&#234;tre que &#231;a signifie, premier nombre le num&#233;ro de colonne, deuxi&#232;me nombre le type (par exemple standard ou texte justement)

Mais c'est sur Windows, je le rappelle.

Certes, mais il doit bien y avoir une solution pour faire pareil sur mac.
Bon si personne n'en trouve une , j'essaierai en copiant ton code !

Continue &#224; la main...

Si les fichiers de base ne sont pas "normalisables", ce n'est pas trop la peine de se fatiguer &#224; &#233;crire des macros qui ne serviront que trop peu pour en amortir le temps d'&#233;criture.

Enfin, ce que j'en dis. :siffle:

Bah non parce que quand m&#234;me en gros, l'action &#224; effectuer est assez simple et les diff&#233;rences pas si importantes.
En imaginant que les array d&#233;finissent les colonnes, je dois pouvoir pr&#233;voir une macro ave, je sais pas moi, 100 array, comme &#231;a quelle que soit la longueur de mes fichiers (qui ne d&#233;passeront jamais 100 colonnes) &#231;a passera.
 
Peut-être que ça signifie, premier nombre le numéro de colonne, deuxième nombre le type (par exemple standard ou texte justement)

C'est ça en effet.
1 pour standard
2 pour texte
 
C'est ça en effet.
1 pour standard
2 pour texte

Ah ben voilà, alors ça a l'air simple.
Tu ne crois pas que si je prévois 100 array, il acceptera d'importer même les fichier .txt ne comportant pas 100 colonnes ?
 
essaie...