[Excel - VBA] cellule

Résolu
nino11 Messages postés 76 Date d'inscription   Statut Membre Dernière intervention   -  
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   -
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

5 réponses

gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
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
nino11 Messages postés 76 Date d'inscription   Statut Membre Dernière intervention  
 
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
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour,
Montre la macro que tu a fait, ca aidera...
A+
0
nino11 Messages postés 76 Date d'inscription   Statut Membre Dernière intervention  
 
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
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
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
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
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
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
comme quoi ont apprend tout les jours..
connaissais pas
application.volatile

0
nino11 Messages postés 76 Date d'inscription   Statut Membre Dernière intervention   > lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention  
 
Ca sert à quoi aplication.volatile
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191 > nino11 Messages postés 76 Date d'inscription   Statut Membre Dernière intervention  
 
Quand 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
nino11 Messages postés 76 Date d'inscription   Statut Membre Dernière intervention   > lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention  
 
ok, merci, je vais testé tout ça... ;)
0
nino11 Messages postés 76 Date d'inscription   Statut Membre Dernière intervention   > lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention  
 
Euh, 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