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

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

  • Classeur1.xls
    29.5 KB · Affichages: 106
  • Classeur1.xls
    29.5 KB · Affichages: 103
  • Classeur1.xls
    29.5 KB · Affichages: 105
Dernière édition:

Papou-net

XLDnaute Barbatruc
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.
 

Boubix

XLDnaute Nouveau
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 :p.
Instructif ton code en tout cas

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

Merci beaucoup Papou-net
 

Discussions similaires

Statistiques des forums

Discussions
312 330
Messages
2 087 346
Membres
103 525
dernier inscrit
gbaipc