claro intentare ser un poco mas claro y resumido.
tengo en un solo archivo 10 hojas:
GRAl,ventas,pcm,vcm,pcr,vcr,vecm,vecr,vcrr,hoja1
el selection change esta en la hoja gral, los filtros en la hoja de ventas
dentro de la hoja gral tengo informacion de sumas de ventas del modelo que esta en la fila 3, en la columna b tengo a todos los vendedores de la empresa, en el rango "D4:J100" tengo la informacion de la suma de las ventas de cada vendedor por cada modelo de impresora, la funcion es que cuando yo seleccione la celda x, si el valor es igual a 0 no haga nada, en caso contrario, los filtros de modelo y vendedor de la hoja de ventas, tomen el valor de la columna y la fila donde se encuentre dicha celda, lo probe con una celda e intente cambiar solamente la celda dentro de la primer columna al llegar a la 100 el sistema me indica que el procedimiento es demasiado largo, no se como resumirlo de tal forma que cuando el valor de la celda seleccionada en este rango tome el encabezado de la columna y la fila correspondiente para no hacerlo repetitivo, la funcion que realice que me funciono es la siguiente:
//se hace en la hoja general
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
//todo comienza en la fila 4 de las columnas d,e,f,g,h,i,j y cambia cuando el usuario selecciona cada celda de este rango hasta la fila 100
If Sheets("gral").Range("D4").Value > 0 Then
// cambia conforme a la celda seleccionada
If Not Intersect(Target, Range("D4")) Is Nothing Then
//si la celda es seleccionada entonces filtra en la hoja de ventas del camo 3 y 7 el contenido de la columna en la fila 3 y el contenido de la columna c y la fila correspondiente a la celda
Sheets("VENTAS").Range("$A$1:$H$1").AutoFilter FIELD:=3, Criteria1:="*" & Sheets("GRAL").Range("D3").Value & "*"
Sheets("VENTAS").Range("$A$1:$H$1").AutoFilter FIELD:=7, Criteria1:="*" & Sheets("GRAL").Range("C4").Value & "*"
Else
End If
Else
End If
// y asi consecutivamente por cada celda por cada columna, los valores estan dentro d eun rango no de una tabla
If Sheets("gral").Range("D5").Value > 0 Then
If Not Intersect(Target, Range("D5")) Is Nothing Then
Sheets("VENTAS").Range("$A$1:$H$1").AutoFilter FIELD:=3, Criteria1:="*" & Sheets("GRAL").Range("D3").Value & "*"
Sheets("VENTAS").Range("$A$1:$H$1").AutoFilter FIELD:=7, Criteria1:="*" & Sheets("GRAL").Range("C5").Value & "*"
Else
End If
Else
End If
If Sheets("gral").Range("D6").Value > 0 Then
If Not Intersect(Target, Range("D6")) Is Nothing Then
Sheets("VENTAS").Range("$A$1:$H$1").AutoFilter FIELD:=3, Criteria1:="*" & Sheets("GRAL").Range("D3").Value & "*"
Sheets("VENTAS").Range("$A$1:$H$1").AutoFilter FIELD:=7, Criteria1:="*" & Sheets("GRAL").Range("C6").Value & "*"
Else
End If
Else
End If
If Sheets("gral").Range("D7").Value > 0 Then
If Not Intersect(Target, Range("D7")) Is Nothing Then
Sheets("VENTAS").Range("$A$1:$H$1").AutoFilter FIELD:=3, Criteria1:="*" & Sheets("GRAL").Range("D3").Value & "*"
Sheets("VENTAS").Range("$A$1:$H$1").AutoFilter FIELD:=7, Criteria1:="*" & Sheets("GRAL").Range("C7").Value & "*"
Else
End If
Else
End If
If Range("D8").Value > 0 Then
If Not Intersect(Target, Range("D8")) Is Nothing Then
Sheets("VENTAS").Range("$A$1:$H$1").AutoFilter FIELD:=3, Criteria1:="*" & Sheets("GRAL").Range("D3").Value & "*"
Sheets("VENTAS").Range("$A$1:$H$1").AutoFilter FIELD:=7, Criteria1:="*" & Sheets("GRAL").Range("C8").Value & "*"
Else
End If
Else
End If
If Range("D9").Value > 0 Then
If Not Intersect(Target, Range("D9")) Is Nothing Then
Sheets("VENTAS").Range("$A$1:$H$1").AutoFilter FIELD:=3, Criteria1:="*" & Sheets("GRAL").Range("D3").Value & "*"
Sheets("VENTAS").Range("$A$1:$H$1").AutoFilter FIELD:=7, Criteria1:="*" & Sheets("GRAL").Range("C9").Value & "*"
Else
End If
Else
End If
End Sub
intente explicarlo lo mejor posible comentame si es necesario que te mande el archivo