VBA - Sélection auto liste

Bonjour,

Je cherche a effectuer une action lors d'un changement de valeur d'une cellule en colonne B ou D

Vous comprendrez mieux avec le fichier ci-dessous:

J'ai 4 colonnes, elle fonctionnent par binômes (A&B, C&D ...)

Colonnes A et C sont des listes déroulantes.

Colonnes B et D ne peuvent accepter que la valeur 1.

J'ai une macro sur le code de la feuille 1 prête a exécuter le code que je cherche a mettre en place lorsque que renseigne la valeur 1 dans une des cellules des colonnes B ou D.

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
     If Target.Count > 1 Then Exit Sub
  If Target.Column = 2 Or Target.Column = 4 Then
    Select Case UCase(Target)
      Case "1"
      ' je souhaite inserer ici le code permettant
      ' de selectionner le premier item de la liste
      ' a coté de la valeur que je viens de renseigner

    End Select
  End If
End Sub

Ce que je souhaite c'est que lorsque je renseigne la valeur 1 en Col B ou D et que je valide il me choisisse a coté de ma valeur précédemment renseigné le premier item de la liste (en Col A si je viens de renseigner 1 en ColB, en ColC si je choisi en ColD etc...)

Je pense qu'il faut utiliser quelquechose comme

ComboBox.ListIndex = 0

Merci d'avance pour votre aide

Bonsoir,

Un exemple pour te montrer comment sélectionner la cellule contiguë à gauche:

Cdlt.

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    If Target.Count > 1 Then Exit Sub
    If Target.Column = 2 Or Target.Column = 4 Then
        Select Case Target
            Case 1
                MsgBox Target.Offset(, -1).Value
            Case Else
                ' en attente de code (sinon un If serait suffisant!)
        End Select
    End If
End Sub

Bonsoir et Merci Jean Eric,

j'ai bien compris que l’élément que tu as noté permet d'afficher la valeur de la cellule d'à coté.

JE n'arrive cependant pas a remplir mon champ avec le 1er élément de la liste.

j'ai remplacé le msgbox par un .select mais n'arrive pas a sélectionner mon 1er item list

Google est mon ami.. la recherche du forum aussi mais étant débutant en VBA j'ai un peu du mal.

Bonjour,

essaye peut être ceci :

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And Target.Column = 2 Or Target.Column = 4 Then
    With Target.Offset(0, -1)
        Application.EnableEvents = False
        .Value = Split(.Validation.Formula1, ";")(Target.Value - 1)
        Application.EnableEvents = True
    End With
End If
End Sub

A noter, modifier la validation de données des colonnes 2 et 4 et autoriser des entiers compris entre 1 et le nombre de données dans la liste de validation de la colonne d'à coté.

bonne journée

@+

Bonjour,

Bonjour Pierrot93

Greg71, Il va te falloir préciser ta demande

Cdlt

Bonsoir et merci,

je vais essayer d'être plus vair dans mon énoncé:

je souhaite que lorsque je renseigne la valeur 1 dans la colonne B ou D ma macro sélectionne automatiquement le premier élément de ma liste déroulante en colonne A ou C.

Exemple:

  • je renseigne "1" en D4, ma macro sélectionne le premier element de la liste en C4.
  • je renseigne "1" en B2, ma macro sélectionne le premier élément de la liste en A2
  • ...

Au final je n'ai rien a sélectionner à la main dans les colonnes A ou C, c'est la macro qui fait le travail.

Merci

Bonjour Greg, Jean-Eric

As tu testé les codes proposés ?

bonne journée

@+

Bonjour Pierrot le forum

excusez cette intrusion dans le fil , mais je ne peux pas ne pas saluer Pierrot.

Pierrot tu as peur que le compteur explose sur l'autre forum??

alors tu en mets une couche ici

a+

amicalement

Papou

Salut Pascal:)

Pierrot tu as peur que le compteur explose sur l'autre forum??

alors tu en mets une couche ici

Aarf non... je viens de temps en temps également par ici.... bonne journée à toi

Bonjour a tous,

J'ai essayé le code de Pierrot93 mais cela n'a pas l'air de fonctionner dans mon fichier.

Je n'ai pas mis de restriction sur la colonne B ou D comme tu le stipulais, mais la sélection automatique du premier élément de la liste en Colonne A ou C ne se renseigne pas lorsque je met 1 dans une des cellule des colonnes B ou D.

Je suis persuadé que nous allons trouver une solution

Merci pour votre aide !!

Re,

Je n'ai pas mis de restriction sur la colonne B ou D comme tu le stipulais

bah chez moi, sous excel 2003 et 2010, il existe une restriction de saisie colonnes B et D n'autorisant que des décimales, ce faisant via une validation de données...

Bonjour,

Désolé, je parlais du test que j'ai fait pour utiliser ton code sans préciser que je partait sur le même fichier mais en retirant les restrictions.

Bonjour,

ton fichier en retour, à tester sur les cellules jaunes, attention j'ai supprimé les colonnes c et d initiales..

bon dimanche

@+

Bonsoir,

je vois que ton code fonctionne mais ce n'est pas exactement ce que je souhaite,

je désire qu'il m'affiche le premier élément de la liste en colonne A si je met "1" dans la colonne B.

Il ne peux pas y avoir une autre valeur que 1 en colonne B.

Pour t'expliquer un peu le but:

mon fichier d'origine contient plusieurs onglets: Stock et Install nous intéresse.

J'ai créé des listes déroulantes dynamiques qui récupères les numéros de séries disponibles pour chaque matériels (matériel de type informatique => PC, Portables, sac a dos, disque dur, etc) de mon stock.

j'ai également certains type matériel qui ne sont pas gérés en numéros de série mais en AssetID. L'AssetID est un numéro généré automatiquement par un autre programme que je récupère dans mon fichier.

A chaque fois que je sectionne un élément d'une des listes dans mon onglet install, celui-ci est marqué comme installé et donc disparaît de ma liste déroulante.

Pour l'installation des mes matériels gérés en Asset ID, j'ai besoin uniquement de récupérer un Asset ID au hasard dans ma liste déroulante de préférence le premier disponible (puisque mes AID sont triés par ordre croissant)

C'est donc pour cela que je cherche a récupérer uniquement le premier élément de la liste.

Ton code fonctionne mais lorsque je tape 1 il récupère l’élément finissant par 1, 2 l’élément finissant par 2 etc.

Tu comprends je l’espère un peux mieux le but de ma demande.

Mon fichier ayant beaucoup d'informations confidentielles (nom, prénoms d'utilisateurs etc...) je ne souhaite pas le poster sur le forum. Si toutefois tu souhaite y jeter un coup d’œil, étant donner laide que tu m'apporte, je peux te l'envoyer en MP.

Merci

Bonjour,

Ton code fonctionne mais lorsque je tape 1 il récupère l’élément finissant par 1, 2 l’élément finissant par 2 etc.

non... le code proposé selectionne le 1er élément de la liste de validation si 1 en colonne B... le 2ème si 2 etc....maxi 4...

bonne journée

@+

Re,

si :

Il ne peux pas y avoir une autre valeur que 1 en colonne B.

et

C'est donc pour cela que je cherche a récupérer uniquement le premier élément de la liste.

alors... peut être :

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And Target.Column = 2 Or Target.Column = 4 Then
    With Target.Offset(0, -1)
        Application.EnableEvents = False
        If Target = 1 Then .Value = Split(.Validation.Formula1, ";")(0) Else .Value = ""
        Application.EnableEvents = True
    End With
End If
End Sub

Bonjour,

Petite contribution de début de semaine

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("B:B,D:D")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        Target.Offset(, -1) = Split(Target.Offset(, -1).Validation.Formula1, ";")(Target - 1)
    End If
End Sub

Bonsoir,

j'ai essayé de mettre vos codes dans le fichier d'exemple, la macro exécute bien de ce je souhaite.

Lorsque je tente de l’insérer dans mon fichier d'origine, au lieu de récupérer le premier élément de la liste, j'ai un 0 (Voir image ci-dessous) avec une fléché et un symbole que je ne connais pas et qui ne me donne aucune information.

Avez vous une idée ?

Merci !!


A priori , il s'agit de référence circulaire ... ?

Bonjour l'aveugle

Menu 'Formules',

Voir 'Repérer les antécédents/dépendants' et 'Supprimer les flèches'.

L'aide Excel peut t'aider à comprendre...

Cdlt

Rechercher des sujets similaires à "vba selection auto liste"