Considérer une cellule "au hasard" sur VBA
Résolu
Mayss
-
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
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
A voir également:
- Considérer une cellule "au hasard" sur VBA
- Excel compter cellule couleur sans vba - Guide
- Excel cellule couleur si condition texte - Guide
- Aller à la ligne dans une cellule excel - Guide
- Proteger cellule excel - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
2 réponses
Bonjour,
Voir cette astuce CCM pour le nombre de lignes......
Cordialement,
Franck P
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
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
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
Dans ta procédure :
- Ligne (ou i) est superflu
- déclare systématiquement tes variables : Dim i As Byte
Ta macro devient donc :
Un tuto sur les variables...
- 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...