OUverture de fichier texte

Signaler
Messages postés
45
Date d'inscription
jeudi 26 juin 2008
Statut
Membre
Dernière intervention
7 septembre 2012
-
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
14 juillet 2010
-
Bonjour à vous tous,

j'ai creer un fichier texte qui contient des données:
Nom    Prenom    Age
jean      Toto        10
Joseph  Tico         20

je veux l'ouvrir avec excel lorsque je click sur un bouton.

merci.

-Calito

9 réponses

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

Sub demo()
    Dim OpenTxtFile As Long, Chemin As String, NomFichier As String
    Chemin = "c:\Temp"
    NomFichier = "bob.txt"
    OpenTxtFile = Shell("NOTEPAD.EXE " & Chemin & NomFichier, 1)
End Sub
Messages postés
45
Date d'inscription
jeudi 26 juin 2008
Statut
Membre
Dernière intervention
7 septembre 2012

Avec ton code, ca m'ouvre notepad. Mais lorsque je mets "EXCEL.EXE" il me donne un message d'erreur.
je veux ouvril le fichier texte avec excel.      
      Dim OpenTxtFile As Long, Chemin As String, NomFichier As String
       Chemin = "C:\TEST"
       NomFichier = "youpia.txt"
       OpenTxtFile = Shell("EXCEL.EXE" & Chemin & NomFichier, 1)

-Calito
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
14 juillet 2010
1
Salut,

Regarde si en vb6 tu peux utiliser new excel.application comme en .net en réference.
si oui adapte ce code vba   
Application.WindowState = xlMaximized
    Workbooks.OpenText Filename:= _
        "c:\chemin\fichiertext.txt", Origin:=xlMSDOS, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, _
        Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3 _
        , 1)), TrailingMinusNumbers:=True
sinon ceci devrais également fonctionner
Dim xls= Shell("C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" + " ""c:\path\NomFichier.txt""", AppWinStyle.NormalFocus)
@+
youpi :)
Messages postés
228
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
8 août 2011

Bonjour,

Youpiyoyo, je n'envoies pas de code VB6 dans le forum assembleur

Et oui, Excel Application existe en VB6.

De plus,

Dim xls= Shell("C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" & " ""c:\path\NomFichier.txt""", AppWinStyle.NormalFocus)

Pour concaténer une chaine, tu ne peux pas écrire   """
C'est plutôt   "'"  ( " ' " )
Et le symbole de concaténation est &. Le + peut amener des résultats innatendus!
À moins que pour le Shell, il veuille un +, je ne sais pas.

Autre point. Dim xls = ...  Avec option explicit, je ne peux pas le faire. Erreur de syntaxe. Il n'aime pas le '=' dans les déclarations de variables.

VB.Net et VB6 sont TRÈS différents.

Bref, je crois que traduire ce code doit être au moins aussi dur que d'en trouver un en VB6...

Entk, une petite recherche sur Snippets t'aurait permis de trouver cette source de mortalino

http://www.codyx.org/snippet_ouvrir-fichier-word-ou-excel-est-ouvert-copie_313.aspx



Langage :


VB6

,
VBA

Date ajout :
24/02/2007


Posté par mortalino[Liste]


DateMAJ :
26/02/2007


Private Const 
OF_SHARE_EXCLUSIVE = &H10
Private Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
Private Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long
Function OpenDocXlsFile(FileToOpen As String) As Long
'   retourne :
'   -1  -> erreur
'   0   -> fichier déjà ouvert, ouverture en lecture seule
'   1   -> ouverture première instance
    OpenDocXlsFile = -1
    
    Dim sExt        As String
    Dim NomAppli    As String
'   type de fichier par son extension
    If LenB(FileToOpen) < 16 Then
        Exit Function
    Else
        sExt = LCase$(RightB$(FileToOpen, 8))
        If sExt = ".doc" Or sExt = ".rtf" Then
            NomAppli = "Word"
        ElseIf sExt = ".xls" Or sExt = ".csv" Then
            NomAppli = "Excel"
        Else
            Exit Function
        End If
    End If
'   ouverture office
    Dim MonApp      As Object
    Dim MonDoc      As Object
    Dim hFile       As Long
    
    hFile = lopen(FileToOpen, OF_SHARE_EXCLUSIVE)
    If hFile <> -1 Then 'pas ouvert
        lclose (hFile)
        Set MonApp = CreateObject(NomAppli & ".Application")
        If NomAppli = "Word" Then
            Set MonDoc = MonApp.Documents.Open(FileToOpen)
        Else
            Set MonDoc = MonApp.Workbooks.Open(FileToOpen)
        End If
        OpenDocXlsFile = 1
    ElseIf (hFile = -1) And (Err.LastDllError = 32) Then 'déjà ouvert
        lclose (hFile)
        Set MonApp = CreateObject(NomAppli & ".Application")
        If NomAppli = "Word" Then
            On Local Error Resume Next
            Set MonDoc = MonApp.Documents.Open(FileToOpen, , True)
            If Err.Number = 4198 Then
'               word 2000, utilisateur fait ANNULER
                Err.Clear
                GoTo Lbl_Exit
            End If
            On Error GoTo 0
        Else
            Set MonDoc = MonApp.Workbooks.Open(FileToOpen, , True)
        End If
        OpenDocXlsFile = 0
    End If
    MonApp.Visible = True
    
Lbl_Exit:
    Set MonDoc = Nothing
    Set MonApp = Nothing
End Function

'   EXEMPLE
Private Sub Form_Load()
    Debug.Print "Word : " & OpenDocXlsFile("C:\Nouveau Document Microsoft Word.doc")
    Debug.Print "Excel : " & OpenDocXlsFile("C:\test.xls")
   
    Unload Me
End Sub

Walla
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
14 juillet 2010
1
[auteur/CALITOLI/1427563.aspx calitoli], j'espere que les précisions[auteur/BONJOURCHEVAL/1416430.aspx bonjourcheval]t'aidera dans ta recherche.

bonjourcheval, il me semble bien étrange ce que tu me racontes bien que ne connaissans pas vb6 mais très bien vb.net et vba que tu me dises que le """ ne fonctionne pas. Même en vba qui est quand même perfectible, ceci fonctionne. très sincèrement je veux pas non + rentrer dans les details mais le + entre deux string peut être utiliser dans tout les langages vb pour les concatener. le & pouvant être utiliser pour les numériques. ex: lol="exemple" & val("10").
après je suis d'accord sur le faite que vb.net et vb6 doit etre différent mais il ne doit pas exister tant de différence que ca. le mec qui sait codé en vba peut facilement passer sur .net. l'inversse est plus pénible.
et puis pour le "Dim xls=" je pense que calitoli aurai été capable de comprendre ce qu'il fallait faire.
@+
youpi :)
Messages postés
228
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
8 août 2011

Et bien, tu as raison =)

J'ai essayé avec 

MsgBox """test""" & """voyons si ça fonctionne"""

Et fait, c'est pour les critères d'une chaine SQL que ça ne fonctionne pas...

Mais pour le +, j'ai dit qu'il peut causer des erreurs :

MsgBox "rere" + 4  ' erreur
MsgBox "rere" & 4 'Correct

Si mon but est décrire rere4 et qu'on ma toujours dit que le caractère de concaténation est +, j'aurais une erreur. Ça peut parraître évident comme erreur, mais si on a toujours vu le symbole + entre 2 chaines...

Ah oui, j'avais cru que tu avais envoyé du code en .net à cause de ceci

TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, _
        Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3 _
        , 1)), TrailingMinusNumbers:=True

:= ???? Je ne savais pas que ça existait en VBA.
En VB6, le : veut dire que l'on commence une nouvelle instruction sur la même ligne... Il fait autre chose aussi?

En tous cas, désolé si j'ai contredis ton message =) Je croyais avoir raison... Au moins, ça m'aura permis d'apprendre quelque chose!!!

Walla
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
14 juillet 2010
1
Salut,
Il y a pas de soucis, ce qui compte c'est d'aider [auteur/CALITOLI/1427563.aspx calitoli], et je ne me suis pas senti contre dis

youpi :)
Messages postés
45
Date d'inscription
jeudi 26 juin 2008
Statut
Membre
Dernière intervention
7 septembre 2012

Lorsque je fais un click droit sur un fichier txt qui contient une lists de nom par exemple, je peux l'ouvrir avec excel, cela ne me donne pas de message d'erreur, et automatiquement la nouvelle feuille de calcul porte le nom du fichier
mais en code, si j'utilise ceci:
    Dim OpenTxtFile As Long, Chemin As String, NomFichier As String
    Chemin = "C:\Documents and Settings\Administrateur\Bureau\TEST"
    NomFichier = "meToTo.txt"
    OpenTxtFile = Shell("C:\Program Files\Microsoft Office\Office12\EXCEL.EXE " & Chemin & NomFichier, 1)
    il me dit que le fichier est introuvable et que je dois verifier le path.
ou ceci:
Dim xls= Shell("C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" + " ""c:\path\NomFichier.txt""", AppWinStyle.NormalFocus)
  toujouirs des Erreurs

Je pense qu'il me faut un code qui:
      premierement - me permet de preciser le chemin
      deuxiemement - me permet de preciser le nom du fichier txt
      troisiemement - un bout de code qui traduit un click droit et de faire "ouvrir avec", puis de choisir le programme excel.

Rappel: le fichier que je veux ouvrir n'est pas un fichier excel, c un fichier txt.

Merci
-Calito
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
14 juillet 2010
1
Salut,

Perso en vba ce code fonctionne:
xls = Shell("C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" + " ""D:\file.txt""", vbNormalFocus)
Ceci implique que tu es Office 2003 si tu as 2007 le chemin dois de mémoire etre dans office12.
Tu peux réaliser un code te permettant de verif le chemin de office soit par une recherche sur le disque dur (perso je trouve pas cela une bonne solution).
Soit par la base de registre, si il trouve pas tu fais un openfiledialog.
regarde le site de microsoft cela t'aidera pour la base de registre
http://support.microsoft.com/kb/240794
@+
youpi :)