Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Error Value, Utilisation Cells, VBA

  • Initiateur de la discussion Initiateur de la discussion djyo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

djyo

Guest
Bonjour,

C'est un peu une question de débutant en Vba mais, j'ai fait une fonction, mais à chaque fois elle me rend l'erreur #VALUE!, je ne sais pas pourquoi...
Elle s'applique à 5 cellules, et en matriciel, avec dans les cellules écrit:
=Fonct(ROW(A7);COLUMN(A7))

VB:
Function Fonct(Row, Col)
Randomize
Application.Volatile

Dim REP()
ReDim REP(1 To 5)

        For i = 1 To 5
            Random = Int(Rnd * 2)
            If (Random = 1) Then
                'REP(i) = Cells(7, 1 + i)  Cette ligne marche mais les deux suivantes non
                REP(i) = ActiveSheet.Cells(Row, Col + i)
                Cells(Row, Col + i).Interior.ColorIndex = 15
            ElseIf (Random = 0) Then
                REP(i) = "Rien"
                Cells(7, 7 + i).Interior.ColorIndex = 2
            End If
        Next i
        
    Fonct = REP()

End Function
 

Pièces jointes

Re : Error Value, Utilisation Cells, VBA

Bonjour Djyo,

Voici comment modifier ta fonction pour qu'elle fonctionne. J'ai rajouté des (1) sur les variables Row et Col (que j'ai au passage renommé R et C pour éviter les conflits).
Ensuite, une fonction ne peut pas modifier des couleurs. Elle peut seulement effectuer des calculs et renvoyer une ou des valeurs. Ceci faisait planter ta macro.
VB:
Function Fonct(R, C)
    Randomize
    Application.Volatile
    Dim REP()
    ReDim REP(1 To 5)
    For i = 1 To 5
        Random = Int(Rnd * 2)
        If (Random = 1) Then
            'REP(i) = Cells(7, 1 + i)
            REP(i) = ActiveSheet.Cells(R(1), C(1) + i)
'                Cells(R(1), C(1) + i).Interior.ColorIndex = 15
        ElseIf (Random = 0) Then
            REP(i) = "Rien"
'                Cells(R(1), C(1) + i).Interior.ColorIndex = 2
        End If
    Next i
    Fonct = REP
End Function

A+

A+
 
Re : Error Value, Utilisation Cells, VBA

Merci de cette réponse très rapide,

Comment tu expliques que le fait d'ajouter (1) à la variable (comme si c'était un tableau right?) rend la fonction correcte?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
281
Réponses
2
Affichages
257
Réponses
5
Affichages
914
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
453
Réponses
8
Affichages
783
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…