2 cases avec listes Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
o
obi wan
Jeune membre
Jeune membre
Messages : 46
Inscrit le : 1 juillet 2016
Version d'Excel : 2013 FR

Message par obi wan » 1 juillet 2016, 10:10

Bonjour,
Je suis nouveau alors je me présente je m’appelle Christophe (dit obiwan), J’ai 43 ans je suis dans les Ardennes et je travaille dans un bureau d’études comme dessinateur sur SolidWorks. Je me débrouille sur Excel mais sans plus car un lien existe entre SolidWorks et Excel. Voilà les présentations son fait, je peux passer à ma question. Je suis charge de réaliser un fichier Excel pour réaliser une étude depuis un Excel, ce que je voudrais faire c’est un tableau ou il y aurait 2 cases (A ET B) une case (A) avec une liste oui ou non (ça je sais faire) et un autre case (B) avec un liste déroulante d’un pas de 250 (ça je sais faire). Ce que je ne sais pas faire, quand la première case (A) est =oui (B) = liste déroulante mais quand (A) = non (B)=0 et si je remets (A) est =oui (B) = liste déroulante etc….
Voilà merci et que la force soit avec vous.
f
frangy
Passionné d'Excel
Passionné d'Excel
Messages : 4'337
Appréciation reçue : 1
Inscrit le : 19 novembre 2012
Version d'Excel : 2007 FR

Message par frangy » 1 juillet 2016, 10:31

Bonjour Obiwan qui est newbie,

La liste de validation avec "Oui" et "Non" étant en A1,
tu crées 2 plages nommées,
la première contient les éléments de la liste avec le pas de 250 (par exemple M1:M21) et est nommée "Oui",
la seconde contient la valeur 0 (par exemple N1) et est nommée "Non".
Ensuite, dans la cellule B1, tu places une liste de validation avec la formule =INDIRECT(A1)

A+
o
obi wan
Jeune membre
Jeune membre
Messages : 46
Inscrit le : 1 juillet 2016
Version d'Excel : 2013 FR

Message par obi wan » 1 juillet 2016, 10:58

Bonjour frangy,
Alors j’ai fait tout comme tu m’as dit donc quand je bascule A1 = oui ou non effectivement B1 change mais quand c’est A1 =oui en B1 je n’ai pas accès à la liste, j’ai une valeur figée. Quand A1 =oui en B1 je voudrais pouvoir faire défiler la liste pour choisir une valeur du pas de 250.
Que la force soit avec toi.
teste 1.xlsx
(8.59 Kio) Téléchargé 4 fois
f
frangy
Passionné d'Excel
Passionné d'Excel
Messages : 4'337
Appréciation reçue : 1
Inscrit le : 19 novembre 2012
Version d'Excel : 2007 FR

Message par frangy » 1 juillet 2016, 11:16

Ben non, tu n'as pas fait tout comme je t'ai dit :k'res:
Dans la cellule B1, tu places une liste de validation avec la formule =INDIRECT(A1)

A+
Test_1.xlsx
(8.36 Kio) Téléchargé 3 fois
o
obi wan
Jeune membre
Jeune membre
Messages : 46
Inscrit le : 1 juillet 2016
Version d'Excel : 2013 FR

Message par obi wan » 1 juillet 2016, 11:28

frangy,

Merci pour le temps que tu m'accordes, le seul problème c'est que si tu mets A1 = non en B1 ne passe pas automatiquement à 0 il reste une valeur qui faut mettre à 0 manuellement. C’est justement ça qui me gêne, si l'un utilisateur dit non et qui ne change pas manuellement B1 je prends un risque énorme. D’où ma question de départ quand A1=non B1=0.

Merci et que la force soit avec toi.
f
frangy
Passionné d'Excel
Passionné d'Excel
Messages : 4'337
Appréciation reçue : 1
Inscrit le : 19 novembre 2012
Version d'Excel : 2007 FR

Message par frangy » 1 juillet 2016, 11:55

Dans ce cas, il faut que tu utilises VBA et une procédure évènementielle qui effectuera un traitement spécifique selon la valeur de A1.

A+
Test_1.xlsm
(15.46 Kio) Téléchargé 10 fois
o
obi wan
Jeune membre
Jeune membre
Messages : 46
Inscrit le : 1 juillet 2016
Version d'Excel : 2013 FR

Message par obi wan » 1 juillet 2016, 12:10

Frangy,
Bravo :clap:
c’est exactement ce qu’il me faut mais inutile de te dire que j’ai rien compris à tes explications. Je vais éplucher ton Excel pour comprendre. Par contre si tu as des tutos ou explications à me fournir pour m’expliquer comment faire je suis preneur.
Encore merci.
Et que la force soit avec toi.
f
frangy
Passionné d'Excel
Passionné d'Excel
Messages : 4'337
Appréciation reçue : 1
Inscrit le : 19 novembre 2012
Version d'Excel : 2007 FR

Message par frangy » 1 juillet 2016, 13:41

Comme je te l'ai dit, les fonctionnalités intégrées à Excel ne suffisent pas pour effectuer le traitement demandé.
Tu es obligé d' utiliser la programmation avec VBA (Visual Basic for Applications).
Voici le code utilisé (avec des commentaires en vert pour faciliter sa compréhension) :
'On utilise l'évènement Change de la feuille pour détecter une modification de la cellule A1
Private Sub Worksheet_Change(ByVal Target As Range)
    'Si plusieurs cellules ont été modifiées, on sort de la procédure
    If Target.Count > 1 Then Exit Sub
    'Si la cellule modifiée est A1, alors
    If Target.Address = "$A$1" Then
        'les événements sont désactivés
        Application.EnableEvents = False
        With Range("B1")
            'Effacement de B1
            .ClearContents
            With .Validation
                'La validation est supprimée
                .Delete
                'Si A1 a pour valeur "oui", alors
                If UCase(Range("A1").Value) = "OUI" Then
                    'on place la liste de validation correspondant à "Pas_250" dans B1
                    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
                    Operator:=xlBetween, Formula1:="=Pas_250"
                'Sinon, si A1 a pour valeur "non", alors
                ElseIf UCase(Range("A1").Value) = "NON" Then
                    'on affecte la valeur 0 à B1
                    Range("B1").Value = 0
                End If
            End With
        End With
        'les événements sont réactivés
        Application.EnableEvents = True
    End If
End Sub
Pour visualiser ce code, clic droit sur l'onglet de la feuille "Feuil1" puis Visualiser le code.

A+
o
obi wan
Jeune membre
Jeune membre
Messages : 46
Inscrit le : 1 juillet 2016
Version d'Excel : 2013 FR

Message par obi wan » 1 juillet 2016, 13:51

Frangy,
Vraiment merci, je vais tenter d‘adapte la macro sur mon fichier et te tiens au courant. Je n’ai aucune connaissance en VBA mais je suis curieux et acharné.
Merci bon week end
Et que la force soit avec toi
o
obi wan
Jeune membre
Jeune membre
Messages : 46
Inscrit le : 1 juillet 2016
Version d'Excel : 2013 FR

Message par obi wan » 21 juillet 2016, 08:15

Bonjour frangy,
J’ai bien avancé sur mon fichier excel grasse à ton aide. Je l’ai pratiquement terminé mais avant de le finalisé et de le diffusé je souhaiterai le protéger afin de limiter les modifications intempestifs. Mon problème est que si je le protège la macro ne fonctionne plus et je ne sais pas pourquoi, peux-tu m’éclairé ?

merci .
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message