Exécuter le code VBA automatiquement

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

2 réponses

  1. Modérateur
    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?
    1. 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.
      1. Modérateur
        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