Excel - Exécuter la macro lorsque l'élément est sélectionné dans la liste déroulante

Microsoft Office est un logiciel de bureau commercial avec des serveurs, des services et des applications de bureau organisés pour les systèmes d'exploitation Windows et Mac OS X. Ce logiciel Office contient une application appelée Microsoft Excel, qui est une application de tableur commercial contenant une programmation macro, des calculs, etc. Une macro est une série d'instructions dans Excel, qui effectue une tâche particulière. Si vous souhaitez exécuter une tâche spécifique de manière répétée, vous pouvez automatiser cette tâche avec une macro. Une liste déroulante vous permet de saisir les données dans une feuille de calcul à partir d'une liste d'entrées prédéfinie. Cela simplifie la saisie des données et limite le nombre de positions pour la saisie des données. Vous pouvez exécuter une macro différente pour chaque sélection de la liste déroulante.

Problème

J'ai été en mesure de créer une macro qui remplira la cellule de la colonne A avec la date et la cellule de la colonne B avec l'heure (avec des références relatives afin qu'il le fasse sur la ligne dans laquelle se trouve le curseur) et ai appelé c'est datetimeentry (c'est un module)

 Sub datetimeentry () '' datetimeentry Macro '' ActiveCell.Value = Date ActiveCell.Offset (0, 1) .Range ("A1"). Sélectionnez ActiveCell.Value = Time ActiveCell.Offset (0, 2) .Range ("A1 ") .Sélectionnez End Sub 
  • J'ai également créé une liste déroulante dans la colonne C parmi laquelle choisir. Ce que je veux faire, c'est ceci:
  • Je souhaite que la macro s'exécute une fois que j'ai sélectionné quelque chose dans la liste déroulante. Cette macro doit être exécutée sur la même ligne que la cellule dans laquelle je l'ai sélectionnée.

Par exemple, si je sélectionne dans la liste déroulante de la cellule c1156, je souhaite que la macro soit exécutée et insère la date dans A1156 et l'heure dans B1156, puis passe à la cellule D1156 pour que je puisse entrer une valeur.

Solution

Permettez-moi d’abord de dire que l’échec est une option très valable:

Vous devez définir cette fonction:

Private Sub Worksheet_Change (Cible ByVal en tant que plage)

End Sub

Disons que la feuille dont nous parlons est sheet1

  • Alors ouvrez le VBE et double-cliquez sur sheet1 sur l'explorateur de projet
  • Collez cette routine et lisez les commentaires dans le code concernant les blancs

 Private Sub Worksheet_Change (ByVal Target As Range) 'ici 3 est la colonne numéro 3 qui est la colonne C If (Target.Column 3), puis quittez Sub Application.EnableEvents = False thisrow = Target.Row If Target.Value = "" Alors "maintenant vous pouvez commenter le code s'il n'a pas de sens ', mais l'idée est de savoir si la cellule de la colonne C a été effacée, ' la date et l'heure correspondantes doivent également être effacées. Cellules (thisrow, "A") = "" Cellules (thisrow, "B") = "" Autres cellules (thisrow, "A") = Date Cells (thisrow, "B") = Heure de fin si Application.EnableEvents = True End Sub 

Notez que

Merci à rizvisa1 pour cette astuce sur le forum.

Article Précédent Article Suivant

Les Meilleurs Conseils