Exécuter le code VBA automatiquement

Mayss -  
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   -
Re-bonjour !

J'ai un autre problème sur VBA.
J'ai un code qui me fait exactement ce que je veux, à ceci près :
J'ai une liste déroulante dans ma cellule, et quand je fais un choix dans cette liste, j'aurais besoin que le code s'exécute pour obtenir le résultat qu'il me faut, et qui dépend du texte dans ma cellule...

Une idée ? Merci d'avance !

Mayss

A voir également:

2 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Peux tu nous dire :
1- En qu'elle cellule est ta liste déroulante?
2- Quel est le code qui est censé se déclencher automatiquement?
0
Mayss
 
Les cellules où les listes sont disponibles sont celles de la colonne C.
Pour le code à exécuter, c'est celui-ci ;)

Sub AleaCel()
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) = ""
Cells(Ligne, Colonne + 3) = "-"
Cells(Ligne, Colonne + 4) = ""
Cells(Ligne, Colonne + 5) = "-"
ElseIf Cells(Ligne, Colonne) = "non" Then
Cells(Ligne, Colonne + 2) = "-"
Cells(Ligne, Colonne + 3) = ""
Cells(Ligne, Colonne + 4) = "-"
Cells(Ligne, Colonne + 5) = ""
End If
Next
Calculate
DoEvents
End Sub

Je voudrais donc que le code s'exécute de lui même dès que je choisis l'une des possibilités dans la liste.
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Tu trouveras, dans l'éditeur VBE, en haut à gauche, une fenêtre VBA-Project avec le nom de tes feuilles.
Double clic sur la feuille concernée (celle qui a les listes en colonne C) puis copie-colle ce code dans le module de la feuille :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 3 Then Exit Sub
If Target.Row < 255 Then AleaCel Target.Row, 3 'pour respecter la limite imposée par le type Byte
End Sub


Puis change ta macro comme ceci :
Sub AleaCel(Ligne As Byte, Colonne As Byte)
If Cells(Ligne, Colonne) = "oui" Then
    Cells(Ligne, Colonne + 2) = ""
    Cells(Ligne, Colonne + 3) = "-"
    Cells(Ligne, Colonne + 4) = ""
    Cells(Ligne, Colonne + 5) = "-"
ElseIf Cells(Ligne, Colonne) = "non" Then
    Cells(Ligne, Colonne + 2) = "-"
    Cells(Ligne, Colonne + 3) = ""
    Cells(Ligne, Colonne + 4) = "-"
    Cells(Ligne, Colonne + 5) = ""
Else 'ICI le cas ou on a rien en colonne C
    Cells(Ligne, Colonne + 2) = ""
    Cells(Ligne, Colonne + 3) = ""
    Cells(Ligne, Colonne + 4) = ""
    Cells(Ligne, Colonne + 5) = ""
End If
End Sub
0