IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Ouverture de document txt avec Opentxt


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Par défaut Ouverture de document txt avec Opentxt
    Salut tout le monde,

    Je développe actuellement un module VSTO pour excel 2007 et + en C#.

    Dans mon code, j'ouvrir un fichier texte qui est enregistré au format csv.

    exemple du fichier texte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    QINFERENCESRVDEVDVT1074;FIL;4;IFR;;;and;;;;GEF;20080807;;;[B@65d76a;
    QINFERENCESRVDEVDVT1074;ORD;1;IFR;;;;;;;GEF;20080807;;;[B@218e19;
    QINFERENCESRVDEVDVT1086;INF;6;IFR;XINFERENCESRVDEVDVT41;;;;;;GTI;20100422;;;[B@f846df;
    QINFERENCESRVDEVDVT1086;INF;7;IFR;XINFERENCESRVDEVDVT42;;;;;;GTI;20100422;;;[B@1f4fedf;
    Alors pour le moment j'arrive à ouvrir ce fichier dans excel en utilisant la méthode suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Globals.ThisAddIn.Application.Workbooks.OpenText(Ribbon1.path + filename, 65001, missing, Excel.XlTextParsingType.xlDelimited, Excel.XlTextQualifier.xlTextQualifierNone, false, false, true, false, false, false, missing, missing, missing, missing, missing, missing, missing);
    Seulement, cette méthode à la particularité d'ouvrir mon fichier dans un nouveau classeur excel. Je fais donc une copie de la feuille de ce nouveau classeur dans mon classeur principal, puis je ferme le nouveau classeur, par le biais du code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Excel._Worksheet copyWS = Globals.ThisAddIn.Application.Workbooks[filename].Sheets[1] as Excel.Worksheet;
    copyWS.Copy(mainWorkSheet, Type.Missing);
    Globals.ThisAddIn.Application.Workbooks[filename].Close(false, Type.Missing, Type.Missing);
    Mais ce fonctionnement ne convient pas pour le module que je développe. J'aimerai donc savoir comment faire pour ouvrir mon fichier dans la feuille active de mon classeur, si possible sans passé par la création d'un nouveau classeur temporaire.

    Une autre chose qui me serait utile serait de pouvoir choisir la cellule a partir de laquelle mon fichier sera affiché.
    Comme le fait excel, après l'assistant d'import de texte, dans :
    Données > Données externes > A partir du texte

    Merci par avance de vos réponses

    Ghosty

  2. #2
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    Bonjour,

    Voilà ce que cela pourrait donner en vba

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Dim QT As QueryTable
    Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\01.txt", Destination:=Range("$D$9"))
     
    QT.Name = "TextFile01"
    QT.FieldNames = True
    QT.RowNumbers = False
    QT.FillAdjacentFormulas = False
    QT.PreserveFormatting = True
    QT.RefreshOnFileOpen = False
    QT.RefreshStyle = xlInsertDeleteCells
    QT.SavePassword = False
    QT.SaveData = True
    QT.AdjustColumnWidth = True
    QT.RefreshPeriod = 0
    QT.TextFilePromptOnRefresh = False
    QT.TextFilePlatform = 850
    QT.TextFileStartRow = 1
    QT.TextFileParseType = xlDelimited
    QT.TextFileTextQualifier = xlTextQualifierDoubleQuote
    QT.TextFileConsecutiveDelimiter = False
    QT.TextFileTabDelimiter = False
    QT.TextFileSemicolonDelimiter = True
    QT.TextFileCommaDelimiter = False
    QT.TextFileSpaceDelimiter = False
    QT.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
    1, 1, 1, 1, 1)
    QT.TextFileTrailingMinusNumbers = True
    QT.Refresh BackgroundQuery:=False
    Tout n'est pas utile mais c'est pour faire voir
    Je pense que tu n'auras pas trop dur de convertir en C#

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Par défaut
    Au poil ce petit code, c'est pile ce qui me fallait

    il me reste plus qu'a trouver comment appeler la petite fenêtre d'excel qui permet de laisser le choix à l'utilisateur de la feuille, de la cellule ou de la création d'une nouvelle feuille.

    Aurait tu une idée sur cet appel.

    pour ceux que ca intéresse voila le code en C# (derrière il y a tous les paramètres que j'ai trouvé, pareil pas tous nécessaire)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    mainWorkSheet = Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet;
    string myfilename = "TEXT;" + Ribbon1.path + filename;
    Excel.Range Range = mainWorkSheet.get_Range("B2", "B2");
     
    Excel.QueryTable qt = mainWorkSheet.QueryTables.Add(myfilename, Range);
     
    QT.FieldNames = True
    QT.RowNumbers = False
    QT.FillAdjacentFormulas = False
    QT.PreserveFormatting = True
    QT.RefreshOnFileOpen = False
    QT.RefreshStyle = xlInsertDeleteCells
    QT.SavePassword = False
    QT.SaveData = True
    QT.AdjustColumnWidth = True
    QT.RefreshPeriod = 0
    QT.TextFilePromptOnRefresh = False
    QT.TextFilePlatform = 850
    QT.TextFileStartRow = 1
    QT.TextFileParseType = xlDelimited
    QT.TextFileTextQualifier = xlTextQualifierDoubleQuote
    QT.TextFileConsecutiveDelimiter = False
    QT.TextFileTabDelimiter = False
    QT.TextFileSemicolonDelimiter = True
    QT.TextFileCommaDelimiter = False
    QT.TextFileSpaceDelimiter = False
    QT.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
    1, 1, 1, 1, 1)
    QT.TextFileTrailingMinusNumbers = True
    QT.Refresh BackgroundQuery:=False

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Par défaut
    je met aussi pour ceux qui chercherai comment appeler la boite de dialogue pour la sélection des cellules.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Globals.ThisAddIn.Application.ActiveWorkbook.Application.InputBox("hello", "titre", "", missing, missing, missing, missing, 8);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 27/10/2008, 09h15
  2. Ouvrir un document .txt avec wordpad (VB5)
    Par DanielB dans le forum VB 6 et antérieur
    Réponses: 33
    Dernier message: 05/12/2007, 10h18
  3. ouverture d'un txt avec wordpad
    Par abarbier dans le forum Langage
    Réponses: 4
    Dernier message: 20/11/2007, 18h43
  4. ouverture de fichier txt avec excel
    Par blondelle dans le forum C++Builder
    Réponses: 5
    Dernier message: 24/05/2006, 11h33
  5. Ouverture d'un document Word avec mot de passe
    Par faiglon dans le forum Access
    Réponses: 9
    Dernier message: 14/02/2006, 13h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo