IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

MAJ entre 2 listes déroulantes


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de lerico
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 115
    Points : 90
    Points
    90
    Par défaut MAJ entre 2 listes déroulantes
    Bonjour à tous,

    j'ai deux liste déroulante sur une feuille, l'une contient des noms, l'autre contient les références de ces noms.
    Je voudrais que lorsque l'on choisit une valeur dans la liste déroulante des noms, la référence s'affecte dans la liste des références et inversement.

    Le problème s'est quand je choisis une valeur d'un liste et que je renseigne la référence dans l'autre liste, le programme tourne en rond. Il se met à rechercher suivant la référence, puisqu'elle a été changé.

    Je suis peut-être pas clair. Je vous met le programme ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Private Sub Worksheet_Change(ByVal target As Range)
     
    'Saisie du nom pour le numéro
    nomg = Range("D4")
     
    With Worksheets("donnees").Range("C2:C173")
        Set c = .Find(nomg, LookIn:=xlValues)
        If Not c Is Nothing Then
            ligne = c.Row
            num = Worksheets("donnees").Cells(ligne, 2)
        End If
    End With
     
    Range("F4") = num
     
    'Saisie du numéro pour le nom
    numg = Range("F4")
     
    With Worksheets("donnees").Range("C2:C173")
        Set c = .Find(numg, LookIn:=xlValues)
        If Not c Is Nothing Then
            ligne = c.Row
            nom = Worksheets("donnees").Cells(ligne, 3)
        End If
    End With
     
    Range("D4") = num
     
    End Sub
    Comment empêcher que la valeur trouvée, suivant le choix, ne soit pas considérer comme un changement ?

    Merci pour votre aide,

    LeRico

  2. #2
    Membre régulier Avatar de lerico
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 115
    Points : 90
    Points
    90
    Par défaut
    Je pense que la function Worksheet_Change ne convient pas.
    Il faudrait qu'il fasse la recherche seulement si l'on change la cellule D4 et idem pour F4.

    Est ce que s'est possible ?

    Voir Worksheet_SelectionChange. Mais je ne vois pas comment l'utiliser ?

    LeRico

  3. #3
    Membre régulier Avatar de lerico
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 115
    Points : 90
    Points
    90
    Par défaut
    J'ai un peu avancé.
    Le programme ci-dessous permet de limiter le changement aux 2 cellules concernées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Private Sub Worksheet_Change(ByVal target As Range)
     
    For Each target In Cells(4, 4)
        nomg = Range("D4")
     
        With Worksheets("donnees").Range("C2:C173")
            Set c = .Find(nomg, LookIn:=xlValues)
            If Not c Is Nothing Then
                ligne = c.Row
                num = Worksheets("donnees").Cells(ligne, 2)
            End If
        End With
     
        Range("F4") = num
    Next
     
    For Each target In Cells(4, 6)
        numg = Range("D4")
     
        With Worksheets("donnees").Range("B2:B173")
            Set c = .Find(numg, LookIn:=xlValues)
            If Not c Is Nothing Then
                ligne = c.Row
                nom = Worksheets("donnees").Cells(ligne, 3)
            End If
        End With
     
        Range("F4") = nom
    Next
     
    End Sub
    Malheureusement, cela ne marche que pour une liste déroulante :
    => la valeur choisie dans la 1er liste permet de mettre à jour la 2ème mais comme la valeur de la 2ème change, il cherche une valeur pour la 1er et ainsi de suite ...

    Ca boucle,

    LeRico

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/08/2008, 13h53
  2. requete parametree entre 2 listes déroulantes
    Par olodin dans le forum IHM
    Réponses: 10
    Dernier message: 15/06/2007, 15h37
  3. requete parametrée entre deux listes déroulantes
    Par olodin dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 15/06/2007, 09h12
  4. Dépendance entre 2 listes déroulantes
    Par Halzard dans le forum VBA Access
    Réponses: 1
    Dernier message: 25/05/2007, 16h26
  5. Correspondance entre 2 listes déroulantes
    Par willytito dans le forum VBA Access
    Réponses: 2
    Dernier message: 21/05/2007, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo