calitoli
Messages postés45Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention 7 septembre 2012
-
4 août 2008 à 15:30
youpiyoyo
Messages postés539Date d'inscriptionvendredi 6 juin 2003StatutMembreDernière intervention14 juillet 2010
-
11 août 2008 à 16:02
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.
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 4 août 2008 à 15:51
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
calitoli
Messages postés45Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention 7 septembre 2012 5 août 2008 à 11:19
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)
bonjourcheval
Messages postés228Date d'inscriptionmercredi 13 décembre 2000StatutMembreDernière intervention 8 août 2011 5 août 2008 à 17:28
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
youpiyoyo
Messages postés539Date d'inscriptionvendredi 6 juin 2003StatutMembreDernière intervention14 juillet 2010 5 août 2008 à 18:18
[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 :)
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
:= ???? 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!!!
calitoli
Messages postés45Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention 7 septembre 2012 11 août 2008 à 10:44
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.
youpiyoyo
Messages postés539Date d'inscriptionvendredi 6 juin 2003StatutMembreDernière intervention14 juillet 2010 11 août 2008 à 16:02
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 :)