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 :

Mise à jour d'une cellule suite à choix liste déroulante


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    ingenieur
    Inscrit en
    Juin 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : ingenieur

    Informations forums :
    Inscription : Juin 2016
    Messages : 32
    Par défaut Mise à jour d'une cellule suite à choix liste déroulante
    Bonjour ,

    J'ai écrit la macro suivante, je voudrais que la subroutine Sub MAJ_MenuOp s'éxécute automatiquement quand je viens changer ma cellule C1, pourriez vous m'aideR?

    ******
    Sub ListesOp()

    Application.ScreenUpdating = False 'mise à jour de l'écran désactivée

    Sheets("Rapport 1").Select
    ActiveSheet.Range("A:$DY").AutoFilter Field:=4, Criteria1:="3.7 Prévalidé"
    ActiveSheet.ShowAllData

    Dim NbRef As Long
    NbRef = Application.WorksheetFunction.CountA(Sheets("Rapport 1").Range("$O:$O")) - 1

    Dim TabRefData101(20000, 0)
    Dim TabRefData103(20000, 0)

    Dim Cpt As Long
    Dim Cpt101 As Long
    Cpt101 = 0
    Dim Cpt103 As Long
    Cpt103 = 0

    Dim RefOp
    Dim Fiche
    Dim Concl_1
    Dim Concl_2


    For Cpt = 1 To NbRef

    RefOp = Sheets("Rapport 1").Range("O" & Cpt + 1).Value
    Fiche = Sheets("Rapport 1").Range("R" & Cpt + 1).Value
    Concl_1 = Sheets("Rapport 1").Range("CI" & Cpt + 1).Value
    Concl_2 = Sheets("Rapport 1").Range("CW" & Cpt + 1).Value

    If Fiche = "BAR-EN-101" And Concl_1 = "Non satisfaisant" Then

    ' If Fiche = "*101*" And (Concl_1 = "Non satisfaisant" Or Concl_2 = "Non satisfaisant") Then
    Cpt101 = Cpt101 + 1
    TabRefData101(Cpt101 - 1, 0) = RefOp
    ElseIf Fiche = "BAR-EN-103" And Concl_1 = "Non satisfaisant" Then
    ' ElseIf Fiche = "*103*" And (Concl_1 = "Non satisfaisant" Or Concl_2 = "Non satisfaisant") Then
    Cpt103 = Cpt103 + 1
    TabRefData103(Cpt103 - 1, 0) = RefOp
    End If

    Next


    Sheets("Menus").Range("A2:A" & Cpt101 + 1).Value = TabRefData101
    Sheets("Menus").Range("B2:B" & Cpt103 + 1).Value = TabRefData103

    With Sheets("Menus")
    .Activate
    .Range("A2:A" & Cpt101 + 1).Select
    ActiveWorkbook.Names.Add Name:=("Plage101"), RefersTo:="=" & "Menus!" & Selection.Address
    End With

    With Sheets("Menus")
    .Activate
    .Range("B2:B" & Cpt103 + 1).Select
    ActiveWorkbook.Names.Add Name:=("Plage103"), RefersTo:="=" & "Menus!" & Selection.Address
    End With

    Sheets("MAJ").Select
    Dim FicheCEE As String
    FicheCEE = Range("$C$1").Value
    Call MAJ_MenuOp(FicheCEE)


    ' :="=Menus!$A$2:$A$" & Cpt101

    Application.ScreenUpdating = True 'mise à jour de l'écran réactivée


    End Sub

    Sub MAJ_MenuOp(Fiche As String)
    '
    ' Macro2 Macro
    '

    Sheets("MAJ").Select

    If Fiche = "BAR-EN-101" Then
    Range("C2").Select

    With Selection.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="=Plage101"
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
    End With

    ElseIf Fiche = "BAR-EN-103" Then

    Range("C2").Select

    With Selection.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="=Plage103"
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
    End With

    End If

    End Sub

    ****

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour BPython,

    Il est bien de mettre le code déposé entre balises, avec le bouton
    Nom : 2022-10-28_01h21_16.png
Affichages : 74
Taille : 2,3 Ko


    Sinon pour lancer la Sub, il faut mettre dans la feuille ou se fait la modification
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Address = "$C$1" Then Call MAJ_MenuOp(Target.Value)
    End Sub
    A+

  3. #3
    Membre averti
    Femme Profil pro
    ingenieur
    Inscrit en
    Juin 2016
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : ingenieur

    Informations forums :
    Inscription : Juin 2016
    Messages : 32
    Par défaut
    Merci beaucoup pour la réponse!
    Je vais faire attention la prochaine fois pour le code

    autre question comment faire pour que l'affichage sur la cellule C2 soit bien la première valeur de la liste déroulante?

Discussions similaires

  1. [XL-2010] Modification d'une cellule après choix liste déroulante
    Par DELAU dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/07/2014, 18h16
  2. Réponses: 5
    Dernier message: 12/12/2009, 19h30
  3. Mise à jour d'une variable après choix dans une combobox
    Par ~Brouette~ dans le forum Langage
    Réponses: 1
    Dernier message: 21/12/2007, 11h09
  4. Réponses: 3
    Dernier message: 06/12/2007, 11h09
  5. Lancement d'une macro après mise à jour d'une cellule
    Par Mukade dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/10/2007, 11h52

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