Validación de datos con lista desplegable dependiente

Validación de datos con listas dependientes

Hola Dante hace un tiempo me ayudaste con una macro para este archivo, este cuenta con una Lista desplegable de Países (P) y por ahora solo tiene los departamentos (Q) correspondientes a Colombia (Digo por ahora por que seguro más adelante necesitare vincular a cada país sus departamentos/provincias o poblaciones) pero en este caso en particular lo que necesito es que al elegir un departamento me traiga todos los municipios o ciudades (O) pertenecientes a este específicamente, trate de hacerlo con una validación de datos de lista dependiente y me arroja error. Es de aclarar que los nombres de los no los puedo cambiar ya que este archivo se carga en otro software donde ya tiene los datos así y cualquier cambio bloquearía la carga

Agradezco mucho tu colaboración

Te envío los macros que pusiste al archivo y las imágenes del archivo si necesitas el archivo original me cuentas

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
If Target.Row = 1 Then Exit Sub
'
Application.EnableEvents = False
If Intersect(Target, Range("Z1:Z5000")) Is Nothing Then
Target = UCase(Target)
Else
Target = LCase(Target)
End If
'
cols = Array("D", "P", "Q", "AD", "AE", "AJ", "AM", "AW")
noms = Array("GRUPOCUENTA", "PAISES", "DEPARTAMENTOS", "TIPOSAP", _
"CLASEIMPUESTO", "BANCOS", "CLASECUENTA", "GRUPOTESORERIA")
For i = LBound(cols) To UBound(cols)
If Not Intersect(Target, Columns(cols(i))) Is Nothing Then
Call PonerCodigo(Target, noms(i))
Exit For
End If
Next
Application.EnableEvents = True
End Sub
'
Sub PonerCodigo(Target, rango)
'Por.Dante Amor
Set b = Sheets("Bancos y Departamentos").Range(rango).Find(Target, lookat:=xlWhole)
If Not b Is Nothing Then
cod = b.Offset(0, -1)
Application.EnableEvents = False
With Target.Validation
.Delete
Target.Value = cod
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=" & rango
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Application.EnableEvents = True
End If
End Sub

Private Sub Workbook_Open()
Application.EnableEvents = True
End Sub

1 respuesta

Respuesta
1

H o l a:

Envíame tu archivo y con comentario me explicas lo que necesitas.

Buenos días Dante

Ya te envié el archivo, gracias!! 

H o l a:

Esta es la fórmula que tienes que utilizar en la validación de datos:

=INDIRECTO(BUSCARV(Q3, cod_depa, 2,0))

La causa del error es porque el nombre no existe en el Administrador de Nombres. Debes crear todos los rangos de municipios con su nombre de departamento.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Gracias Dante

Pero ahora tengo dos problemas

Los nombre de departamento que contienen dos palabras no me los permite crear y como dije antes no los puedo cambiar a una sola palabra por que así están en la base maestra, son NORTE DE SANTADER Y LA GUAJIRA, ¿qué puedo hacer ahí?

Y el otro problema es que al escribir la fórmula me dice que no puede encontrar unos de los rango especificados.

En la columna H va el nombre sin guión, en la columna I va el nombre con guión

De esa forma solucionamos el problema de los nombres que tienen espacio:

LA GUAJIRA

NORTE SANTANDER

SAN ANDRÉS

La fórmula:

=INDIRECTO(BUSCARV(Q2, cod_depa, 3,0))

Una vez que ya tienen nombre todos los rangos, ya no tendrás problemas.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas