Formule par rapport a liste déroulante

  • Initiateur de la discussion Initiateur de la discussion PMarciniak
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

PMarciniak

Guest
Bonjour,

Sur ma base de données j'ai deux colonnes "critique" et "lettre", chacune avec une liste deroulante avec les choix : "en cours" , "en révision", "validé", "imprimé" et "posté".
Ma troisieme colonne est "PostéC" comment faire une formule qui permette des lors que j'ai mis "oui" dans la derniere ("PostéC") les deux listes déroulantes se mettent automatiquement sur "posté"?

Merci
 
Re : Formule par rapport a liste déroulante

PMarciniak à dit:
Bonjour,

Sur ma base de données j'ai deux colonnes "critique" et "lettre", chacune avec une liste deroulante avec les choix : "en cours" , "en révision", "validé", "imprimé" et "posté".
Ma troisieme colonne est "PostéC" comment faire une formule qui permette des lors que j'ai mis "oui" dans la derniere ("PostéC") les deux listes déroulantes se mettent automatiquement sur "posté"?

Merci
Salut
Soit, comme dit vinz602n tu mets un fichier d'essai : la feuille concernée et 3, 4 lignes avec seulement ce qui concerne ton problème
Soit tu précises tes données :
Liste déroulante ? Liste de validation, contrôle ou formulaire ?
Colonne concernée ?

Tu ne peux pas faire un feedback sur les cellules (si A et B alors C, Mais si C alors A et B) par formule. Il faut passer par le VBA
Mais pour construire ta macro, il faut des infos
A+
 
Re : Formule par rapport a liste déroulante

PMarciniak à dit:
Salut
Clic-droit sur le nom de l'onglet(BDD), et tu fait un copier/coller de la macro suivante :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Err_Worksheet_Change
'Posté L /J
Dim Cel As Range
Application.EnableEvents = False
Application.ScreenUpdating = False
For Each Cel In Target
    If Cel.Column = 14 And UCase(Cel) = "OUI" Then
        Cel.Offset(0, -2) = "Posté"
        Cel.Offset(0, -4) = "Posté"
    End If
    If Cel.Column = 10 Or Cel.Column = 12 Then
        If Cells(Cel.Row, "J") = "Posté" And _
            Cells(Cel.Row, "L") = "Posté" Then Cells(Cel.Row, "N") = "Oui"
    End If
Next Cel
Sort_Worksheet_Change:
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    Exit Sub
Err_Worksheet_Change:
    MsgBox (Err.Number & " - " & Err.Description)
    Resume Sort_Worksheet_Change
End Sub
Quand la feuille change :
-On bloque la gestion des événements et du rafraîchissement écran
- Pour chaque cellule modufiée :
-- Si elle appartient à la colonne N et contient "Oui", on met posté en J et L
-- Si elle appartient à J ou à L
--- Si J="Posté" et L="Posté" on met "Oui" dans N
- On remet en route gestion événements et rafraîchissement écran

La gestion des événements : Son blocage évite le bouclage de la macro sur elle-même :
j'inscris Oui => lancement automatique de la macro => Posté => changement de la feuille => Oui => Changement de la feuille etc...
Donc, après l'avoir bloquée, les changements de la feuille ne lance plus la macro, jusqu'à ce qu'on la débloque

Si une erreur Excel arrive avant la remise en action de la gestion, on force la macro à se terminer en passant par une action de remise en route de la gestion des événements en gérant les erreurs

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
8
Affichages
828
Retour