OVH Cloud OVH Cloud

ouverture de classeur et/ou activation par macro

7 réponses
Avatar
Zoltan
Salut à tous,

quelle serait la meilleure procédure à faire pour aller d'un classeur
à un autre avec une macro?

j'ai bien fait des macros qui le font, mais le problème est que si
le classeur n'est pas ouvert ça plante,
donc il faudrait que ce soit
ou
une activation s'il est ouvert
ou
l'ouvrir s'il ne l'est pas

merci de vos conseils


--
http://perso.wanadoo.fr/aquabidule/
http://www.rouhling.net
http://www.aquariumdudiscus.fr

7 réponses

Avatar
Hervé Branchu
Bonjour Zoltan

La référence suivante permet de tester si un fichier excel est ouvert
http://support.microsoft.com/default.aspx?scid=KB;EN-US;213383

dixit le code ci dessous
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

A partir du moment ou le fichier est fermer on doit pouvoir l'ouvrir au besoin

--
Bonne Journée
=================================================== Hervé Branchu, Sitel France pour l'Assistance Utilisateur Microsoft

"Zoltan" a écrit dans le message de news:

Salut à tous,

quelle serait la meilleure procédure à faire pour aller d'un classeur
à un autre avec une macro?

j'ai bien fait des macros qui le font, mais le problème est que si
le classeur n'est pas ouvert ça plante,
donc il faudrait que ce soit
ou
une activation s'il est ouvert
ou
l'ouvrir s'il ne l'est pas

merci de vos conseils


--
http://perso.wanadoo.fr/aquabidule/
http://www.rouhling.net
http://www.aquariumdudiscus.fr




Avatar
Clément Marcotte
sub ouvre()
on error goto piegeerreur
-----
-----
-----
exit sub
piegeerreur:
select case err
case le numéro d'erreur pour fichier non ouvert (disponible à quelque
part dans l'aide)
worbooks.open le nom du fichier
resume

case else
end select
end sub




"Zoltan" a écrit dans le message de
news:
Salut à tous,

quelle serait la meilleure procédure à faire pour aller d'un
classeur

à un autre avec une macro?

j'ai bien fait des macros qui le font, mais le problème est que si
le classeur n'est pas ouvert ça plante,
donc il faudrait que ce soit
ou
une activation s'il est ouvert
ou
l'ouvrir s'il ne l'est pas

merci de vos conseils


--
http://perso.wanadoo.fr/aquabidule/
http://www.rouhling.net
http://www.aquariumdudiscus.fr




Avatar
sabatier
bonsoir zoltan
si ta macro ouvre le classeur avec
Workbooks.Open FileName:="C:tartanpion.xls"
il te suffit ensuite de faire
Workbooks("tartanpion.xls").Activate
pour y revenir si tu l'as quitté sans le fermer

mais j'ai du mal comprendre la question et je vais m'auto-punir en
doublant la punition d'AV, sauf que je vais remplacer le gothique par
l'arabe, ce qui nécessitera que je tourne mon clavier dans l'autre sens
pour pouvoir écrire de droite à gauche

jps

Zoltan wrote:

Salut à tous,

quelle serait la meilleure procédure à faire pour aller d'un classeur
à un autre avec une macro?

j'ai bien fait des macros qui le font, mais le problème est que si
le classeur n'est pas ouvert ça plante,
donc il faudrait que ce soit
ou
une activation s'il est ouvert
ou
l'ouvrir s'il ne l'est pas

merci de vos conseils

--
http://perso.wanadoo.fr/aquabidule/
http://www.rouhling.net
http://www.aquariumdudiscus.fr


Avatar
MacBob
C'est pas le clavier qu'il faut retourner, c'est l'écran pffffffffffffff!!!

MacBob 8°)))

Le 19/08/03 18:44, dans , « sabatier »
a écrit :

bonsoir zoltan
si ta macro ouvre le classeur avec
Workbooks.Open FileName:="C:tartanpion.xls"
il te suffit ensuite de faire
Workbooks("tartanpion.xls").Activate
pour y revenir si tu l'as quitté sans le fermer

mais j'ai du mal comprendre la question et je vais m'auto-punir en
doublant la punition d'AV, sauf que je vais remplacer le gothique par
l'arabe, ce qui nécessitera que je tourne mon clavier dans l'autre sens
pour pouvoir écrire de droite à gauche

jps

Zoltan wrote:

Salut à tous,

quelle serait la meilleure procédure à faire pour aller d'un classeur
à un autre avec une macro?

j'ai bien fait des macros qui le font, mais le problème est que si
le classeur n'est pas ouvert ça plante,
donc il faudrait que ce soit
ou
une activation s'il est ouvert
ou
l'ouvrir s'il ne l'est pas

merci de vos conseils

--
http://perso.wanadoo.fr/aquabidule/
http://www.rouhling.net
http://www.aquariumdudiscus.fr




Avatar
Zoltan
C'est pas le clavier qu'il faut retourner, c'est l'écran
pffffffffffffff!!!


z'avez rien compris, c'est le bonhomme qu'il faut tourner
pfffffffffffffffffff ! ! ! aussi

Avatar
Zoltan
comment mettre un bouton et lui affecter cette procédure?
j'ai oublié de préciser que j'ai fais un bouton avec la boite à outils

et j'ai ça :
Private Sub CommandButton1_Click()

End Sub

le problème c'est que la procédure commence par :
Sub TestFileOpened()

donc je pense qu'il y a un conflit entre les deux "Sub"
qq chose à enlever mais quoi?

Avatar
Zoltan
Private Sub CommandButton1_Click()

End Sub

le problème c'est que la procédure commence par :
Sub TestFileOpened()

donc je pense qu'il y a un conflit entre les deux "Sub"
qq chose à enlever mais quoi?


ok, ça fonctionne maintenant, j'ai remplacé
Sub TestFileOpened()
par
Sub CommandButton1_Click()

le souci c'est que si le fichier est ouvert il dit
MsgBox "File already in use!"
mais ne l'active pas, pourquoi n'exécute -t-il pas la suite de
la procédure?