[Excel - VBA] cellule

Résolu
Bonjour,

J'ai créer un fonction qui affecte une valeur aléatoire à une cellule... Cependant, pour que cette fonction fonctionne, il faut passer OBLIGATOIREMENT en paramètres une cellule de la feuille Excel... Mais je n'arrive pas à la passé, on me retourne un message d'erreur... INCOMPATIBILITÉ DE TYPE
Configuration: Windows XP
Firefox 2.0.0.14

5 réponses

  1. Contributeur
    bonjour

    Il faut que tes données aient le même type car si tu veux faire du calcul avec du texte c'est une incompatibilité de type.
    0
    1. oui, je sais, mais moi, je souhaite passer en paramètre un cellule vide pour y affecter un valeur générée aléatoirement.
      0
  2. Contributeur
    Bonjour,
    Montre la macro que tu a fait, ca aidera...
    A+
    0
    1. Public Sub aleatoire(cell as !!C'est la que le type convient pas!!)

      Randomize

      cell = (Int((5 * Rnd) + 1))

      End Sub

      ___________________________________________________
      Sinon, j'ai essayé un truc comme ça
      ___________________________________________________

      Public Sub aleatoire()

      Randomize

      aleatoire = (Int((5 * Rnd) + 1))

      End Sub
      0
  3. Contributeur
    bonjour

    Ta deuxième formule est la bonne car une fonction met son résultat dans la cellule qui l'appelle.

    Une procédure "sub" peut agir sur une autre cellule mais on ne peut pas l'utiliser comme fonction.
    0
    1. Contributeur
      bonjour,
      Un peu contredire gbinforme mais aucune des deux n'est valable, remplacer par
      Public Function aleatoire() 
      Randomize 
      aleatoire = (Int((5 * Rnd) + 1)) 
      End Function
      Avec ca tu va l'avoir dans la cellule d'appel, pour réinitialiser, sélectionner la cellule, mettre le curseur sur la barre d'édition (au bout) et taper Enter
      A+
      0
      1. Contributeur
        bonjour

        Il suffit aussi de mettre ceci et de faire F9
        Public Function aleatoire() 
        application.volatile
        Randomize 
        aleatoire = (Int((5 * Rnd) + 1)) 
        End Function
        0
        1. Contributeur
          comme quoi ont apprend tout les jours..
          connaissais pas
          application.volatile

          0
        2. @lermite222Ca sert à quoi aplication.volatile
          0
        3. Contributeur
          @nino11Quand tu as une tel question... Tu sélectionne le mot et tu tape F1.. Voir l'aide.
          Ca sert à réinitialiser la fonction à chaque recalcul de la feuille et F9 oblige le recalcul.
          0
        4. @lermite222ok, merci, je vais testé tout ça... ;)
          0
        5. @lermite222Euh, ce que tu m'as filé marche, mais j'ai une autre procédure qui marche pas...

          Public Sub Tirs_aux_buts(cell1 As Range, cell2 As Range)

          Randomize

          For i = 1 To 5
          If (Int((1 * Rnd) + 0)) = 1 Then
          cell1 = cell1 + 1
          End If

          If (Int((1 * Rnd) + 0)) = 1 Then
          cell2 = cell2 + 1
          End If
          Loop

          While cell1 = cell2
          If (Int((1 * Rnd) + 0)) = 1 Then
          cell1 = cell1 + 1
          End If

          If (Int((1 * Rnd) + 0)) = 1 Then
          cell2 = cell2 + 1
          End If
          Wend

          End Sub
          0