cs_syl2
Messages postés49Date d'inscriptionlundi 19 mai 2003StatutMembreDernière intervention 7 juillet 2005
-
19 août 2004 à 14:27
cs_syl2
Messages postés49Date d'inscriptionlundi 19 mai 2003StatutMembreDernière intervention 7 juillet 2005
-
20 août 2004 à 15:11
Bonjour à tous,
je suis en train de réaliser une application VBA Access qui consiste à extraire des données de ma base pour générer des tableaux dynamiques dans Excel.
Quand je clique sur mon bouton sur mon formulaire, je voudrais tester si le fichier Excel est déjà lancé ... En effet, si c le cas, cela ne posera pas de problèmes si c n'est dans le cas où l'utilisateur change l'onglet ... Les valeurs récupérés ne correspondront donc plus à l'onglet actif, et quand je récupère mes valeurs de mes cellules cela posera un gros pb :).
J'ai implémenté le code suivant :
Public Function IsFileOpen(Filename As String)
On Error Resume Next
Set wbWorld = appWorld.Workbooks(Filename)
If Err <> 0 Then
MsgBox "le classeur n'est pas ouvert"
Else
MsgBox "le classeur est ouvert"
End If
Set wbWorld = Nothing
End Function
mais dans tt les cas il passe dans le Else, que mon fichier soit lancé ou non ...
cs_syl2
Messages postés49Date d'inscriptionlundi 19 mai 2003StatutMembreDernière intervention 7 juillet 20051 19 août 2004 à 20:28
Salut,
le truc c que c pas un problème que le fichier soit ouvert et ceci ne sera pas une erreur ...
Je peux tout à fait écrire dans mon fichier Excel s'il est ouvert ou fermé ... mais moi je veux savoir si le fichier est ouvert pour après afficher un message pour dire de fermer le fichier avant d'effectuer mon traitement. Tout simplement car si le fichier reste ouvert et que l'utilisateur joue avec les onglets, cela sera un problème au niveau de la récupé&ration des valeurs de cellules
Zigarn
Messages postés106Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention26 janvier 2005 20 août 2004 à 10:11
Ce que je veux dire, c'est qu'au lieu de tester la non présence d'erreur, testes plutôt l'erreur que tu cherche.
Public Function IsFileOpen(Filename As String) As Boolean
IsFileOpen = False 'C'est une fonction : il faut bien renvoyer une valeur
On Error Resume Next
appWorld.Workbooks(Filename).Activate
If (Err = 9) Then 'Erreur "L'indice n'appartient pas à la sélection."
MsgBox "le classeur n'est pas ouvert"
Else
MsgBox "le classeur est ouvert"
IsFileOpen = True
End If
End Function
-------------------------------------------------
Débutant ... mais pas pour longtemps !
cs_syl2
Messages postés49Date d'inscriptionlundi 19 mai 2003StatutMembreDernière intervention 7 juillet 20051 20 août 2004 à 15:11
Salut,
Le problème que je rencontre, c'est que si mon fichier est ouvert, je peux avoir des erreurs, mais je ne le saurais qu'au moment du traitement .... Si l'utilisateur ne fait pas l'idiot, cela marchera parfaitement ... Mais comme de base, un développeur doit se placer dans la peau de l'utilisateur Landa qui connait rien, ben il faut gérer
je fais des différences entre mes colonnes et donc si la cellule A48 par exemple est en chaine de caractères sur l'onglet toto et que le traitement récupère cette cellule ... cela posera un gros problème, alors qu'en traitement normal, la colonne A48 sur l'onglet tata est bien en numérique
Donc comme c un problème qui peut uniquement être rencontré durant le traitement, j'aimerais éviter de faire 1 fois le traitement, renvoyer l'erreur de type : Type incohérent car il essayera de récupérer une string dans un entier, et ensuite d'afficher l'info à l'utilisateur en cas d'erreur.