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 :

rendre inactive une liste


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut rendre inactive une liste
    Bonjour à tous,

    J'ai deux listes et suivant la valeur de la première liste, je dois rendre l'autre inactive et la griser.

    La première liste se trouve en B5. Si elle prend la valeur "AKG" alors la liste située en C5 doit être inactive et grisée.

    J'ai essayé de bidouiller moi même mais ça ne marche pas. Pourriez-vous svp m'aider? et surtout : où dois-je placer ce code??? (je dois sélectionner la liste en C5 et l'associer à mon 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
    Sub GriserCellule()
     
    couleur = C5.BackColor
     
    Dim coul As Long
    If B5 = AKG Then
      test = False
      coul = &H8000000F
    Else
      test = True
      coul = couleur
    End If
    C5.Enabled = test
     
    With C5
      .Enabled = test
      .BackColor = coul
    End With
     
    End Sub
    merci pour votre aide
    Aud- (débutante)

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut canary et le forum
    Plutôt que par macro (pour la couleur, et encore, une MFC devrait suffire), pourquoi pas en couplant tes listes ?
    A+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    salut Gorfael,

    excuse-moi mais je ne comprends rien à tes fichiers excel
    tes fichiers sont liés? ils font quoi?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut canary te le forum
    Les deux fichiers traitent de listes de Validation Couplées :
    Test_liste.xls : la liste de D5 est asservie au choix de la liste en C5
    Listes couplées.xls : Les listes de la colonne C sont asservies aux choix en colonne B (à l'aide d'une formule en A).

    Comme on ne sait que c'est un sujet qui traite de "Liste", j'ai opté pour des listes de validation.
    A+

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    ok je comprends tes exemples de listes groupées mais cela ne peut pas aller pour ce que je veux faire. Car moi je souhaite :
    * rendre la case inactive
    * la grisée
    Il faut donc passer par une macro il me semble
    surtout que mon code est presque juste, il ne doit me manquer qu'un petit chouillia pour le debugguer....

    merci en tout cas, je garde tes exemples pour une autre applications
    Aud-

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut canary et le forum
    surtout que mon code est presque juste, il ne doit me manquer qu'un petit chouillia pour le debugguer....
    C'est toute la différence entre le vainqueur et le presque vainqueur

    La propriété Enabled n'est pas applicable aux Range.
    Ce que tu peux faire, par exemple, c'est utiliser la Macro WorksheetSelection_Change, et si ça concerne C5, vérifier qu'elle n'est pas grisée, sinon remettre le focus sur B5 (par exemple).

    ce qui donnerait des macros du genre :
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "B5" Then
    'si la cellule modifiée est B5, alors
        If Target = "AKG" Then
            [C5].Interior.ColorIndex = 48
        Else
            [C5].Interior.ColorIndex = xlNone
        End If
    End If
    End Sub
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address(0, 0) = "C5" Then
       If [C5].Interior.ColorIndex = 48 Then [B5].Activate
    End If
    End Sub
    Clic-droit sur le nom de l'onglet => Menu contextuel>>Visualiser le code
    C'est dans la feuille macro liée à la feuille de calcul qu'il faut mettre les macro.

    Pour les couleurs, je préfère utiliser Colorindex que color (les tests passent mieux).
    A+

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    426
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 426
    Points : 111
    Points
    111
    Par défaut
    Youhouuu!! ça marche trop bien! merki ! et du premier coup en plus trop fort

    juste un truc : quel est le contraire de "[B5].Activate"
    en gros comment la passer de désactivée à activée ?
    (parce que j'ai un bouton clear qui efface toutes les données mais quand j'efface, la case BE reste désactivée... embêtant!)

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut canary et le forum
    [B5].Activate
    J'aurais pu mettre [B5].Select. Mais comme j'utilise souvent des macro apprentissage, que je nettoye de leur Select, j'utilise Activate, qui sur une cellule revient au même
    j'ai un bouton clear qui efface toutes les données
    Donne ton code et on rendra celà possible (cellule BE ?).
    Ce que fait la macro, c'est qu'à chaque sélection de C5, si elle est grisée, il reselctionne B5 => si tu effaces B5, ou qu'elle contient autre chose que "AKG", elle redevient C5 peut être sélectionnée
    A+

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/12/2014, 11h49
  2. Rendre disabled une liste déroulante
    Par Trebor_ dans le forum Langage
    Réponses: 3
    Dernier message: 23/03/2008, 13h36
  3. Rendre inactive une combobox selon la valeur choisie dans une 1er combobox
    Par The Molo dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 14/12/2007, 13h34
  4. rendre une liste déroulante invisible
    Par 18Marie dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 31/08/2006, 14h36
  5. [List] Rendre visible une ligne
    Par grand_duck dans le forum Composants
    Réponses: 5
    Dernier message: 30/10/2005, 23h45

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