Type d'argument Byref incompatible

Tiobi

XLDnaute Junior
Bonjour à tous,

Quel type de variable dois-je déclarer afin de pouvoir transmettre le nom de fichier à la fonction Isopen ?
Actuellement je reçois le message:
Type d'argument Byref incompatible

Sub essai()
Dim NomdeFichier

NomdeFichier = "Agenda.xls"
If IsOpen(NomdeFichier) Then MsgBox NomdeFichier & " fermé"
End Sub



Function IsOpen(Classeur$) As Boolean
On Error Resume Next
IsOpen = Not Workbooks(Classeur) Is Nothing
Err.Clear
End Function
 

Pierrot93

XLDnaute Barbatruc
Re : Type d'argument Byref incompatible

Bonjour Tiobi

il faut transmettre à la fonction, le même type de donnée que celui déclaré, entre autre pour ton cas un argument de type "string" :

Code:
Dim NomdeFichier As String

bonne journée
@+
 

Tiobi

XLDnaute Junior
Re : Type d'argument Byref incompatible

Merci à tous les deux.

J'avais bien déclaré ma variable en type string mais je recevais le message
Type d'argument Byref incompatible

En fait je pense que cela provenais du $ de (classeur$)que je viens de retirer

Function IsOpen(Classeur$) As Boolean
On Error Resume Next
IsOpen = Not Workbooks(Classeur) Is Nothing
Err.Clear
End Function

A+
 

Pierrot93

XLDnaute Barbatruc
Re : Type d'argument Byref incompatible

Re

le caractère "$" est le caractère de déclaration de type de donnée String... Le fait de l'enlever et de déclarer aucun type fait que par défaut tu as des déclarations de type "variant"... Pas trop top à mon avis...

@+
 

Pierrot93

XLDnaute Barbatruc
Re : Type d'argument Byref incompatible

Re

pour info, fonctionne chez moi les variables déclarées ainsi:

Code:
Option Explicit
Sub essai()
Dim NomdeFichier As String
NomdeFichier = "classeur1"
If Not IsOpen(NomdeFichier) Then MsgBox NomdeFichier & " fermé"
End Sub
Function IsOpen(Classeur$) As Boolean
On Error Resume Next
IsOpen = Not Workbooks(Classeur) Is Nothing
Err.Clear
End Function

@+
 

Discussions similaires

Statistiques des forums

Discussions
312 299
Messages
2 086 986
Membres
103 419
dernier inscrit
mk29