J'ai quelques lists déroulantes. ils contiennent une simple combinaison Y / N.
J'ai plusieurs feuilles de calcul externes dont je dois copyr et coller des données. Cependant, la colonne Y / N dans les spreads externes peut contenir le y / n en minuscules. ou Oui / NON text.
Si la valeur du text est y / n ou OUI / NON, j'aime qu'il soit conforme à la valeur de list Y / N
J'ai essayé d'append une formule aux cellules elles-mêmes, mais j'ai une erreur de reference circulaire.
J'ai ensuite tenté un script VBA:
Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo ErrorHandler: Dim cell As Range If Target.Column = 9 Then If (UCase(ActiveCell.Value) = "YES") Then ActiveCell.Value = "Y" ElseIf UCase(ActiveCell.Value) = "NO" Then ActiveCell.Value = "N" ElseIf UCase(Target.Value) = Empty Then ActiveCell.Value = "N" Else ActiveCell.Value = UCase(ActiveCell.Value) End If End If Exit Sub ErrorHandler: MsgBox "An error occured - error " & Err.Number & ": " & Err.Description End Sub
Cela fonctionne presque, il change la valeur de OUI à Y, etc. et vérifie les majuscules, mais il se bloque.
Ok, le script vbs semble être le path à parcourir. J'ai dû append l'Application.EnableEvents au script une fois que j'ai fait que excel cesse de s'écraser et j'ai obtenu les résultats que je search.
Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo ErrorHandler: Dim cell As Range If Target.Column = 9 Then Application.EnableEvents = False For Each cell In Target If (UCase(cell.Value) = "YES") Then cell.Value = "Y" ElseIf UCase(cell.Value) = "NO" Then cell.Value = "N" ElseIf UCase(cell.Value) = Empty Then cell.Value = "N" Else cell.Value = UCase(cell.Value) End If Next cell Application.EnableEvents = True End If Exit Sub ErrorHandler: MsgBox "An error occured - error " & Err.Number & ": " & Err.Description Application.EnableEvents = True End Sub