Appel d'une sub avec des variables worksheet et workbook, pb de syntaxe

Bonjour,

J'ai créé des subs de tests (voir ci-dessous Test() appelle TestTest(3 variables).

çà ne fonctionne pas... J'ai une erreur de syntaxe sur le TestTest() quand je lance la Sub Test.

Une idée sur ce qui pourrait être à l'origine du problème ?

Sub Test()
Dim WbDataCSV As Workbook
Dim FichierSource As Workbook
Dim wsTarget As Worksheet 'onglet de compilation des data avant export CSV

Set WbDataCSV = ThisWorkbook 'A VERIF qu'il ne faut pas que je mette le chemin pour être sûre
With WbDataCSV
Set wsTarget = .Worksheets("data vers csv") 'à voir si utile par rapport aux fonctions ensuite
End With

Set FichierSource = GetObject("D:\Rep test 5 fichiers")

With FichierSource
TestTest(20, wsTarget, FichierSource)
End With
End Sub

Sub TestTest(i As Integer, Target As Worksheet, Source As Workbook)
' Récupère le nb de m. ds portée et le copie dans data vers csv
Target.Range("G" & i).Value = Source.Sheets("1 - La portée").Range("D8").Value

' Récupère la note de m.
Target.Range("H" & i).Value = Source.Sheets("1 - La portée").Range("E8").Value

End Sub

Bonsoir,

Je pensais avoir une piste mais ce n'est pas bon, au cas où voici ce que je pensais:
écrire cette ligne:

TestTest(20, wsTarget, FichierSource)

comme ça:

TestTest 20, wsTarget, FichierSource

De mémoire quand on appelle une procédure avec parenthèses comme ça ça peut poser problème car VBA croit que la procédure renvoie une valeur et veut qu'on la stocke dans une variable, si ça marche d'enlever les parenthèses génial, mais je suis dubitatif...

Sinon plus d'infos seraient utiles, fichier anonymisé, détail de l'erreur rencontré avec le message et le code d'erreur, la ligne où ça plante...

Merci. En fait, je me demande si le problème n'est pas ailleurs/avant que dans la syntaxe de TestTest...

Bonjour,

De mon côté si je change un peu la sub Test, ça marche:

Sub Test()
Dim WbDataCSV As Workbook
Dim FichierSource As Workbook
Dim wsTarget As Worksheet 'onglet de compilation des data avant export CSV

Set WbDataCSV = ThisWorkbook 'A VERIF qu'il ne faut pas que je mette le chemin pour être sûre
With WbDataCSV
Set wsTarget = .Worksheets("data vers csv") 'à voir si utile par rapport aux fonctions ensuite
End With

Set FichierSource = GetObject("D:\Rep test 5 fichiers")

Call TestTest(20, wsTarget, FichierSource)
End Sub

Fonctionne aussi si j'écris plutôt:

Sub Test()
Dim WbDataCSV As Workbook
Dim FichierSource As Workbook
Dim wsTarget As Worksheet 'onglet de compilation des data avant export CSV

Set WbDataCSV = ThisWorkbook 'A VERIF qu'il ne faut pas que je mette le chemin pour être sûre
With WbDataCSV
Set wsTarget = .Worksheets("data vers csv") 'à voir si utile par rapport aux fonctions ensuite
End With

Set FichierSource = GetObject("D:\Rep test 5 fichiers")

TestTest 20, wsTarget, FichierSource
End Sub

Quand je dis "ça marche", je veux dire que ça fait sauter l'erreur de syntaxe qui était sur la ligne

TestTest(20, wsTarget, FichierSource)

Je ne peux pas vraiment tester le reste du code.

Soit on enlève les parenthèses, soit on met Call avant.

PS: Je me suis permis d'enlever le With FichierSource ... End With qui n'apportait rien au code, mais ce n'est pas ça qui bloquait.

Effectivement l'ajout de Call solutionne le pb de syntaxe.

Maintenant j'en ai un autre (bien sûr !) à débugger :-)

Rechercher des sujets similaires à "appel sub variables worksheet workbook syntaxe"