Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
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é"?
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é"?
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+
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
- 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.