oui mais soit il me met tous les fichier déjà ouvert soit (si j'enleve les not apres les if ) il ouvre à chaque fois Mensuel (soit en normal soit en lecture seule)
oui mais soit il me met tous les fichier déjà ouvert soit (si j'enleve les not apres les if ) il ouvre à chaque fois Mensuel (soit en normal soit en lecture seule)
Envoyé par bbiloui j'ai vu il faut rajouter un ".xls" sur l'appel des fonction de test d'ouverture...Envoyé par Nom
... j'ai édité et corrigé le code...
Code : Sélectionner tout - Visualiser dans une fenêtre à part If Not FichierEstOuvert("C:\Mes documents\Angelo\Conception\Apac Noisy\Domaine Chèque\Mensuel.xls") Then
semble marché je vais faire des tests plus appronfondis pour voir
un truc m'echappe quand même :
dans
on a besoin de mettre le .xls
Code : Sélectionner tout - Visualiser dans une fenêtre à part If Not FichierEstOuvert("C:\Mes documents\Angelo\Conception\Apac Noisy\Domaine Chèque\Mensuel1.xls") Then
et pour
inutile : [/code]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 'Si le fichier 1 n'est pas ouvert je l'ouvre... Workbooks.Open ("C:\Mes documents\Angelo\Conception\Apac Noisy\Domaine Chèque\Mensuel1")
Vérifie parce que là tu m'étonnerais beaucoup. Cela voudrait dire que tu as toujours l'erreur 9 et donc que VBA a un pb ce que je ne crois pas.non la il m'affiche à chaque fois le message Fichier utilisé par un autre utilisateur ou déjà ouvert pourtant rien n'est ouvert
Donc vérifie qu'excel n'est pas ouvert une deuxième fois... sur ton propre poste
Tu dis
NB - Ce code fonctionne parfaitement chez moi
ben la fonction ...FichierEstOuvert essai d'ouvrir en lecture seule le fichier donné en paramétre...
pour l'ouverture du classeur Excel ... la fonciton Workbooks.Open .. ouvre le fichier en paramétre.. mais comme celui-ci est un fichier excel... celle-ci rajoute automatiquement l'extension .xls... si aucune extension n'est précisée...
je vais t'etonner alors car j'ai même redémarrer le pc, ouvert le fichier ou j'ai mis la macro que tu ma donner lancer la macro et pareilVérifie parce que là tu m'étonnerais beaucoup. Cela voudrait dire que tu as toujours l'erreur 9 et donc que VBA a un pb ce que je ne crois pas.
Donc vérifie qu'excel n'est pas ouvert une deuxième fois... sur ton propre poste
Tu dis
NB - Ce code fonctionne parfaitement chez moi
en + j'ai vonlontairement mis un mauvais chemin pour les fichiers et pareil il me dis même pas que le chemin est pas bon
Ta question n'était pas sur le chemin mais sur l'ouverture d'un fichier déjà ouvert. S'il y a une erreur de chemin, le code d'erreur n'est pas 9 mais 1004 et ce n'était pas la question.
A+
salut ouskel'n'or .. est-tu sur que le dernier code que tu as posté et le bon ...
2 Choses la boucle for ..
c'est pas plutot 1 to 3...
Code : Sélectionner tout - Visualiser dans une fenêtre à part For i = 1 To 1
au premier lancement tu n'as aucun fichier ouvert... donc Worbooks(NomFich).Activate provoque une erreur ( ? 9) .
Message : Fichier utilisé...
Bonjour tout le monde
J'ai une question par rapport à ton code Ouskel'n'or
En fait pourquoi n'y a t il pas besoin d'un "end if" est ce a cause de la gestion d'erreur qui le rends inutile ??Envoyé par ouskel'n'or
PS je savais pas ou mettre ce post dite moi s'il n'est pas a sa place..
Vu que le posteur initial n'a plus daigné nous dire où en était son problème, il n'y a pas de mal à poser ta question ici.
Réponse:
Il ne faut pas de End If si l'action suit le Then sur la même ligne.
Je te remercie AlainTech la réponse était toute simple et peut permettre d'aléger le code, mais peut etre perd on en lisibilité ou plutot c'est une question d'habitude.
Encore merci et bonne continuation
Bien que, sans doute à cause de l'habitude, je trouve très lisible un "if ... then... LeTraitement" sur une même ligne, tu peux le mettre sur trois lignes
C'est pas gênant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if err <> 0 then Workbooks.Open Filename:=NomDuFichier endif
oublié de mettre délestageEnvoyé par AlainTech
finalement ce traitement m'ai plus utile j'ai changer de "stratégie " enfin on m'a fais changer et donc un seul utilisateur à la fois sera amené a ouvrir mes fichiers ...
Salut,
Le code de bouley est dérivé de ce code je pense:
https://support.microsoft.com/en-us/kb/291295
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 Sub TestFileOpened() ' Test to see if the file is open. If IsFileOpen("c:\Book2.xls") Then ' Display a message stating the file in use. MsgBox "File already in use!" ' ' Add code here to handle case where file is open by another ' user. ' Else ' Display a message stating the file is not in use. MsgBox "File not in use!" ' Open the file in Microsoft Excel. Workbooks.Open "c:\Book2.xls" ' ' Add code here to handle case where file is NOT open by another ' user. ' End If End Sub ' This function checks to see if a file is open or not. If the file is ' already open, it returns True. If the file is not open, it returns ' False. Otherwise, a run-time error occurs because there is ' some other problem accessing the file. Function IsFileOpen(filename As String) Dim filenum As Integer, errnum As Integer On Error Resume Next ' Turn error checking off. filenum = FreeFile() ' Get a free file number. ' Attempt to open the file and lock it. Open filename For Input Lock Read As #filenum Close filenum ' Close the file. errnum = Err ' Save the error number that occurred. On Error GoTo 0 ' Turn error checking back on. ' Check to see which error occurred. Select Case errnum ' No error occurred. ' File is NOT already open by another user. Case 0 IsFileOpen = False ' Error number for "Permission Denied." ' File is already opened by another user. Case 70 IsFileOpen = True ' Another error occurred. Case Else Error errnum End Select End Function
@+
Bonjour,
Avez vous essayé ce code, qui vérifie à l'ouverture du fichier s'il est en lecture seule ? à mettre dans THISWORKBOOK
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Private Sub Workbook_Open() isreadonly End Sub Sub isreadonly() If ThisWorkbook.ReadOnly Then MsgBox "Vous ne pouvez ouvrir actuellement ce fichier" ThisWorkbook.Close False End If End Sub
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager