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

Excel Discussion :

Liste déroulante dynamique [XL-2010]


Sujet :

Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Chef opération transport urbain
    Inscrit en
    Avril 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Chef opération transport urbain
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2008
    Messages : 92
    Points : 112
    Points
    112
    Par défaut Liste déroulante dynamique
    Bonjour à tous,

    J'essaie d'informatiser une feuille manuscrite en excel pour être capable de transmettre plus rapidement l'information. Je pourrais le faire en PHP, mais comme nous n'avons pas encore un serveur interne dans l'entreprise, je m'essaie en excel avant.

    Voici la feuille à informatiser

    Dans les 2 lignes du bas, ce sont les numéro de véhicules utilisables, donc la liste de base. On ne s'occupera pas de la liste des véhicules en réparations pour l'instant. Je veux que pour chaque cellule de la colonne «Véhicule utilisé» on ait une liste déroulante pour choisir un véhicule disponible dans la liste du bas. Je veux aussi que lorsqu'on clique sur une autre cellule de véhicule, la liste déroulante n'affiche que les véhicule qui sont disponibles selon les heures d'utilisation.

    Un exemple concret : Si je mets un véhicule #1234 dans l'assignation A-07 (11h00 à 15h00), je veux que le véhicule #1234 soit disponible pour l'assignation P-08 (15h00-19h00).

    Je ne sais pas si c'est possible de le faire en VBA ou en formule.

    Voici ce que j'avais fait, mais je ne suis pas entièrement satisfait : http://www.tigercx.com/crap/OUTIL_Re..._TEMPLATE.xlsm

    Dans cette feuille excel, je me suis créé 3 colonnes pour dynamiser mes listes. 2 problèmes me viennent en tête. Le premier étant d'ordre esthétique, le fait d'avoir des espaces blancs dans la liste n'est pas agréable à l'oeil, mais je pourrais vivre avec. Ce qui ne fonctionne pas c'est le fait que si 2 pièces de travail ne se chevauchent pas (comme dans l'exemple donnée ci-haut), le véhicule utilisé dans la première pièce n'est toujours pas disponible pour la deuxième pièce.

    Je me débrouille relativement bien en excel, mais dans le cas présent, j'aimerais bien avoir une piste à suivre pour m'en sortir !

    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    La macro se trouve dans le module ThisWorkbook. Elle se déclenche quand tu change un numéro de bus :

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        Dim C As Range, Plage As Range, Tabl(), Ctr As Integer, Txt As String
        Dim X As Range, I As Integer, Tabl2(), Sem As Variant
        Dim HeurDeb As Date, HeurFin As Date
        Sem = Array("LUNDI", "MARDI", "MERCREDI", "JEUDI", "VENDREDI", "SAMEDI", "DIMANCHE")
        ReDim Tabl2(0)
        Ctr = -1
        If Not IsNumeric(Application.Match(Sh.Name, Sem, 0)) Then Exit Sub
        Application.EnableEvents = False
        With Sh
            ReDim Tabl(Application.CountA(.Range("B27:R28")) - 1)
            For Each C In .Range("B27:R28")
                If C.Value <> "" Then
                    Ctr = Ctr + 1
                    Tabl(Ctr) = C.Value
                End If
            Next C
            Set Plage = Union(.Range("B6", .Cells(5, 2).End(xlDown)), .Range("H6", .Cells(5, 8).End(xlDown)), _
            .Range("N6", .Cells(5, 14).End(xlDown))).Offset(, 4)
            If Intersect(Plage, Target) Is Nothing Then Exit Sub
            HeurDeb = Target.Offset(, -3)
            HeurFin = Target.Offset(, -2)
            For Each C In Plage
                Txt = ""
                Erase Tabl2
                ReDim Tabl2(0)
                Ctr = -1
                For Each X In Plage
                    If (HeurDeb >= X.Offset(, -3) And HeurDeb < X.Offset(, -2)) Or _
                        (HeurFin >= X.Offset(, -3) And HeurFin < X.Offset(, -2)) And X.Value <> "" Then
                        Ctr = Ctr + 1
                        ReDim Preserve Tabl2(Ctr)
                        Tabl2(Ctr) = X.Value
                    End If
                Next X
                If Tabl2(0) = "" Then
                    For I = 0 To UBound(Tabl)
                            Txt = Txt & "," & Tabl(I)
                    Next I
                Else
                    For I = 0 To UBound(Tabl)
                        If Not IsNumeric(Application.Match(Tabl(I), Tabl2, 0)) Then
                            Txt = Txt & "," & Tabl(I)
                        End If
                    Next I
                End If
                Txt = Right(Txt, Len(Txt) - 1)
                C.Validation.Delete
                C.Validation.Add xlValidateList, , , Txt
        Next C
        End With
        Application.EnableEvents = True
    End Sub
    Regarde le clahttps://www.dropbox.com/s/ryr57gg29f...LATE.xlsm?dl=0
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Membre régulier
    Homme Profil pro
    Chef opération transport urbain
    Inscrit en
    Avril 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Chef opération transport urbain
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2008
    Messages : 92
    Points : 112
    Points
    112
    Par défaut
    Merci beaucoup pour le document. Je l'ai essayé et ça semble très fonctionner. Il me reste à comprendre la macro car j'aime bien comprendre ce que je fais ! Si j'ai des questions, je reporterai ici !

    Merci encore !

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

Discussions similaires

  1. récupérer la valeur d'une liste déroulante dynamique
    Par grinder59 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 23/01/2006, 17h51
  2. Liste déroulante dynamique
    Par Screw16 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/10/2005, 20h37
  3. [HTML] liste déroulante dynamique
    Par lacousinee dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/08/2005, 20h51
  4. Liste déroulante dynamique ?
    Par Regis.C dans le forum Composants
    Réponses: 5
    Dernier message: 29/06/2005, 12h09
  5. [FORMULAIRE] Liste déroulante dynamique
    Par bchristo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/01/2005, 10h07

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