Enlever au hasard un zéro sur 2

Le
Garnote
Bonsoir,

Les cellules A1:C1 contiennent respectivement
1000, 0 et 0
ou
0, 1000 et 0
ou
0, 0 et 1000
Une macro sélectionnne au hasard une des trois cellules.
Avec une autre macro, je veux réaliser ceci :
1) Si la cellule active contient 0, je veux effacer l'autre 0
2) et si elle contient 1000, je veux effacer « au hasard »
un des deux 0 qui restent.
Pour le 1) je sais faire mais comment réaliser 1) et 2)
avec la même macro ?

Avec cette macro j'arrive à enlever un 0 mais pour le cas 2),
le 0 enlevé ne l'est pas au hasard :

Sub Enlever_Un_0()
Set ici = ActiveCell
For j = 1 To 3
If Cells(1, j).Address <> ici.Address And Cells(1, j) = 0 Then
Cells(1, j).ClearContents
k = k + 1
End If
If k = 1 Then Exit Sub
Next j
End Sub


Serge
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FdeCourt
Le #20723671
Salut,

En option Base 1 (ca fait plus de code, mais c'est plus clair) :

Option Base 1
Sub Enlever_Un_0()
Dim monTablo(2)
Set ici = ActiveCell
x = 1
For j = 1 To 3
If ici.Column <> j Then
monTablo(x) = j
x = x + 1
End If
Next j
If ici = 1000 Then
Cells(1, monTablo(Int(Rnd * (3 - 1) + 1))).ClearContents
ElseIf Cells(1, monTablo(1)) = 0 Then
Cells(1, monTablo(1)).ClearContents
Else
Cells(1, monTablo(2)).ClearContents
End If
End Sub

Ca fonctionne pour un tableau de trois colonnes.
Avec plus... la règle change.

Bonne soirée.

Cordialement,

F.
Garnote
Le #20724151
Ave,

Petit ajout : Randomize
Petite simplif : Rnd*2+1
Tout est OK.

Merci

Serge


"FdeCourt"
Salut,

En option Base 1 (ca fait plus de code, mais c'est plus clair) :

Option Base 1
Sub Enlever_Un_0()
Dim monTablo(2)
Set ici = ActiveCell
x = 1
For j = 1 To 3
If ici.Column <> j Then
monTablo(x) = j
x = x + 1
End If
Next j
If ici = 1000 Then
Cells(1, monTablo(Int(Rnd * (3 - 1) + 1))).ClearContents
ElseIf Cells(1, monTablo(1)) = 0 Then
Cells(1, monTablo(1)).ClearContents
Else
Cells(1, monTablo(2)).ClearContents
End If
End Sub

Ca fonctionne pour un tableau de trois colonnes.
Avec plus... la règle change.

Bonne soirée.

Cordialement,

F.
FdeCourt
Le #20724531
Effectivement, le calcul (3-1) est un peu con.
Par contre, ca fait quoi randomize ?

Cordialement,

F.
Garnote
Le #20724761
Sans Randomize, tu as de grandes chances de voir réapparaître
les mêmes séries de nombres suite à un enregistrement de ton
classeur. Voir l'aide à ce sujet.

Sub Pseudo_Hasard()
For i = 1 To 10
ActiveCell.Offset(i - 1, 0) = Int(100 * Rnd)
Next i
End Sub

Serge


"FdeCourt"
Effectivement, le calcul (3-1) est un peu con.
Par contre, ca fait quoi randomize ?

Cordialement,

F.



Publicité
Poster une réponse
Anonyme