Code VBA pour un TXT dans Excel

Fermé
Tonio - 29 janv. 2010 à 09:46
 Tonio - 29 janv. 2010 à 16:52
Bonjour,

J'ai un classeur excel dans lequel j'ai une macro.
Quand je lance cette macro elle m'ouvre un deuxième classeur excel qui comporte deux pages.
La 1ere comporte des données, la deuxième des statistiques sur ces données auto exécutées par la macro.
Je voudrais que lorsque je lance la macro elle m'ouvre et m'intègre dans la 1ere page de mon 2eme classeur un fichier TXT qui est préconfiguré pour s'intégrer dans les colonnes mais surtout qui change tous les jours avec un nom qui sera tjrs ça : lenom.date.txt (format de la date année/mois/jour). Il faut donc en plus une reconnaissance de date.

Merci d'avance pour vos réponses.
A voir également:

12 réponses

garion28 Messages postés 1545 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 406
29 janv. 2010 à 10:39
pour l'acces au fichier texte:
http://www.info-3000.com/vbvba/fichiertexte.php
ensuite pour entrer une valeur dans une cellule:
sheets("nom de la feuille").range("adresse de la cellule, exemple A1").value="ta valeur"
tu devrai surement utiliser un truc comme par exemple workbook("nom du fichier") devant le sheets pour identifier sur quel fichier tu récupere ou écrit la valeur
0
Je vais tester ;)

Merci
0
Je rame !
J'ai un peu de mal ... je suis pas trop au top sur VBA en écriture.
0
garion28 Messages postés 1545 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 406
29 janv. 2010 à 11:21
sur quel point as tu des problèmes ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J'ai pas mal d'erreur et bon j'ai déjà un code assez complet dans mon VBA et j'ai du mal à tout ajouter les lignes sans tout planter

Voilà mon code sans ajouter ce que je veux.

Sub KPI()


djnwemp = Cells(4, 3).Value

Workbooks.OpenText Filename:="C:\Documents and Settings\troncan1\Desktop\KPI." & djnwemp & ".XLS", _
Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1)), _
TrailingMinusNumbers:=True

derlig = Sheets(1).Range("A65536").End(xlUp).Row

Range("KPI!D17").Formula = "=Sumproduct(('Extraction SIGMA'!J4:J" & derlig & "<>1990)*('Extraction SIGMA'!M4:M" & derlig & "<>"""")*('Extraction SIGMA'!M4:M" & derlig & "-'Extraction SIGMA'!L4:L" & derlig & "))/Sumproduct(('Extraction SIGMA'!J4:J" & derlig & "<>1990)*('Extraction SIGMA'!M4:M" & derlig & "<>""""))"

Range("KPI!F6").Formula = "=SUMPRODUCT(('Extraction SIGMA'!O4:O" & derlig & "-'Extraction SIGMA'!L4:L" & derlig & ">2)*1)"

Range("B8").Select
Windows("KPI." & djnwemp & ".xls").Activate
Sheets("KPI").Select
Range("D34:E34").Select
ActiveCell.FormulaR1C1 = "=COUNTIF('Extraction SIGMA'!C[12],""OUI"")"
Range("F34:G34").Select
ActiveCell.FormulaR1C1 = "=COUNTIF('Extraction SIGMA'!C[10],""NON"")"
Range("H34").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[-4],RC[-2])"
Range("H35").Select

End Sub
0
En gros je veux intégrer mon TXT après l'ouverture du classeur Excel et avant l'exécution des formules puisqu'elles se basent sur mes données qui sont dans mon TXT...
0
garion28 Messages postés 1545 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 406
29 janv. 2010 à 13:50
utilise l'évenement open de workbook pour l'importation de ton fichier txt sur excel et pour tout ce que tu veu que ca fasse a l'ouverture du fichier
0
J'ai presque trouvé ce que je voulais. Par contre il me crée une nouvelle feuille dans mon fichier excel alors que je veux qu'il copie les infos dans une feuille précise qui est 'Extraction SIGMA'

Le problème est certainement ActiveSheet.Move Before:=Workbooks("KPI.20100128.xls").Sheets("Extraction SIGMA") mais je ne connais pas la commande...

Option Explicit
Dim MonFichier As Variant
Public Monclasseur As String
Dim Nblig As Long, i As Long, j As Long
Public Monchemin As String
Sub Importation()
'
' Importation Macro
'

'
Dim MonFichier As Variant


MonFichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If MonFichier <> False Then

Range("A1").Select
Workbooks.OpenText Filename:= _
"C:\Documents and Settings\troncan1\Desktop\KPI.20100128.txt", Origin:= _
xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _
, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:= _
False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1) _
, Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), _
Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _
16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1)), TrailingMinusNumbers _
:=True
ActiveSheet.Move Before:=Workbooks("KPI.20100128.xls").Sheets("Extraction SIGMA")

Range("A1").Select

End If

End Sub
0
garion28 Messages postés 1545 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 406
29 janv. 2010 à 15:35
l'enregistreur de macro sert aussi a trouver la bonne syntaxe ^^
j'ai trouvé ca:
Sheets("nom de la feuille a déplacer").Move Before:=Workbooks("fichier où le déplacer").Sheets(numéro ou nom de la feuille qui suivra celle déplacé)
0
En fait le problème est pas de mettre une feuille avant l'autre, je veux que lorsque la macro m'intègre mon fichier texte il ne se mette pas avant une feuille mais dans une feuille précise.
La il en crée une nouvelle...
0
garion28 Messages postés 1545 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 406
29 janv. 2010 à 16:02
dans ce cas, le ActiveSheet.Move Before:=Workbooks("KPI.20100128.xls").Sheets("Extraction SIGMA") est completement inutile puisqu'il déplace une feuille

il faudrai lire chaque ligne du fichier et écrire dans la cellule voulu de la feuille voulu


j'espere avoir compris le problème (ca reste un peu flou dans ma tête)
0
Ok donc ça je peux le dégager par contre maintenant il faut que je trouve la commande qui me permet d'insérer mes données dans une feuille de mon excel et non d'en créer une nouvelle à coté des autres.
0