Correction de fonction

Bonjour à tous,

Voici ma fonction :

Sub SetTo0(Valeur1 As Range, Valeur2 As Range)
Dim FL1 As Worksheet, Cell As Range, Plage As Range
Dim Var1

    Set FL1 = ActiveSheet
    FL1.Activate
    With FL1
        'Détermination de la plage de cellules à lire
        'Peut s'écrire en utilisant l'objet range de la plage
        'For Each Cell In .Range("B3:E15")

        'ou en utilisant l'objet Plage (range) de la plage
        Set Plage = .Range("Valeur1:Valeur2")
        For Each Cell In Plage

            'Valeur de la cellule lue
            Var1 = Cell.Value
            If Var1 < -1 Or -0.7 < Var1 And Var1 < 0.7 Or 1 < Var1 Then
            Cell = "0"

            End If
        Next
    End With
    Set FL1 = Nothing
    Set Plage = Nothing
End Sub

Sub Test()
Call SetTo0([B37], [D47])

End Sub

Ma méthode fonctionne bien sans paramètre, je n'ai pas réussie à faire en sorte qu'elle prenne en paramètre ma cellule de début et de fin. J'ai une erreur à cet ligne :

Set Plage = .Range("Valeur1:Valeur2")

Je suppose que soit ce que j'essaie de faire n'est pas posssible, soit j'ai une erreur de syntaxe, les experts à vos claviers !

Bonjour,

comment appelle tu ta fonction ?

ensuite tu n'utilise pas tes paramètres Valeur1 et Valeur2 dans ta fonction , car ici :

    Set Plage = .Range("Valeur1:Valeur2")

vu que tu place le texte Valeur1:Valeur2 entre guillemet , cela reste du texte ... et donc cela ne veut pas dire grand-chose...

Bonjour,

 Set Plage = .Range("Valeur1:Valeur2")

n'est pas la bonne syntaxe en effet :p

mettre des variable entre guillemet les transforme en chaîne de caractère (en gros dans le cas présent sa devient n'importe quoi avec le range(String) au lieu de range(cells,cells))

voila la syntaxe :

 Set Plage = .Range(Valeur1 & ":" & Valeur2)
pierre.jy a écrit :

Bonjour,

comment appelle tu ta fonction ?

ensuite tu n'utilise pas tes paramètres Valeur1 et Valeur2 dans ta fonction , car ici :

    Set Plage = .Range("Valeur1:Valeur2")

vu que tu place le texte Valeur1:Valeur2 entre guillemet , cela reste du texte ... et donc cela ne veut pas dire grand-chose...

Oui merci mais j'ai essayé d'autrse syntaxes mais RAS, j'ai laissé comme ça car je suppose que vous comprenez ce que je veux faire !

Bonsoir,

Essaye comme ça :

Set Plage = .Range(Valeur1, Valeur2)

NB : ce n'est pas une fonction, c'est toujours une procédure que tu appelles. A la différence d'une fonction une procédure ne retourne aucune valeur. Pour reconnaître voir la dernière ligne (End Sub ou End Function)

minanse a écrit :

Bonjour,

 Set Plage = .Range("Valeur1:Valeur2")

n'est pas la bonne syntaxe en effet :p

mettre des variable entre guillemet les transforme en chaîne de caractère (en gros dans le cas présent sa devient n'importe quoi avec le range(String) au lieu de range(cells,cells))

voila la syntaxe :

 Set Plage = .Range(Valeur1 & ":" & Valeur2)

Cela ne fonctionne pas chez moi,

"Erreur d'exécution '1004':

La méthode 'Range' de l'objet'_Worksheet' a échoué"

toujours sur la même ligne


Raja a écrit :

Bonsoir,

Essaye comme ça :

Set Plage = .Range(Valeur1, Valeur2)

NB : ce n'est pas une fonction, c'est toujours une procédure que tu appelles. A la différence d'une fonction une procédure ne retourne aucune valeur

Effectivement c'est une procédure , je ne fais pas attention parfois au terme que j'emploie !

Sinon Merci Raja, tu as résolu mon problème ! et merci aux autres aussi !

Bonne fin de journée !

Oup's ....

j'avais pas vu ta fonction Test...

Set Plage = Range(Valeur1,Valeur2)

tu pense bien as enlever le point (.) devant Range car si tes paramètres ne sont pas dans la feuille "FL1" tu auras une erreur..

Rechercher des sujets similaires à "correction fonction"