Excel : sélection cellule aléatoire vide

Bonjour tout le monde,

J'ai créé cette petite macro :

Sub Gedou()
ligne = ActiveCell.Row
soluce = Worksheets("solutions").Cells(ligne, 1).Value
ActiveCell.FormulaR1C1 = "Gedou"
ActiveCell.AddComment
ActiveCell.Comment.Visible = False
ActiveCell.Comment.Text Text:=soluce
ActiveCell.Offset(1, 0).Select
End Sub

Pour résumer, il y a des questions en colonne A (de A10 à A20 par exemple), je sélectionne la cellule B10, puis clique sur un bouton auquel est affecté la macro ci-dessus. Cela affiche "Gedou" en B10 (+ création commentaire avec la réponse) et sélectionne la cellule B11 ( ActiveCell.Offset(1, 0).Select ).

Ma question principale : plutôt qu'il passe à la cellule du dessous, je voudrai qu'il sélectionne au hasard n'importe quelle cellule encore vide de B10 à B20.

Question 2 : pour éviter un bug probable : quand je réponds dans la dernière cellule non-vide, affichage d'un pop-up (me proposant de vider les réponses ou de ne rien faire par exemple) ou bien arrêt de la macro afin d'éviter qu'il cherche indéfiniment une cellule vide (qu'il ne peut plus trouver, de fait).

Vous remerciant déjà de l'éclairage que vous pourrez me fournir, je vous souhaite une bonne fin de week-end !

Gédou
Configuration: Windows XP Internet Explorer 8.0
Excel 2007

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. bonjour alors je vais commencer par la question B pour compter le nombre de cellule de B10 a B20:

    w = WorksheetFunction.CountBlank(Range("B10:B20"))
    if w =0 then exit sub

    voila deja cela evite qu il cherche une vide alors qu il ni en a pas !!!

    alors pour la 1ere question c chaud qd meme qu'il trouve une cellule vide au hasard mais je cherche
    1. une question c t juste pr l exemple B10 a B20 ?
      de quel cellule a quel cellule tu va te servire?
      1. re c bon g trouvé un petit bout de code mais g besoin de savoir de quel cellule a quel cellule tu as besoin du code
        1. voila un code a toi de l'adapter:

          topmaj = False
          Do Until i = 10000 Or topmaj = True
          Randomize
          Z = Int((Rnd * Now) / 1000)
          If Z = 0 Then Z = 1
          If Cells(Z, 2).Value = "" And Z < 20 Then
          Cells(Z, 2).Select
          topmaj = True
          Else
          i = i + 1
          End If
          Loop

          le and Z<20 20 representela derniere ligne sur laquel tu veux allé g pas mis de 1ere ligne a toi de me dire
          voila g tester il marche tres bien
          1. OK, je teste et je vous dis demain.

            Quoi qu'il en soit, merci de vos réponses !

            Salutations.

            Gédou.