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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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.
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
Ave,
Petit ajout : Randomize Petite simplif : Rnd*2+1 Tout est OK.
Merci
Serge
"FdeCourt" a écrit dans le message de news:
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.
Ave,
Petit ajout : Randomize
Petite simplif : Rnd*2+1
Tout est OK.
Merci
Serge
"FdeCourt" <fdecourt@gmail.com> a écrit dans le message de news:
259954e4-3c4b-426b-b163-fa805b46a8af@e27g2000yqd.googlegroups.com...
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.
Petit ajout : Randomize Petite simplif : Rnd*2+1 Tout est OK.
Merci
Serge
"FdeCourt" a écrit dans le message de news:
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
Effectivement, le calcul (3-1) est un peu con. Par contre, ca fait quoi randomize ?
Cordialement,
F.
Effectivement, le calcul (3-1) est un peu con.
Par contre, ca fait quoi randomize ?
Effectivement, le calcul (3-1) est un peu con. Par contre, ca fait quoi randomize ?
Cordialement,
F.
Garnote
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" a écrit dans le message de news:
Effectivement, le calcul (3-1) est un peu con. Par contre, ca fait quoi randomize ?
Cordialement,
F.
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" <fdecourt@gmail.com> a écrit dans le message de news:
550fab36-d1c9-452d-8853-8c3a96adc96d@d20g2000yqh.googlegroups.com...
Effectivement, le calcul (3-1) est un peu con.
Par contre, ca fait quoi randomize ?
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" a écrit dans le message de news:
Effectivement, le calcul (3-1) est un peu con. Par contre, ca fait quoi randomize ?