[RESOLU] Passer une variable de type Range dans une fonction

dodoritfort

XLDnaute Nouveau
Bonjour à tous !


J'ai écrit une petite fonction qui permet de changer la couleur de fonds selon trois paramètres :
- La feuille
- La cellule
- La couleur

PROBLEME

Je n'arrive pas à faire passer une variable de type "Range" à ma fonction.

FONCTION

Une fonction qui change la couleur de fonds d'une variable

Code:
Function Progression(shOnglet As Worksheet, rgCellule As Range, sCouleur As String)

    With shOnglet

        Select Case sCouleur

            Case "Blanc":
                .rgCellule.Interior.ThemeColor = xlThemeColorDark1

            Case "Orange":
                .rgCellule.Interior.Color = 49407

            Case "Vert":
                .rgCellule.Interior.Color = 5287936

            Case "Rouge":
                .rgCellule.Interior.Color = 255

        End Select

    End With

End Function

UTILISATION

Dans mon bloc "Sub" :

Je déclare la variable :

Code:
    With Sheets("MAIN")
        Dim rgCelluleCouleur As Range
        Set rgCelluleCouleur = Range("B8")
    End With

Je lance la fonction :

Code:
Progression Sheets("MAIN"), rgCelluleCouleur, "Orange"

MESSAGE ERREUR

Erreur de compilation: Membre de méthode ou de données introuvable

CONCLUSION

Je sais que cette fonction semble un peu ridicule, mais ce serait justement pour moi l'occasion de comprendre et d'utiliser des variables de type "Worksheet" ou "Range" !

En vous remerciant d'avance, bonne journée !!!
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Passer une variable de type Range dans une fonction

Bonjour.
Ne passez pas la feuille propriétaire du range, c'est inutile car elle est connue par 2 propriétés du Range: Worksheet et Parent.
P.S. Curieux que vous n'ayez pas eu la tentation alors de passer aussi le classeur devant ! Inutile aussi, c'est à son tour la propriété Parent du Worksheet.
Cordialement.
 
Dernière édition:

dodoritfort

XLDnaute Nouveau
Re : Passer une variable de type Range dans une fonction

Bonjour.

Excusez-moi du retard.

Je suis désolé, j'ai essayé mais j'ai toujours un problème. J'obtiens le message d'erreur "Objet Requis (err exec 424)".

Pourriez-vous m'orienter un peu plus précisément ?

Merci !
 

pierrejean

XLDnaute Barbatruc
Re : Passer une variable de type Range dans une fonction

Bonjour dodoritfort
Salut Dranreb

Bien que l'utilisation d'une fonction soit disons 'etrange'

Code:
Function Progression(rgCellule As Range, sCouleur As String)
        Select Case sCouleur
            Case "Blanc":
                rgCellule.Interior.ThemeColor = xlThemeColorDark1
            Case "Orange":
                rgCellule.Interior.Color = 49407
            Case "Vert":
                rgCellule.Interior.Color = 5287936
            Case "Rouge":
                rgCellule.Interior.Color = 255
        End Select
End Function
Sub test()
Dim rgCellule As Range
Set rgCellule = Sheets("Main").Range("B8:C16")
x = Progression(rgCellule, "Orange")
End Sub
 

dodoritfort

XLDnaute Nouveau
Re : Passer une variable de type Range dans une fonction

Bonjour !

Je vous remercie à tout les deux pour l'éclaircissement. Je comprends mieux, et cela m'ouvre aussi l'esprit sur la façon de procéder (je pense notamment à l'utilisation de Worksheet ou de Parent).

Je pense qu'il me reste beaucoup de chose à apprendre pour faire les choses proprement et plus rapidement ! :cool:
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 893
Membres
103 982
dernier inscrit
krakencolas