Considérer une cellule "au hasard" sur VBA

Résolu
Mayss -  
 Mayss -
Bonjour à tous !

J'ai une question un peu spéciale mais je ne trouve vraiment pas la solution, d'autant plus que je suis loin d'être un expert sur VBA...

Je cherche à programmer le fait que, si une cellule (n'importe laquelle) d'une colonne (que je définis, par contre) est égale à quelque chose de particulier, alors la cellule positionnée 2 colonnes plus à droite (relativement) de ma première cellule doit être égale à une valeur.

Par exemple :

si B3="oui",
alors D3="super"

Mais je voudrais aussi que ça marche pour toutes les autres cellules de la colonne B ! Et je voudrais éviter de devoir répéter le code 36500 fois, puisqu'il me semble que chaque colonne est à peu près longue de 36500 cases ^^

J'espère que je suis clair !
Est-ce que quelqu'un aurait une idée pour m'aider ?

Merci d'avance !!

Mayss

2 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
     
    Bonjour,

    Sub AleaCel()
    Dim Ligne As Long
    Dim Colonne As Integer
    
    Colonne = 2
    Randomize
    Ligne = Round(Rnd * 65535, 0)
    If Cells(Ligne, Colonne) = "oui" Then 
        Cells(Ligne, Colonne + 2) = "super"
        MsgBox "Ligne gagnante : " & Ligne
    End If
    End Sub

    Voir cette astuce CCM pour le nombre de lignes......
    Cordialement,
    Franck P
    1
  2. Mayss
     
    Supeeer ! Merci =)

    Il y avait juste un petit truc à modifier car je ne me suis pas super bien exprimé.
    Car je voulais en fait que pour toutes les cellules de la colonne spécifiée, si l'une d'entre elle est égale à oui, alors la cellule relativement 2 colonnes plus loin d'elle est égale à super. Mais tout le contexte était bon et j'ai pu commencer à comprendre mes premières fonctions VBA !! ^^
    Je me suis débrouillé comme ça :

    Sub AleaCel()
    Dim Ligne As Long
    Dim Colonne As Integer

    Colonne = 3
    For i = 1 To 200
    Ligne = i
    If Cells(Ligne, Colonne) = "oui" Then
    Cells(Ligne, Colonne + 2) = "super"
    End If
    Next
    End Sub
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
       
      Dans ta procédure :
      - Ligne (ou i) est superflu
      - déclare systématiquement tes variables : Dim i As Byte
      Ta macro devient donc :
      Sub Test()
      Dim Ligne As Byte
      Dim Colonne As Byte
      
      Colonne = 3
      For Ligne = 1 To 200
          If Cells(Ligne, Colonne) = "oui" Then
              Cells(Ligne, Colonne + 2) = "super"
          End If
      Next Ligne
      End Sub


      Un tuto sur les variables...
      0
    2. Mayss
       
      Super, merci pour les précisions !
      0