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 :

Liste de choix sans doublons dans une colonne


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Liste de choix sans doublons dans une colonne
    Bonjour à tous,
    J'utilise régulièrement excel pour des calculs basiques mais je rencontre ici un problème qui ne peux être résolu que par un bout de code, je pense. J'espère que l'un d'entre vous voudra bien me guider vers une solution.

    Alors voilà, j'ai un tableau avec une liste de tâche, chaque ligne représente une tache. Dans l'une des colonne se trouve la priorité de cette tache et dans chacune des cellules de cette colonne se trouve une liste déroulante par laquelle l'utilisateur peut assigner un nombre entier de 1 à 10.

    Ce que je voudrais c'est de ne pas avoir de tâche ayant la même priorité, autrement dit que deux cellules de cette colonne ne puisse pas avoir la même valeur. Pour ce faire, il faudrait quelque chose qui modifie les autres valeurs pour eviter les doublons sans changer l'ordre des valeurs, pour être plus clair, voici un exemple:

    manger 1
    dormir 2
    jouer 3
    courrir 4

    Si l'utilisateur assigne la valeur 2 à courrir on devrait avoir:

    manger 1
    dormir 3
    jouer 4
    courrir 2

    et si l'utilisateur assigne la valeur 3 à manger:

    manger 3
    dormir 2
    jouer 4
    courrir 1

    Un plus serait que les lignes du tableau soient rangées par ordre décroissant de la valeur "priorité" dés que l'utilisateur assigne une valeur.

    Merci par avance pour vos réponses.
    Bonne journée

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Bonjour LouFels, bienvenue sur le forum.
    Ta deuxième demande est facile, il suffit de trier tes données selon la colonne contenant l'ordre, non la tâche.
    Pour la modification de cet ordre, il faut mémoriser la valeur pré-existante dans la cellule avant d'inverser cet ordre dans la cellule le contenant précédemment.
    Pour ça, il faut utiliser les deux événements Change et SelectionChange de la feuille.
    Pour un test, tu places les tâches en colonne A, sans en-tête, et les ordres en colonne B
    Tu places le code suivant dans la feuille de code de feuil1 -> Editeur VBA -> deux clics sur le nom de la feuille, tu colles ce code
    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
    Public Rang, NoLigne
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range, firstAddress
        If Rang = "" Then Exit Sub
        With ActiveSheet.Columns("B:B")
            Set c = .Find(Target, LookIn:=xlValues, LookAt:=xlWhole)
            If Not c Is Nothing Then
                firstAddress = c.Address
                Do
                    If c.Row <> NoLigne Then
                        c.Value = Rang
                        Rang = ""
                        Exit Do
                    End If
                    Set c = .FindNext(c)
                Loop While Not c Is Nothing And c.Address <> firstAddress
            End If
        End With
        Range("A1").CurrentRegion.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Rang = Target
    NoLigne = Target.Row
    End Sub
    ... et tu testes
    A+

  3. #3
    Candidat au Club
    Inscrit en
    Février 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Merci
    Je vais essayer de jouer un peu avec la solution que tu proposes.
    Merci beaucoup!
    L

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Renseigner une liste sans doublon dans une feuille ou dans un userform
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 26/01/2009, 14h54
  2. Marquer les doublons dans une colonne
    Par webfranc dans le forum SQL
    Réponses: 2
    Dernier message: 30/04/2008, 20h10
  3. SELECT sur doublons dans une colonne
    Par vador972 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/01/2008, 14h21
  4. Selection si doublons dans une colonne
    Par PhilMarcellus dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/05/2007, 12h21
  5. [EXCEL] Mise en évidence des doublons dans une colonne
    Par dacid dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/10/2006, 19h14

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