OVH Cloud OVH Cloud

pb avec GetObject

5 réponses
Avatar
Jean
Bonjour,

j'ai ci-dessous un code pour aller lire un classeur fermé.
sur la ligne : Set classeur_a_lire = GetObject(chemin & "\text.xls")
il me donne une erreur "Fichier ou classe introuvable" , mon fichier existe
bin au bon endroit.
cela viendrait de la classe. que faire ?

Sub lecture()
Dim classeur_a_lire As Workbook
Dim info(1 To 4, 1 To 2), x As Byte, y As Byte, chemin As String
chemin = ThisWorkbook.Path
Set classeur_a_lire = GetObject(chemin & "\text.xls")
For x = 1 To 4
For y = 1 To 2
info(x, y) = classeur_a_lire.Sheets(1).Cells(x, y)
Next y
Next x
MsgBox "lecture terminée"
For x = 1 To 4
MsgBox info(x, 1) & " " & info(x, 2)
Next x
End Sub

Merci d'avance

Jean

5 réponses

Avatar
Daniel
Bonjour.
Ici, tes instructions s'exécutent bien. Es-tu sûr du chemin ? Ton classeur
est-il enregistré ?
Cordialement.
Daniel
"Jean" a écrit dans le message de news:
441be757$0$6686$
Bonjour,

j'ai ci-dessous un code pour aller lire un classeur fermé.
sur la ligne : Set classeur_a_lire = GetObject(chemin & "text.xls")
il me donne une erreur "Fichier ou classe introuvable" , mon fichier
existe bin au bon endroit.
cela viendrait de la classe. que faire ?

Sub lecture()
Dim classeur_a_lire As Workbook
Dim info(1 To 4, 1 To 2), x As Byte, y As Byte, chemin As String
chemin = ThisWorkbook.Path
Set classeur_a_lire = GetObject(chemin & "text.xls")
For x = 1 To 4
For y = 1 To 2
info(x, y) = classeur_a_lire.Sheets(1).Cells(x, y)
Next y
Next x
MsgBox "lecture terminée"
For x = 1 To 4
MsgBox info(x, 1) & " " & info(x, 2)
Next x
End Sub

Merci d'avance

Jean



Avatar
Michel Pierron
Bonjour Jean;
Est-tu sur que le classeur qui comporte cette macro a été préalablement
enregistré ?
Sinon, la variable chemin est vide !

MP

"Jean" a écrit dans le message de news:
441be757$0$6686$
Bonjour,

j'ai ci-dessous un code pour aller lire un classeur fermé.
sur la ligne : Set classeur_a_lire = GetObject(chemin & "text.xls")
il me donne une erreur "Fichier ou classe introuvable" , mon fichier
existe bin au bon endroit.
cela viendrait de la classe. que faire ?

Sub lecture()
Dim classeur_a_lire As Workbook
Dim info(1 To 4, 1 To 2), x As Byte, y As Byte, chemin As String
chemin = ThisWorkbook.Path
Set classeur_a_lire = GetObject(chemin & "text.xls")
For x = 1 To 4
For y = 1 To 2
info(x, y) = classeur_a_lire.Sheets(1).Cells(x, y)
Next y
Next x
MsgBox "lecture terminée"
For x = 1 To 4
MsgBox info(x, 1) & " " & info(x, 2)
Next x
End Sub

Merci d'avance

Jean



Avatar
Michel Pierron
Oups; j'avions point vu la réponse de Daniel.

MP

"Jean" a écrit dans le message de news:
441be757$0$6686$
Bonjour,

j'ai ci-dessous un code pour aller lire un classeur fermé.
sur la ligne : Set classeur_a_lire = GetObject(chemin & "text.xls")
il me donne une erreur "Fichier ou classe introuvable" , mon fichier
existe bin au bon endroit.
cela viendrait de la classe. que faire ?

Sub lecture()
Dim classeur_a_lire As Workbook
Dim info(1 To 4, 1 To 2), x As Byte, y As Byte, chemin As String
chemin = ThisWorkbook.Path
Set classeur_a_lire = GetObject(chemin & "text.xls")
For x = 1 To 4
For y = 1 To 2
info(x, y) = classeur_a_lire.Sheets(1).Cells(x, y)
Next y
Next x
MsgBox "lecture terminée"
For x = 1 To 4
MsgBox info(x, 1) & " " & info(x, 2)
Next x
End Sub

Merci d'avance

Jean



Avatar
JB
Il ne faut pas oublier de fermer le fichier text.xls (masqué)

Windows("text.xls").Close

JB
Avatar
michdenis
Bonjour Jean,

| j'ai ci-dessous un code pour aller lire un classeur fermé.

Je crois que cet énoncé outrepasse la réalité :

A ) Le classeur s'ouvre bien...
B ) Si tu as des événements définis dans le ThisWorkbook comme
par exemple ... Workbook_Open ... ils s'exécuteront
C ) Cette façon de procéder est pernicieuse car l'interface "Feuille de calcul"
étant masqué l'usager à l'IMPRESSION que le classeur n'est pas ouvert et
pourtant si tu regardes dans la fenêtre des projets VBA, tu verras bien ce
dernier ouvert ...En conséquence si après une première exécution du code
tu ne fermes pas le classeur masqué.... ta procédure va ouvrir plusieurs fois
le même fichier et les conséquences qui en découle. Pour fermer ce fichier,
il faut utiliser la même ligne de code qu'un fichier ouvert normalementr.
Workbooks("NomDuFichier.xls").close True or False selon que tu veuilles
sauvegarder les modifications ou non, le cas échéant.


D ) Voici une procédure de John Walkenbach pour un classeur fermé :

'-----------------------
Sub test()
A = GetValue("C:", "classeur1.xls", "Feuil1", "A1")
End Sub
'-----------------------

Public Function GetValue(ByVal path, ByVal file, _
ByVal sheet, ByVal ref) As Variant

' Macro XL4 Merci à John Walkenbach
' ============================= ' Retrieves a value from a closed workbook

Dim Arg As String

' Make sure the file exists
If Right(path, 1) <> "" Then path = path & ""
If Dir(path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If

' Create the argument
Arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Address(, , xlR1C1)

' Execute an XLM macro
GetValue = Application.ExecuteExcel4Macro(Arg)
DoEvents

End Function
'-----------------------


IL y a une autre façon de faire ;

'------------------------------
Sub test()
GetValuesFromAClosedWorkbook "C:", "classeur1.xls", "Feuil1", "A1:H25"
End Sub
'------------------------------

Sub GetValuesFromAClosedWorkbook(fPath As String, _
fName As String, sName, cellRange As String)
'Ron De Bruin, mpep

With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "[" & fName & "]" _
& sName & "'!" & cellRange
.Value = .Value
End With
End Sub
'----------------------------------

IL est toujours possible de le faire aussi en utilisant ADO (activex data object)


Salutations!




"Jean" a écrit dans le message de news: 441be757$0$6686$
Bonjour,

j'ai ci-dessous un code pour aller lire un classeur fermé.
sur la ligne : Set classeur_a_lire = GetObject(chemin & "text.xls")
il me donne une erreur "Fichier ou classe introuvable" , mon fichier existe
bin au bon endroit.
cela viendrait de la classe. que faire ?

Sub lecture()
Dim classeur_a_lire As Workbook
Dim info(1 To 4, 1 To 2), x As Byte, y As Byte, chemin As String
chemin = ThisWorkbook.Path
Set classeur_a_lire = GetObject(chemin & "text.xls")
For x = 1 To 4
For y = 1 To 2
info(x, y) = classeur_a_lire.Sheets(1).Cells(x, y)
Next y
Next x
MsgBox "lecture terminée"
For x = 1 To 4
MsgBox info(x, 1) & " " & info(x, 2)
Next x
End Sub

Merci d'avance

Jean