la fonction suivante, si je veux l'appeler avec des variables,
me produit toujours le message d'erreur
*type d'argument ByRef incompatible"
Function extract(dsheet As String, dest_row As Integer, ex_row As Integer,
last_column As String) As Integer
Sheets(dsheet).Range("A" & dest_row & ":" & last_column & dest_row) =
ActiveSheet.Range("A" & ex_row & ":" & last_column & ex_row).Value
extract = 1
End Function
Sub extr()
Dim ddsheet, colonne As String
Dim dest_row, b, s As Integer
ddsheet = "Feuil2"
dest_row = 2
b = 5
colonne = "AD"
s = extract(ddsheet, dest_row, b, colonne)
End Sub
mais s = extract("Feuil2", 2, 5, "AD") fonctionne parfaitement
Où se cache l'erreur ?
Merci
P.S. : (Le resultat de la fonction (=1) ne sert que pour fixer
la variable s, ce qui compte est son action d'extraire,
si elle fonctionnait, bien-sûr !)
s = extract("Feuil2", 2, 5, "AD") End Sub '-------------------------------
Ton truc fonctionne très bien si tu prends le temps de déclarer chacune de tes variables dans ta procédure : Le principe est simple : Ta fonction a des paramètres dont tu as définis le type. Elle s'attend donc à recevoir des paramètres qui vont se fondre à leur type. Une variable non déclarée est de type Variant ....Dans un langage plus imagé, c'est essayé d'entrer dans les machins trucs pour enfant une forme géométrique de type triangle dans un cercle. Tous les enfants te diront que cela ne fonctionne pas ! ;-)
'--------------------------------- Sub extr() Dim ddsheet As String, colonne As String Dim dest_row As Integer, b As Integer, s As Integer
ddsheet = "Feuil2" dest_row = 2 b = 5 colonne = "AD" s = extract(ddsheet, dest_row, b, colonne) End Sub '---------------------------------
L'autre alternative est de déclarer ta fonction comme ceci : En utilisant l'expression ByVal dans la déclaration des variables de ta fonction, tu demandes à ta fonction, d'extraire la valeur de la mémoire occupée par la variable. Par défaut, Excel utilise le passage de variables par "Byref" (par référence) c'est à dire, elle passe une adresse de mémoire. Et la place mémoire occupée par une variable est différente selon le type de variables définies.
'---------------------------------- Function extract(ByVal dsheet As String, ByVal dest_row As _ Integer, ByVal ex_row As Integer, ByVal last_column As String) As Integer
Sheets(dsheet).Range("A" & dest_row & ":" & last_column & dest_row) = _ ActiveSheet.Range("A" & ex_row & ":" & last_column & ex_row).Value extract = 1 End Function '---------------------------------- Sub extr() Dim ddsheet, colonne Dim dest_row, b, s
ddsheet = "Feuil2" dest_row = 2 b = 5 colonne = "AD" s = extract(ddsheet, dest_row, b, colonne) End Sub '----------------------------------
Salutations!
"JeNeVois" a écrit dans le message de news:
Bonsoir,
la fonction suivante, si je veux l'appeler avec des variables, me produit toujours le message d'erreur *type d'argument ByRef incompatible"
Function extract(dsheet As String, dest_row As Integer, ex_row As Integer, last_column As String) As Integer Sheets(dsheet).Range("A" & dest_row & ":" & last_column & dest_row) ActiveSheet.Range("A" & ex_row & ":" & last_column & ex_row).Value extract = 1 End Function
Sub extr() Dim ddsheet, colonne As String Dim dest_row, b, s As Integer
ddsheet = "Feuil2" dest_row = 2 b = 5 colonne = "AD" s = extract(ddsheet, dest_row, b, colonne) End Sub
mais s = extract("Feuil2", 2, 5, "AD") fonctionne parfaitement Où se cache l'erreur ?
Merci
P.S. : (Le resultat de la fonction (=1) ne sert que pour fixer la variable s, ce qui compte est son action d'extraire, si elle fonctionnait, bien-sûr !)
Bonjour JeNeVois,
Comme ceci devrait être suffisant :
'-------------------------------
Function extract(dsheet As String, dest_row As _
Integer, ex_row As Integer, last_column As String) As Integer
s = extract("Feuil2", 2, 5, "AD")
End Sub
'-------------------------------
Ton truc fonctionne très bien si tu prends le temps de déclarer chacune de tes variables dans ta procédure :
Le principe est simple : Ta fonction a des paramètres dont tu as définis le type. Elle s'attend donc à recevoir des paramètres qui
vont se fondre à leur type. Une variable non déclarée est de type Variant ....Dans un langage plus imagé, c'est essayé d'entrer dans
les machins trucs pour enfant une forme géométrique de type triangle dans un cercle. Tous les enfants te diront que cela ne
fonctionne pas ! ;-)
'---------------------------------
Sub extr()
Dim ddsheet As String, colonne As String
Dim dest_row As Integer, b As Integer, s As Integer
ddsheet = "Feuil2"
dest_row = 2
b = 5
colonne = "AD"
s = extract(ddsheet, dest_row, b, colonne)
End Sub
'---------------------------------
L'autre alternative est de déclarer ta fonction comme ceci :
En utilisant l'expression ByVal dans la déclaration des variables de ta fonction, tu demandes à ta fonction, d'extraire la valeur de
la mémoire occupée par la variable. Par défaut, Excel utilise le passage de variables par "Byref" (par référence) c'est à dire, elle
passe une adresse de mémoire. Et la place mémoire occupée par une variable est différente selon le type de variables définies.
'----------------------------------
Function extract(ByVal dsheet As String, ByVal dest_row As _
Integer, ByVal ex_row As Integer, ByVal last_column As String) As Integer
Sheets(dsheet).Range("A" & dest_row & ":" & last_column & dest_row) = _
ActiveSheet.Range("A" & ex_row & ":" & last_column & ex_row).Value
extract = 1
End Function
'----------------------------------
Sub extr()
Dim ddsheet, colonne
Dim dest_row, b, s
ddsheet = "Feuil2"
dest_row = 2
b = 5
colonne = "AD"
s = extract(ddsheet, dest_row, b, colonne)
End Sub
'----------------------------------
Salutations!
"JeNeVois" <JeNeVois@discussions.microsoft.com> a écrit dans le message de news:
55D6B52D-9F56-41F8-8917-DC43A5F09C38@microsoft.com...
Bonsoir,
la fonction suivante, si je veux l'appeler avec des variables,
me produit toujours le message d'erreur
*type d'argument ByRef incompatible"
Function extract(dsheet As String, dest_row As Integer, ex_row As Integer,
last_column As String) As Integer
Sheets(dsheet).Range("A" & dest_row & ":" & last_column & dest_row) ActiveSheet.Range("A" & ex_row & ":" & last_column & ex_row).Value
extract = 1
End Function
Sub extr()
Dim ddsheet, colonne As String
Dim dest_row, b, s As Integer
ddsheet = "Feuil2"
dest_row = 2
b = 5
colonne = "AD"
s = extract(ddsheet, dest_row, b, colonne)
End Sub
mais s = extract("Feuil2", 2, 5, "AD") fonctionne parfaitement
Où se cache l'erreur ?
Merci
P.S. : (Le resultat de la fonction (=1) ne sert que pour fixer
la variable s, ce qui compte est son action d'extraire,
si elle fonctionnait, bien-sûr !)
s = extract("Feuil2", 2, 5, "AD") End Sub '-------------------------------
Ton truc fonctionne très bien si tu prends le temps de déclarer chacune de tes variables dans ta procédure : Le principe est simple : Ta fonction a des paramètres dont tu as définis le type. Elle s'attend donc à recevoir des paramètres qui vont se fondre à leur type. Une variable non déclarée est de type Variant ....Dans un langage plus imagé, c'est essayé d'entrer dans les machins trucs pour enfant une forme géométrique de type triangle dans un cercle. Tous les enfants te diront que cela ne fonctionne pas ! ;-)
'--------------------------------- Sub extr() Dim ddsheet As String, colonne As String Dim dest_row As Integer, b As Integer, s As Integer
ddsheet = "Feuil2" dest_row = 2 b = 5 colonne = "AD" s = extract(ddsheet, dest_row, b, colonne) End Sub '---------------------------------
L'autre alternative est de déclarer ta fonction comme ceci : En utilisant l'expression ByVal dans la déclaration des variables de ta fonction, tu demandes à ta fonction, d'extraire la valeur de la mémoire occupée par la variable. Par défaut, Excel utilise le passage de variables par "Byref" (par référence) c'est à dire, elle passe une adresse de mémoire. Et la place mémoire occupée par une variable est différente selon le type de variables définies.
'---------------------------------- Function extract(ByVal dsheet As String, ByVal dest_row As _ Integer, ByVal ex_row As Integer, ByVal last_column As String) As Integer
Sheets(dsheet).Range("A" & dest_row & ":" & last_column & dest_row) = _ ActiveSheet.Range("A" & ex_row & ":" & last_column & ex_row).Value extract = 1 End Function '---------------------------------- Sub extr() Dim ddsheet, colonne Dim dest_row, b, s
ddsheet = "Feuil2" dest_row = 2 b = 5 colonne = "AD" s = extract(ddsheet, dest_row, b, colonne) End Sub '----------------------------------
Salutations!
"JeNeVois" a écrit dans le message de news:
Bonsoir,
la fonction suivante, si je veux l'appeler avec des variables, me produit toujours le message d'erreur *type d'argument ByRef incompatible"
Function extract(dsheet As String, dest_row As Integer, ex_row As Integer, last_column As String) As Integer Sheets(dsheet).Range("A" & dest_row & ":" & last_column & dest_row) ActiveSheet.Range("A" & ex_row & ":" & last_column & ex_row).Value extract = 1 End Function
Sub extr() Dim ddsheet, colonne As String Dim dest_row, b, s As Integer
ddsheet = "Feuil2" dest_row = 2 b = 5 colonne = "AD" s = extract(ddsheet, dest_row, b, colonne) End Sub
mais s = extract("Feuil2", 2, 5, "AD") fonctionne parfaitement Où se cache l'erreur ?
Merci
P.S. : (Le resultat de la fonction (=1) ne sert que pour fixer la variable s, ce qui compte est son action d'extraire, si elle fonctionnait, bien-sûr !)
[Lord]
Salut, il me semble que si tu définis explicitement des types pour tes arguments ds ta fonction, il faut définir également de manière explicite les types des variables que tu utilises. En VBA, je me suis rendu compte que séparer les variables déclarées par une virgule comme "Dim ddsheet, colonne As String" signifie que tu déclares colonne comme string mais pas ddsheet! Tu la déclares c'est toutdonc il faut écrire explicitement tous les types (regarde les définitions) dans extr(). J'ai testé et ca marche.
Public Function extract(dsheet As String, dest_row As Integer, ex_row As Integer, last_column As String) As Integer
Sub extr() Dim ddsheet As String, colonne As String Dim dest_row As Integer, b As Integer, s As Integer
ddsheet = "Feuil2" dest_row = 2 b = 5 colonne = "AD" s = extract(ddsheet, dest_row, b, colonne) End Sub
Bonsoir,
la fonction suivante, si je veux l'appeler avec des variables, me produit toujours le message d'erreur *type d'argument ByRef incompatible"
Function extract(dsheet As String, dest_row As Integer, ex_row As Integer, last_column As String) As Integer Sheets(dsheet).Range("A" & dest_row & ":" & last_column & dest_row) = ActiveSheet.Range("A" & ex_row & ":" & last_column & ex_row).Value extract = 1 End Function
Sub extr() Dim ddsheet, colonne As String Dim dest_row, b, s As Integer
ddsheet = "Feuil2" dest_row = 2 b = 5 colonne = "AD" s = extract(ddsheet, dest_row, b, colonne) End Sub
mais s = extract("Feuil2", 2, 5, "AD") fonctionne parfaitement Où se cache l'erreur ?
Merci
P.S. : (Le resultat de la fonction (=1) ne sert que pour fixer la variable s, ce qui compte est son action d'extraire, si elle fonctionnait, bien-sûr !)
Salut,
il me semble que si tu définis explicitement des types pour tes
arguments ds ta fonction, il faut définir également de manière explicite
les types des variables que tu utilises.
En VBA, je me suis rendu compte que séparer les variables déclarées par
une virgule comme "Dim ddsheet, colonne As String" signifie que tu
déclares colonne comme string mais pas ddsheet! Tu la déclares c'est
toutdonc il faut écrire explicitement tous les types (regarde les
définitions) dans extr(). J'ai testé et ca marche.
Public Function extract(dsheet As String, dest_row As Integer, ex_row As
Integer, last_column As String) As Integer
Sub extr()
Dim ddsheet As String, colonne As String
Dim dest_row As Integer, b As Integer, s As Integer
ddsheet = "Feuil2"
dest_row = 2
b = 5
colonne = "AD"
s = extract(ddsheet, dest_row, b, colonne)
End Sub
Bonsoir,
la fonction suivante, si je veux l'appeler avec des variables,
me produit toujours le message d'erreur
*type d'argument ByRef incompatible"
Function extract(dsheet As String, dest_row As Integer, ex_row As Integer,
last_column As String) As Integer
Sheets(dsheet).Range("A" & dest_row & ":" & last_column & dest_row) =
ActiveSheet.Range("A" & ex_row & ":" & last_column & ex_row).Value
extract = 1
End Function
Sub extr()
Dim ddsheet, colonne As String
Dim dest_row, b, s As Integer
ddsheet = "Feuil2"
dest_row = 2
b = 5
colonne = "AD"
s = extract(ddsheet, dest_row, b, colonne)
End Sub
mais s = extract("Feuil2", 2, 5, "AD") fonctionne parfaitement
Où se cache l'erreur ?
Merci
P.S. : (Le resultat de la fonction (=1) ne sert que pour fixer
la variable s, ce qui compte est son action d'extraire,
si elle fonctionnait, bien-sûr !)
Salut, il me semble que si tu définis explicitement des types pour tes arguments ds ta fonction, il faut définir également de manière explicite les types des variables que tu utilises. En VBA, je me suis rendu compte que séparer les variables déclarées par une virgule comme "Dim ddsheet, colonne As String" signifie que tu déclares colonne comme string mais pas ddsheet! Tu la déclares c'est toutdonc il faut écrire explicitement tous les types (regarde les définitions) dans extr(). J'ai testé et ca marche.
Public Function extract(dsheet As String, dest_row As Integer, ex_row As Integer, last_column As String) As Integer
Sub extr() Dim ddsheet As String, colonne As String Dim dest_row As Integer, b As Integer, s As Integer
ddsheet = "Feuil2" dest_row = 2 b = 5 colonne = "AD" s = extract(ddsheet, dest_row, b, colonne) End Sub
Bonsoir,
la fonction suivante, si je veux l'appeler avec des variables, me produit toujours le message d'erreur *type d'argument ByRef incompatible"
Function extract(dsheet As String, dest_row As Integer, ex_row As Integer, last_column As String) As Integer Sheets(dsheet).Range("A" & dest_row & ":" & last_column & dest_row) = ActiveSheet.Range("A" & ex_row & ":" & last_column & ex_row).Value extract = 1 End Function
Sub extr() Dim ddsheet, colonne As String Dim dest_row, b, s As Integer
ddsheet = "Feuil2" dest_row = 2 b = 5 colonne = "AD" s = extract(ddsheet, dest_row, b, colonne) End Sub
mais s = extract("Feuil2", 2, 5, "AD") fonctionne parfaitement Où se cache l'erreur ?
Merci
P.S. : (Le resultat de la fonction (=1) ne sert que pour fixer la variable s, ce qui compte est son action d'extraire, si elle fonctionnait, bien-sûr !)
anonymousA
bonjour,
si ta fonction a des arguments dont le type de variable est déclaré, il te faut déclarer les arguments que tu passes à la fonction selon le même type de variable. Le fait que ca marche quand tu mets "Feuil2" vient simplement du fait qu'Excel reconnait que Feuil2 est de type string et donc l'accepte comme étant ByVal. Ta proc pour marcher dans les conditions dans lesquelles tu as déclaré ta fonction serait celle-ci
Sub extr() Dim ddsheet As String, colonne As String Dim dest_row As Integer, b As Integer, s As Integer
ddsheet = "Feuil2" dest_row = 2 b = 5 colonne = "AD" s = extract(ddsheet, dest_row, b, colonne) End Sub
A+
Bonsoir,
la fonction suivante, si je veux l'appeler avec des variables, me produit toujours le message d'erreur *type d'argument ByRef incompatible"
Function extract(dsheet As String, dest_row As Integer, ex_row As Integer, last_column As String) As Integer Sheets(dsheet).Range("A" & dest_row & ":" & last_column & dest_row) = ActiveSheet.Range("A" & ex_row & ":" & last_column & ex_row).Value extract = 1 End Function
Sub extr() Dim ddsheet, colonne As String Dim dest_row, b, s As Integer
ddsheet = "Feuil2" dest_row = 2 b = 5 colonne = "AD" s = extract(ddsheet, dest_row, b, colonne) End Sub
mais s = extract("Feuil2", 2, 5, "AD") fonctionne parfaitement Où se cache l'erreur ?
Merci
P.S. : (Le resultat de la fonction (=1) ne sert que pour fixer la variable s, ce qui compte est son action d'extraire, si elle fonctionnait, bien-sûr !)
bonjour,
si ta fonction a des arguments dont le type de variable est déclaré, il
te faut déclarer les arguments que tu passes à la fonction selon le même
type de variable.
Le fait que ca marche quand tu mets "Feuil2" vient simplement du fait
qu'Excel reconnait que Feuil2 est de type string et donc l'accepte comme
étant ByVal.
Ta proc pour marcher dans les conditions dans lesquelles tu as déclaré
ta fonction serait celle-ci
Sub extr()
Dim ddsheet As String, colonne As String
Dim dest_row As Integer, b As Integer, s As Integer
ddsheet = "Feuil2"
dest_row = 2
b = 5
colonne = "AD"
s = extract(ddsheet, dest_row, b, colonne)
End Sub
A+
Bonsoir,
la fonction suivante, si je veux l'appeler avec des variables,
me produit toujours le message d'erreur
*type d'argument ByRef incompatible"
Function extract(dsheet As String, dest_row As Integer, ex_row As Integer,
last_column As String) As Integer
Sheets(dsheet).Range("A" & dest_row & ":" & last_column & dest_row) =
ActiveSheet.Range("A" & ex_row & ":" & last_column & ex_row).Value
extract = 1
End Function
Sub extr()
Dim ddsheet, colonne As String
Dim dest_row, b, s As Integer
ddsheet = "Feuil2"
dest_row = 2
b = 5
colonne = "AD"
s = extract(ddsheet, dest_row, b, colonne)
End Sub
mais s = extract("Feuil2", 2, 5, "AD") fonctionne parfaitement
Où se cache l'erreur ?
Merci
P.S. : (Le resultat de la fonction (=1) ne sert que pour fixer
la variable s, ce qui compte est son action d'extraire,
si elle fonctionnait, bien-sûr !)
si ta fonction a des arguments dont le type de variable est déclaré, il te faut déclarer les arguments que tu passes à la fonction selon le même type de variable. Le fait que ca marche quand tu mets "Feuil2" vient simplement du fait qu'Excel reconnait que Feuil2 est de type string et donc l'accepte comme étant ByVal. Ta proc pour marcher dans les conditions dans lesquelles tu as déclaré ta fonction serait celle-ci
Sub extr() Dim ddsheet As String, colonne As String Dim dest_row As Integer, b As Integer, s As Integer
ddsheet = "Feuil2" dest_row = 2 b = 5 colonne = "AD" s = extract(ddsheet, dest_row, b, colonne) End Sub
A+
Bonsoir,
la fonction suivante, si je veux l'appeler avec des variables, me produit toujours le message d'erreur *type d'argument ByRef incompatible"
Function extract(dsheet As String, dest_row As Integer, ex_row As Integer, last_column As String) As Integer Sheets(dsheet).Range("A" & dest_row & ":" & last_column & dest_row) = ActiveSheet.Range("A" & ex_row & ":" & last_column & ex_row).Value extract = 1 End Function
Sub extr() Dim ddsheet, colonne As String Dim dest_row, b, s As Integer
ddsheet = "Feuil2" dest_row = 2 b = 5 colonne = "AD" s = extract(ddsheet, dest_row, b, colonne) End Sub
mais s = extract("Feuil2", 2, 5, "AD") fonctionne parfaitement Où se cache l'erreur ?
Merci
P.S. : (Le resultat de la fonction (=1) ne sert que pour fixer la variable s, ce qui compte est son action d'extraire, si elle fonctionnait, bien-sûr !)
JeNeVois
Grand Merci à tous !
L'erreur était donc de déclarer sous la forme "Dim x,y as string" au lieu de "Dim x as string, y as string"
Mais dans la plupart des cas la première déclaration fonctionne, alors je peine encore un peu à comprendre pourquoi dans cet exemple elle ne fonctionne pas. Mais l'essentiel est que "ça marche" :)
Salutations et bonne nuit !
bonjour,
si ta fonction a des arguments dont le type de variable est déclaré, il te faut déclarer les arguments que tu passes à la fonction selon le même type de variable. Le fait que ca marche quand tu mets "Feuil2" vient simplement du fait qu'Excel reconnait que Feuil2 est de type string et donc l'accepte comme étant ByVal. Ta proc pour marcher dans les conditions dans lesquelles tu as déclaré ta fonction serait celle-ci
Sub extr() Dim ddsheet As String, colonne As String Dim dest_row As Integer, b As Integer, s As Integer
ddsheet = "Feuil2" dest_row = 2 b = 5 colonne = "AD" s = extract(ddsheet, dest_row, b, colonne) End Sub
A+
Bonsoir,
la fonction suivante, si je veux l'appeler avec des variables, me produit toujours le message d'erreur *type d'argument ByRef incompatible"
Function extract(dsheet As String, dest_row As Integer, ex_row As Integer, last_column As String) As Integer Sheets(dsheet).Range("A" & dest_row & ":" & last_column & dest_row) = ActiveSheet.Range("A" & ex_row & ":" & last_column & ex_row).Value extract = 1 End Function
Sub extr() Dim ddsheet, colonne As String Dim dest_row, b, s As Integer
ddsheet = "Feuil2" dest_row = 2 b = 5 colonne = "AD" s = extract(ddsheet, dest_row, b, colonne) End Sub
mais s = extract("Feuil2", 2, 5, "AD") fonctionne parfaitement Où se cache l'erreur ?
Merci
P.S. : (Le resultat de la fonction (=1) ne sert que pour fixer la variable s, ce qui compte est son action d'extraire, si elle fonctionnait, bien-sûr !)
Grand Merci à tous !
L'erreur était donc de déclarer sous la forme
"Dim x,y as string"
au lieu de
"Dim x as string, y as string"
Mais dans la plupart des cas la première déclaration fonctionne,
alors je peine encore un peu à comprendre pourquoi dans
cet exemple elle ne fonctionne pas.
Mais l'essentiel est que "ça marche" :)
Salutations et bonne nuit !
bonjour,
si ta fonction a des arguments dont le type de variable est déclaré, il
te faut déclarer les arguments que tu passes à la fonction selon le même
type de variable.
Le fait que ca marche quand tu mets "Feuil2" vient simplement du fait
qu'Excel reconnait que Feuil2 est de type string et donc l'accepte comme
étant ByVal.
Ta proc pour marcher dans les conditions dans lesquelles tu as déclaré
ta fonction serait celle-ci
Sub extr()
Dim ddsheet As String, colonne As String
Dim dest_row As Integer, b As Integer, s As Integer
ddsheet = "Feuil2"
dest_row = 2
b = 5
colonne = "AD"
s = extract(ddsheet, dest_row, b, colonne)
End Sub
A+
Bonsoir,
la fonction suivante, si je veux l'appeler avec des variables,
me produit toujours le message d'erreur
*type d'argument ByRef incompatible"
Function extract(dsheet As String, dest_row As Integer, ex_row As Integer,
last_column As String) As Integer
Sheets(dsheet).Range("A" & dest_row & ":" & last_column & dest_row) =
ActiveSheet.Range("A" & ex_row & ":" & last_column & ex_row).Value
extract = 1
End Function
Sub extr()
Dim ddsheet, colonne As String
Dim dest_row, b, s As Integer
ddsheet = "Feuil2"
dest_row = 2
b = 5
colonne = "AD"
s = extract(ddsheet, dest_row, b, colonne)
End Sub
mais s = extract("Feuil2", 2, 5, "AD") fonctionne parfaitement
Où se cache l'erreur ?
Merci
P.S. : (Le resultat de la fonction (=1) ne sert que pour fixer
la variable s, ce qui compte est son action d'extraire,
si elle fonctionnait, bien-sûr !)
L'erreur était donc de déclarer sous la forme "Dim x,y as string" au lieu de "Dim x as string, y as string"
Mais dans la plupart des cas la première déclaration fonctionne, alors je peine encore un peu à comprendre pourquoi dans cet exemple elle ne fonctionne pas. Mais l'essentiel est que "ça marche" :)
Salutations et bonne nuit !
bonjour,
si ta fonction a des arguments dont le type de variable est déclaré, il te faut déclarer les arguments que tu passes à la fonction selon le même type de variable. Le fait que ca marche quand tu mets "Feuil2" vient simplement du fait qu'Excel reconnait que Feuil2 est de type string et donc l'accepte comme étant ByVal. Ta proc pour marcher dans les conditions dans lesquelles tu as déclaré ta fonction serait celle-ci
Sub extr() Dim ddsheet As String, colonne As String Dim dest_row As Integer, b As Integer, s As Integer
ddsheet = "Feuil2" dest_row = 2 b = 5 colonne = "AD" s = extract(ddsheet, dest_row, b, colonne) End Sub
A+
Bonsoir,
la fonction suivante, si je veux l'appeler avec des variables, me produit toujours le message d'erreur *type d'argument ByRef incompatible"
Function extract(dsheet As String, dest_row As Integer, ex_row As Integer, last_column As String) As Integer Sheets(dsheet).Range("A" & dest_row & ":" & last_column & dest_row) = ActiveSheet.Range("A" & ex_row & ":" & last_column & ex_row).Value extract = 1 End Function
Sub extr() Dim ddsheet, colonne As String Dim dest_row, b, s As Integer
ddsheet = "Feuil2" dest_row = 2 b = 5 colonne = "AD" s = extract(ddsheet, dest_row, b, colonne) End Sub
mais s = extract("Feuil2", 2, 5, "AD") fonctionne parfaitement Où se cache l'erreur ?
Merci
P.S. : (Le resultat de la fonction (=1) ne sert que pour fixer la variable s, ce qui compte est son action d'extraire, si elle fonctionnait, bien-sûr !)