Test fichier xlsx déjà ouvert

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
je bloque sur un test de fichier .xlsx déjà ouvert j'ai l'instruction :
Application.Dialogs(xlDialogOpen).Show
J'ai repris une fonction qui teste si un fichier Xls nommé est ouvert ( il fonctionne depuis .... 10ans !)
mais pas à la suite de cette instruction ,car forcément après le clic "Ouvrir" , la fonction dit qu'il est déjà ouvert
!!!!
Je n'ai pas trouvé dans cette instruction des paramètres qui testent si ouvert/fermé ?
Y a t-il , de nos jours (car j'ai trouvé des codes usines à gaz de 2003 ) un tout petit bout de code voire instruction directe pour y remédier ?
Merci bien
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour tous
Merci , mais ça je l'ai depuis le début pourtant je l"avais précisé !!
J'ai repris une fonction qui teste si un fichier Xls nommé est ouvert ( il fonctionne depuis .... 10ans !)
c'est exactement la même!, bien lire la suite aussi> c'est ce qui fait que je tourne en rond !!
A mon avis que le pb vient de l'explorateur il n'y a pas de contrôle sur "Ouvrir" afin de savoir si le fichier select est ouvert
Si je saute cette fonction là c'est windows/excel qui met le traditionnel message Dejà ouvert ..etc mais ensuite le code Bug
 

CHALET53

XLDnaute Barbatruc
Comme ceci (avec des infos glanées ici et ailleurs), est-ce que ça répond à la question . A+

Dim testouvert As Integer
Sub essai1()
Dim FileName As String, fichier As String
FileName = Application.GetOpenFilename("Classeurs Excel(*.xls*),*.xls*, Macros complémentaires (*.xla),*.xla")
MsgBox "Vous avez-sélectionné : " & FileName, vbInformation, "Illustration - GetOpenFilename"

If FileName = "Faux" Or FileName = "" Then MsgBox ("Aucun fichier sélectionné"): Exit Sub

For i = Len(FileName) To 1 Step -1
If Mid(FileName, i, 1) = "\" Then
fichier = Right(FileName, (Len(FileName) - i))
i = 1
End If
Next i

Call FichierOuvert(fichier)
If testouvert = 0 Then MsgBox ("fichier ouvert"): Exit Sub
Workbooks.Open FileName:=FileName
'End If
End Sub
Function FichierOuvert(fic As String)
On Error Resume Next
Set FichierOuvert = Workbooks(fic)
testouvert = Err
End Function
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
Merci Chalet , rien que "Application.GetOpenFilename" m'a remis sur la bonne route j'ai juste repris :
Code:
FileName = application.GetOpenFilename(l(*.xlsx*),*.xlsx*)
j'ai même selectionné mon répertoire avant pour arriver directement dessus, puis repris ma fonction Fic_ouvert et tout est nickel !!
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour
Il y a quand même un soucis !
Si je ne mets pas de fichier et clique ANNULER , dans la suite (via msgbox) cela me donne le nom du fichier de la liste ( il n'y en a qu'un dans mon cas) et ensuite j'ai ERREUR Fichier introuvable ???
cela doit provenir d'un manque de paramètre dans getfileOpen si Cancel ??
 

CHALET53

XLDnaute Barbatruc
Re,

Dans ma procédure ci-dessus, j'avais rajouté un test qui me semble fonctionner si je clique sur Annuler dans la fenêtre d'ouverture d'un fichier :

If FileName = "Faux" Or FileName = "" Then MsgBox ("Aucun fichier sélectionné"): Exit Sub

a+
 

Discussions similaires

Réponses
6
Affichages
949

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG