Alea entre 2 mots dans une macro

patsyl60

XLDnaute Occasionnel
Bonjour le forum,

Je travaille sur la mise en place automatique d'un planning. Je vous joint un début de fichier. Dans la colonne A les noms, Dans la colonne B le planning ( Matin ou soir ). Je met mes impératifs en dur et je voudrais que la macro choisisse aléatoirement pour les cellules vides entre Matin et Soir. je ne trouve pas la solution.

Pouvez vous m'aider ?

D'avance merci.

Bonne journée.

Patsyl60
 

Pièces jointes

  • Essai planning.xls
    22.5 KB · Affichages: 56
  • Essai planning.xls
    22.5 KB · Affichages: 62
  • Essai planning.xls
    22.5 KB · Affichages: 60

Robert

XLDnaute Barbatruc
Repose en paix
Re : Alea entre 2 mots dans une macro

Bonjour Patsyl, bonjour le forum,

Peut-être comme ça :
Code:
Sub Essai_Planning1()
Dim Derligne As Long
Dim Cell As Range
Dim alea As Byte 'déclare la variable alea
Derligne = Range("A65536").End(xlUp).Row

For Each Cell In Range("B2:B" & Derligne)
    If Cell = "" Then 'condition : si la cellule est vide
        Randomize 'initialise le générateur de nombres aléatoires
        alea = Int((2 - 1 + 1) * Rnd + 1) 'génère une nombre eleatoire entre 1 et 2
        Select Case alea 'agit en fonction de la variabe alea
            Case 1 'cas 1
               Cell = "Test Matin" 'attribue la valeur "Test Matin" à la cellule
            Case 2 'cas 2
               Cell = "Test soir" 'attribue la valeur "Test Soir" à la cellule
        End Select'fin de l'action en fonction...
    End If 'fin de la condition
Next Cell
End Sub
 

patsyl60

XLDnaute Occasionnel
Re : Alea entre 2 mots dans une macro

Merci robert,

cela fonctionne parfaitement. Juste pour mon info, si j'ai un troisième cas, comment je modifie le :

alea = Int((2 - 1 + 1) * Rnd + 1)

Encore merci pour ta solution.

Patsyl60
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Alea entre 2 mots dans une macro

Bonjour Patsyl, bonjour le forum,

Pour générer les nombres aléatoire entre deux bornes (upperbound et lowerbound) l'aide VBA indique : Int((upperbound - lowerbound + 1) * Rnd + lowerbound) donc pour un nombre aléatoire de 1 à 3 ça donnerait :
Code:
alea = Int((3 - 1 + 1) * Rnd + 1)
ce qui revient à dire:
Code:
alea = Int(3 * Rnd + 1)
 

Discussions similaires

Réponses
24
Affichages
796

Statistiques des forums

Discussions
312 236
Messages
2 086 477
Membres
103 232
dernier inscrit
logan035