Function/procédure personnalisée avec arguments

Bonjour,

J'essaie de coder une fonction/ procédure personnalisée avec des arguments. Il s'agit d'une function pour coller un contenu dans une feuille.

Voci le code:

Function Paste(Sheets, Start, Format, Link, DisplayAsIcon, NoHTMLFormatting)

On Error GoTo errorhandler

Sheets.Activate

Start.Select

ActiveSheet.PasteSpecial Format:=Format, Link:=Link, DisplayAsIcon:= _

DisplayAsIcon, NoHTMLFormatting:=NoHTMLFormatting

errorhandler:

Exit Function

End Function

Ensuite, dans un module, je note ceci:

Sub test()

module1.Paste(Sheets("Backlog"), Cells(2, 1), "HTML", False, False, True)

End Sub

Et là, VBA me dit qu'il attend un = . Or la fonction ne doit pas donner une valeur à une variable mais bien donner une valeur à des cellules. Je ne comprend donc pas mon erreur.

Y a-t-il quelque chose que je n'ai pas compris à propos des fonctions/procédures avec arguments?

Merci à vous,

bonjour,

1) je définirais non pas une function mais une sub (s'il n'y a pas d'argument en retour)

2) j'éviterais de lui donner le nom paste.

donc

sub myPaste(Sheets, Start, Format, Link, DisplayAsIcon, NoHTMLFormatting)

On Error GoTo errorhandler

Sheets.Activate
Start.Select
ActiveSheet.PasteSpecial Format:=Format, Link:=Link, DisplayAsIcon:= _
DisplayAsIcon, NoHTMLFormatting:=NoHTMLFormatting

errorhandler:
Exit sub

End sub

Ensuite, dans un module, je note ceci: 

Sub test()
module1.myPaste(Sheets("Backlog"), Cells(2, 1), "HTML", False, False, True)
End Sub

Bonjour

Bonjour h2so4

J'irais encore plus loin

J'éviterai de donner comme nom de paramètre des noms utilisés par Excel (Exemples : Link, DisplayAsIcon etc ...) c'est un bon moyen de se planter et de ne pas savoir ce qui se passe

Il fait enlever les parenthèses

module1.myPaste(Sheets("Backlog"), Cells(2, 1), "HTML", False, False, True)

Ok merci pour ces infos.

J'ai testé et je pense avoir réglé le problème de l'appelle de la procédure personnalisée. Cependant, il reste une erreur quelque part. je m'explique:

Voici mon code sans fonction personnalisée :

Sub Paste()

On Error GoTo errorhandler

Sheets("SSRS_SL1104").Select
Cells(2, 1).Select
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
        False, NoHTMLFormatting:=True

errorhandler:
Exit Sub

End Sub

Voici le même code mais avec la fonction (elles sont placées dans le même module):

Sub MyPaste(MySheet, MyCell)

On Error GoTo errorhandler

MySheet.Select
MyCell.Select
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
        False, NoHTMLFormatting:=True

errorhandler:
Exit Sub
End Sub

Sub Test()
MyPaste Sheets("SSRS_SL1104"), Cells(2, 1)
End Sub

Dans le premier cas, la procédure fonctionne très bien. Dans le second, avec la procédure perso, elle bug si la feuille Sheets("SSRS_SL1104") n'est pas activée. Je ne comprends pas mon erreur puisque rien n'a changé entre les deux méthodes.

Bonjour

Une méthode qui fonctionne (mais je ne saurais pas trop l'expliquer)

Sub MyPaste(MySheet As Worksheet, MyCell As Range)

  On Error GoTo errorhandler

  MySheet.Select
  MyCell.Select
  ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
                           False, NoHTMLFormatting:=True

errorhandler:
  Exit Sub
End Sub

Sub Test()
  MyPaste Sheets("SSRS_SL1104"), Sheets("SSRS_SL1104").Cells(2, 1)
End Sub

Super, ça fonctionne. Un tout grand merci.

Rechercher des sujets similaires à "function procedure personnalisee arguments"