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

Error Value, Utilisation Cells, VBA

djyo

XLDnaute Nouveau
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

  • Book2.xlsm
    14.5 KB · Affichages: 37
  • Book2.xlsm
    14.5 KB · Affichages: 40
  • Book2.xlsm
    14.5 KB · Affichages: 43

Fred0o

XLDnaute Barbatruc
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+
 

djyo

XLDnaute Nouveau
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?
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…