VBA EXCEL - faire varier contenu d'une liste

Résolu/Fermé
deyan Messages postés 7 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 28 février 2011 - 23 févr. 2011 à 16:08
deyan Messages postés 7 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 28 février 2011 - 24 févr. 2011 à 15:28
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



A voir également:

7 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 644
23 févr. 2011 à 16:17
Bonjour,

A essayer en modifiant juste la syntaxe comme ceci :

Formula1:="=$O$1:$O6"

A tester
0
deyan Messages postés 7 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 28 février 2011
23 févr. 2011 à 16:22
Déjà testé mais avec la version 2003 d'EXCEL cela ne fonctionne pas mieux.
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 644
23 févr. 2011 à 16:24
Chez moi cela fonctionne en 2003, si on insère de nouvelles lignes en décalant vers le bas, automatiquement la borne inférieure de la liste de validation s'incrémente en O7, O8, ....
0
deyan Messages postés 7 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 28 février 2011
23 févr. 2011 à 16:40
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 ???
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 644
23 févr. 2011 à 16:50
C'est curieux, j'ai essayé de modifier quelques options mais pour l'instant je n'arrive pas a interdire l'extension de la liste.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 311
Modifié par michel_m le 23/02/2011 à 17:27
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
=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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
deyan Messages postés 7 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 28 février 2011
24 févr. 2011 à 09:46
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
0
deyan Messages postés 7 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 28 février 2011
24 févr. 2011 à 13:40
Bonjour,

Avec ta derniere proposition c'est genial ;=)

Merci de ton aide


PUB:
Si tu as besoin de rénovation d'intérieur ou de nouvelles fenêtres fait moi signe
dmiletic@fenestrabat.com
essaye aussi: //parissurprise.votreboutiquepro.com c'est l'activité de ma femme

Encore merci
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 311
24 févr. 2011 à 13:47
Pas de publicité commerciale sur le forum :-((
0
deyan Messages postés 7 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 28 février 2011
24 févr. 2011 à 15:28
C'etait juste pour te remercier
Mais OK pas de probleme :=)
Je le ferais pas la prochaine fois
0