2 cases avec listes

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.

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+

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.

5teste-1.xlsx (8.59 Ko)

Ben non, tu n'as pas fait tout comme je t'ai dit

Dans la cellule B1, tu places une liste de validation avec la formule =INDIRECT(A1)

A+

5test-1.xlsx (8.36 Ko)

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.

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+

11test-1.xlsm (15.46 Ko)

Frangy,

Bravo

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.

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+

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

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 .

Bonjour,

Enlève la protection de la feuille en début de la procédure (voir méthode Worksheet.Unprotect) et rétablis-la en fin de procédure (voir méthode Worksheet.Protect).

A+

Bonjour,

et encore merci pour ton aide.

Rechercher des sujets similaires à "cases listes"