Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[RESOLU]: Remplissage automatique champs en fonction d'une valeur

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 !

Boubix

XLDnaute Nouveau
Bonjour à tous,

j'aurais besoin d'un coup de pouce sur le sujet suivant.
Je souhaite, à partir d'une liste de choix, avoir un remplissage automatique de plusieurs cellules en fonction du choix effectué.

Je vous joint le fichier correspondant.

Pas de problèmes sur le premier choix, il me remplit bien les cellules voulues, or pour les choix suivants, il me renvoie la valeur "-4142", kesako?!
Je suppose que cela est lié au caractère événementiel de la procédure, mais mes compétences XL s'arrêtent là...
Autre piste, est-il possible de remplacer la valeur False 'x1none' par un nouveau Case?

Ci-dessous la macro en l'état actuel:

-----------

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count = 1 Then

  Select Case Target.Column
   Case 17 'Modif de la colonne Q = Léger-> Colonnes AF à AI + AP = N/A
   Range("AF" & Target.Row).Resize(1, 4) = IIf(Target = "Léger", "N/A", x1None)
   Range("AP" & Target.Row) = IIf(Target = "Léger", "N/A", xlNone)
   Case 17 'Modif de la colonne Q = Diffus -> Colonnes AF à AI + AP = N/A
   Range("AF" & Target.RowDiffus).Resize(1, 4) = IIf(Target = "Diffus", "N/A", x1None)
   Range("AP" & Target.Row) = IIf(Target = "Diffus", "N/A", xlNone)
   Case 17 'Modif de la colonne Q = Autre -> Colonnes AF + AP = N/A
   Range("AF" & Target.Row) = IIf(Target = "Autre", "N/A", xlNone)
   Range("AP" & Target.Row) = IIf(Target = "Autre", "N/A", xlNone)
  End Select
  
End If

End Sub

-------------

Nous avons donc les troix choix: Léger / Diffus / Autre, avec un remplissage par 'N/A' des colonnes AF à AI + AP dans les 2 premiers cas, et AF + AP dans le 3ème cas.

Merci d'avance !
 

Pièces jointes

Dernière édition:
Re : Help!: Remplissage automatique champs en fonction d'une valeur

Bonjour Boubix,

Je te propose d'essayer avec le code suivant :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Count = 1 Then
  Select Case Target.Value
    Case Is = "Léger", Is = "Diffus"
      Range("AF" & Target.Row & ":AI" & Target.Row & ",AP" & Target.Row) = "N/A"
    Case Is = "Autre"
      Range("AF" & Target.Row & ",AP" & Target.Row) = "N/A"
    Case Else
      Range("AF" & Target.Row & ":AI" & Target.Row & ",AP" & Target.Row).ClearContents
End Select
End If
Application.EnableEvents = True

End Sub

Je ne sais pas si j'ai bien tout compris, mais je pense que tu n'auras aucun mal à adapter ce code le cas échéant.

Ton raisonnement concernant le "Select Case" était erroné, voilà poutquoi ça ne marchait pas comme il faut.

Par ailleurs, lorsque tu utilises l'événement "Worksheet_Change", n'oublie jamais de commencer et finir le code par "Application.EnableEvents = True/False", sous peine d'avoir des dysfonctionnements car la procédure se réexécute à chaque modification demandée par cette procédure.

Espérant avoir répondu.

Cordialement.
 
Re : Help!: Remplissage automatique champs en fonction d'une valeur

En effet, je viens de voir mon erreur, j'étais parti au départ sur Target.Column car je voulais prendre en compte les modifs sur plusieurs colonnes...

Merci pour l'astuce sur la fin du code, c'était la première fois que j'utilisais Worksheet_Change 😛.
Instructif ton code en tout cas

Je vais tester ça et je te donne le résultat.

Merci beaucoup Papou-net
 
- 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

Discussions similaires

Réponses
3
Affichages
969
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…