VBA EXCEL - faire varier contenu d'une liste
Résolu
deyan
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
deyan Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
deyan Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis nul en macro excel mais j'aimerais comprendre.
Je souhaite attribuer une liste de choix déroulante à une case, cette liste doit pouvoir accepter de nouvelles lignes (ajoutée manuellement). Pour avoir un bout de code j'ai enregistré une macro en faisant les étapes de sélection de la liste de données à mettre dans la liste déroulante et j'ai utilisé ce code pour le mettre a diffèrent endroit de mon programme. Lorsque j'ajoute une nouvelle ligne (entre deux ligne déjà existante) la dernière ligne disparait car le tableau est défini et fixe. Je souhaite donc modifier mon code pour que cette dernière ligne soit fonction du nombre d'élément défini.
Voici mon code:
Range("B2").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=$O$1:$O$6"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
la liste des elements de la liste deroulante se trouve en O1:O6
Merci de votre aide
Je suis nul en macro excel mais j'aimerais comprendre.
Je souhaite attribuer une liste de choix déroulante à une case, cette liste doit pouvoir accepter de nouvelles lignes (ajoutée manuellement). Pour avoir un bout de code j'ai enregistré une macro en faisant les étapes de sélection de la liste de données à mettre dans la liste déroulante et j'ai utilisé ce code pour le mettre a diffèrent endroit de mon programme. Lorsque j'ajoute une nouvelle ligne (entre deux ligne déjà existante) la dernière ligne disparait car le tableau est défini et fixe. Je souhaite donc modifier mon code pour que cette dernière ligne soit fonction du nombre d'élément défini.
Voici mon code:
Range("B2").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=$O$1:$O$6"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
la liste des elements de la liste deroulante se trouve en O1:O6
Merci de votre aide
A voir également:
- VBA EXCEL - faire varier contenu d'une liste
- Liste déroulante excel - Guide
- Excel liste déroulante en cascade - Guide
- Déplacer une colonne excel - Guide
- Word et excel gratuit - Guide
- Fusionner deux cellules excel en gardant le contenu - Guide
7 réponses
Chez moi il insère bien la ligne mais le tableau s'arrête en O6, donc le dernier saute. Il y a des option a mettre ou un paramétrage des macro ???
Bonjour,
Peut-être mal compris mais il n'y a pas besoin de macro...
dans la validation de données tu écris dans liste-source
tu peux insérer ou supprimer une donnée ta liste nouvelle liste apparaitra avec toujours le denier membre en bas de la liste
Tant qu'on peut éviter du VBA...
mainteanant si tu tiens absolument à du vBA
tu ajoutes après la ligne delete
et dans
tu peux supprimer les param^tres facultatifs
.
mais ce n'est pas terrible-terrible comme exercice pour débuter car cela demandera une macro événementielle pour fonctionner chaque fois que tu cliqueras sur la cellule B2 afin d'éviter d'appeler un bouton.... si ce n'est pas bien compliqué à réaliser, ca rentre après avoir assimilé les notions de base :-)
Michel
Peut-être mal compris mais il n'y a pas besoin de macro...
dans la validation de données tu écris dans liste-source
=DECALER($O$1;;;NBVAL($O$1:$O$6);)
tu peux insérer ou supprimer une donnée ta liste nouvelle liste apparaitra avec toujours le denier membre en bas de la liste
Tant qu'on peut éviter du VBA...
mainteanant si tu tiens absolument à du vBA
tu ajoutes après la ligne delete
lig=range("O1").end(xldown).row
et dans
Formula1:="=$O$1:$O$" & lig
tu peux supprimer les param^tres facultatifs
.
IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True
mais ce n'est pas terrible-terrible comme exercice pour débuter car cela demandera une macro événementielle pour fonctionner chaque fois que tu cliqueras sur la cellule B2 afin d'éviter d'appeler un bouton.... si ce n'est pas bien compliqué à réaliser, ca rentre après avoir assimilé les notions de base :-)
Michel
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci de ton aide,
mais je pense que j'ai un probleme avec mon Excel, donc je vais voir avec un autre poste.
Je reviens vers toi, si c'est possible a ce moment la
Merci encore
mais je pense que j'ai un probleme avec mon Excel, donc je vais voir avec un autre poste.
Je reviens vers toi, si c'est possible a ce moment la
Merci encore