Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

message d'erreur au lancement de macro

3 réponses
Avatar
gilles
bonjour

excusez la relance
SUr le code ci-dessous (j'ai un message d'erreur et ma proc ne marche pas

Sub test()
For i = Len(ThisWorkbook.Path) To 1 Step -1
If Mid(ThisWorkbook.Path, i, 1) = "\" Then Exit For
Next
Chemin = Left(ThisWorkbook.Path, i - 1) ' avec -1 pour enlever le \
GetValuesFromAClosedWorkbook Chemin , "fiche info affaire.xls", "Fiche",
"B8:H85"
End Sub

Un message d'erreur apparait :

Erreur de compilation
type d'argument By Ref incompatible

ça coince sur chemin

Merci à ceusses qui peuvent m'éclairer
Gilles
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...

3 réponses

Avatar
michdenis
Ta fonction provient de Ron De Bruin (forum anglais)
Elle se retrouve aussi sur le site de Frédéric Sigonneau

Pour l'appeler tu dois passer la ligne de commande suivante :

GetValuesFromAClosedWorkbook "C:", "ÇaMarche.xls", "MaFeuille", "z1:az5"

Si tu veux utiliser des variables comme "Chemin" dans la ligne de commande
comme dans ton exemple, tu dois déclarer simplement ta variable Chemin
dans ta procédure et le tour est joué.

Dim Chemin As String

L'autre alternative est l'utilisation de l'expression "ByVal"
dans ligne de déclaration de la fonction devant la variable
représentant le chemin :
(ceci fonctionnera même si tu n'as pas déclarer ta variable
dans la procédure appelante)

Sub GetValuesFromAClosedWorkbook(ByVal fPath As String, _
fName As String, sName, cellRange As String)


Si tu prends l'habitudes de déclarer tes "Variables" comme tu déclares tes
"Revenus" au fisc, tu t'éviteras bien des problèmes !!!

Je laisse à l'éminent pédagogue "AnonymousA" le soin de t'expliquer les
subtilités de la chose ;-)))

'------------------------------
Sub GetValuesFromAClosedWorkbook(fPath As String, _
fName As String, sName, cellRange As String)

'le paramètre 'cellRange' doit désigner
'*une* plage de cellules *contigües*
With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "[" & fName & "]" _
& sName & "'!" & cellRange
.Value = .Value
End With
End Sub
'--------------------------------



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

bonjour

excusez la relance
SUr le code ci-dessous (j'ai un message d'erreur et ma proc ne marche pas

Sub test()
For i = Len(ThisWorkbook.Path) To 1 Step -1
If Mid(ThisWorkbook.Path, i, 1) = "" Then Exit For
Next
Chemin = Left(ThisWorkbook.Path, i - 1) ' avec -1 pour enlever le
GetValuesFromAClosedWorkbook Chemin , "fiche info affaire.xls", "Fiche",
"B8:H85"
End Sub

Un message d'erreur apparait :

Erreur de compilation
type d'argument By Ref incompatible

ça coince sur chemin

Merci à ceusses qui peuvent m'éclairer
Gilles
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...
Avatar
anonymousA
Je ne vois pas en quoi me vaut tant d'honneur d'être cité par sans doute
l'un des contributeurs les plus prolifiques mais aussi sans doute les
plus imbus d'eux mêmes de ce forum.
Tu fais sans doute partie de la communauté des informaticiens que dans
mes études je pouvais considerer comme compétents mais imbuvables bref
de vrais informaticiens , quoi !!!!




Ta fonction provient de Ron De Bruin (forum anglais)
Elle se retrouve aussi sur le site de Frédéric Sigonneau

Pour l'appeler tu dois passer la ligne de commande suivante :

GetValuesFromAClosedWorkbook "C:", "ÇaMarche.xls", "MaFeuille", "z1:az5"

Si tu veux utiliser des variables comme "Chemin" dans la ligne de commande
comme dans ton exemple, tu dois déclarer simplement ta variable Chemin
dans ta procédure et le tour est joué.

Dim Chemin As String

L'autre alternative est l'utilisation de l'expression "ByVal"
dans ligne de déclaration de la fonction devant la variable
représentant le chemin :
(ceci fonctionnera même si tu n'as pas déclarer ta variable
dans la procédure appelante)

Sub GetValuesFromAClosedWorkbook(ByVal fPath As String, _
fName As String, sName, cellRange As String)


Si tu prends l'habitudes de déclarer tes "Variables" comme tu déclares tes
"Revenus" au fisc, tu t'éviteras bien des problèmes !!!

Je laisse à l'éminent pédagogue "AnonymousA" le soin de t'expliquer les
subtilités de la chose ;-)))

'------------------------------
Sub GetValuesFromAClosedWorkbook(fPath As String, _
fName As String, sName, cellRange As String)

'le paramètre 'cellRange' doit désigner
'*une* plage de cellules *contigües*
With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "[" & fName & "]" _
& sName & "'!" & cellRange
.Value = .Value
End With
End Sub
'--------------------------------



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

bonjour

excusez la relance
SUr le code ci-dessous (j'ai un message d'erreur et ma proc ne marche pas

Sub test()
For i = Len(ThisWorkbook.Path) To 1 Step -1
If Mid(ThisWorkbook.Path, i, 1) = "" Then Exit For
Next
Chemin = Left(ThisWorkbook.Path, i - 1) ' avec -1 pour enlever le
GetValuesFromAClosedWorkbook Chemin , "fiche info affaire.xls", "Fiche",
"B8:H85"
End Sub

Un message d'erreur apparait :

Erreur de compilation
type d'argument By Ref incompatible

ça coince sur chemin

Merci à ceusses qui peuvent m'éclairer
Gilles
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...




Avatar
gilles
Bonjour et merci Michel..et anonymous

J'ai suivi ton conseil mais j'obtiens le message suivant
erreur de compilation
argument non facultatif

Sub test()
Dim Chemin As String
Dim i
For i = Len(ThisWorkbook.Path) To 1 Step -1
If Mid(ThisWorkbook.Path, i, 1) = "" Then Exit For
Next
Chemin = Left(ThisWorkbook.Path, i - 1) ' avec -1 pour enlever le
GetValuesFromAClosedWorkbook Chemin & "Fiche", "B8:H85"
End Sub


Sub GetValuesFromAClosedWorkbook(ByVal fPath As String, _
fName As String, sName, cellRange As String)
With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "[" & fName & "]" & sName & "'!" & cellRange
.Value = .Value
End With
End Sub
Si tu penses repasser par mon message, je suis preneur de la raison possible
merci encore
à+


--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...



Ta fonction provient de Ron De Bruin (forum anglais)
Elle se retrouve aussi sur le site de Frédéric Sigonneau

Pour l'appeler tu dois passer la ligne de commande suivante :

GetValuesFromAClosedWorkbook "C:", "ÇaMarche.xls", "MaFeuille", "z1:az5"

Si tu veux utiliser des variables comme "Chemin" dans la ligne de commande
comme dans ton exemple, tu dois déclarer simplement ta variable Chemin
dans ta procédure et le tour est joué.

Dim Chemin As String

L'autre alternative est l'utilisation de l'expression "ByVal"
dans ligne de déclaration de la fonction devant la variable
représentant le chemin :
(ceci fonctionnera même si tu n'as pas déclarer ta variable
dans la procédure appelante)

Sub GetValuesFromAClosedWorkbook(ByVal fPath As String, _
fName As String, sName, cellRange As String)


Si tu prends l'habitudes de déclarer tes "Variables" comme tu déclares tes
"Revenus" au fisc, tu t'éviteras bien des problèmes !!!

Je laisse à l'éminent pédagogue "AnonymousA" le soin de t'expliquer les
subtilités de la chose ;-)))

'------------------------------
Sub GetValuesFromAClosedWorkbook(fPath As String, _
fName As String, sName, cellRange As String)

'le paramètre 'cellRange' doit désigner
'*une* plage de cellules *contigües*
With ActiveSheet.Range(cellRange)
.Formula = "='" & fPath & "[" & fName & "]" _
& sName & "'!" & cellRange
.Value = .Value
End With
End Sub
'--------------------------------



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

bonjour

excusez la relance
SUr le code ci-dessous (j'ai un message d'erreur et ma proc ne marche pas

Sub test()
For i = Len(ThisWorkbook.Path) To 1 Step -1
If Mid(ThisWorkbook.Path, i, 1) = "" Then Exit For
Next
Chemin = Left(ThisWorkbook.Path, i - 1) ' avec -1 pour enlever le
GetValuesFromAClosedWorkbook Chemin , "fiche info affaire.xls", "Fiche",
"B8:H85"
End Sub

Un message d'erreur apparait :

Erreur de compilation
type d'argument By Ref incompatible

ça coince sur chemin

Merci à ceusses qui peuvent m'éclairer
Gilles
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...