Exécuter le code VBA automatiquement
Mayss
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
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
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:
- Exécuter le code VBA automatiquement
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
2 réponses
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- En qu'elle cellule est ta liste déroulante?
2- Quel est le code qui est censé se déclencher automatiquement?
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.
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.
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 :
Puis change ta macro comme ceci :
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