Macro: seleccionar todas las pestañas entre 2 límites

Resuelto
Frantoc37 Mensajes publicados 17 Estado Miembro -  
Theo.R Mensajes publicados 585 Estado Miembro -
Hola,

Tengo un archivo de excel con 2 pestañas tituladas "Borne 1" y "Borne 2".
Me gustaría crear una macro que seleccione todas las pestañas (cualquiera que sea su número) entre estas dos, para poder eliminarlas.

¿Alguien puede ayudarme?
Gracias :-)

3 respuestas

Theo.R Mensajes publicados 585 Estado Miembro 31
 
Hola,

Para ello, hay que proceder no por el nombre de la pestaña, sino por su posicionamiento.

En el código que les propongo, "Borne 1" es la 1ª pestaña y "Borne 2" la 9ª pestaña. Solo es necesario cambiar las variables a y b para ajustarse a su documento (a = nº "borne 1" + 1; b = nº "borne 2" - 1).
Sub test()

a = 2
b = 8

For i = b to a step -1
sheets(i).select
ActiveWindow.SelectedSheets.Delete
Next i

End sub
0
Frantoc37 Mensajes publicados 17 Estado Miembro
 
Gracias Théo por responder tan rápido.
Acabo de probar tu macro y funciona muy bien...
.. pero...
El número de pestañas que se ordenan entre el límite 1 y el límite 2 cambia regularmente. (Hay días en los que tengo 15 pestañas para procesar, otros 25...) La posición "numérica" del límite 2 no es, por tanto, siempre la misma... Así que no siempre puedo asignarle el lugar "9".

La macro que quiero implementar eliminará todas las pestañas que se encuentran entre el límite 1 y el límite 2 para luego importar otras pestañas para procesar.

PD: El límite 1 es fijo (así que no hay problema con esa pestaña...)
0
Theo.R Mensajes publicados 585 Estado Miembro 31
 
El siguiente código debería funcionar, solo hay que nombrar correctamente las pestañas de referencia como "Borne 1" y "Borne 2" (sin olvidar el espacio).
Sub test()

Sheets("Borne 1").select
a = ThisWorkbook.Worksheets.Count

Sheets("Borne 2").select
b = ThisWorkbook.Worksheets.Count

For i = b to a step -1
sheets(i).select
ActiveWindow.SelectedSheets.Delete
Next i

End sub
0
Frantoc37 Mensajes publicados 17 Estado Miembro > Theo.R Mensajes publicados 585 Estado Miembro
 
Buenas noches Théo
Lamentablemente no, no funciona... La macro que propones elimina cada pestaña comenzando por la última...
He intentado tu macro de todas formas, tratando de entender cómo modificarla, pero mis conocimientos de programación VBA son insuficientes... :-(
0
Theo.R Mensajes publicados 585 Estado Miembro 31 > Frantoc37 Mensajes publicados 17 Estado Miembro
 
Lo siento, respondí esta mañana, pero mi internet debió fallar porque veo que mi respuesta no se publicó..

En fin, mi macro debe eliminar las pestañas entre tus límites y los límites mismos.

Si no es así, ¿sería posible tener un documento a través de www.cjoint.com, por favor?

Atentamente,
0
Frantoc37 Mensajes publicados 17 Estado Miembro
 
Hola Théo,
Aquí está el archivo:
https://www.cjoint.com/c/FBjq1W0d8Xf

Gracias :-)
François
0
Theo.R Mensajes publicados 585 Estado Miembro 31 > Frantoc37 Mensajes publicados 17 Estado Miembro
 
El documento no es accesible (es la primera vez que veo que cjoint.com falla..)

¿Es posible volver a intentarlo, por favor? ;)
0
Theo.R Mensajes publicados 585 Estado Miembro 31
 
Bueno, de hecho mi código no estaba bien, lo siento, nos hice perder tiempo

El código correcto:
Sub test()
Application.DisplayAlerts = False

Sheets("Borne 1").Select

ActiveSheet.Next.Select

While ActiveSheet.Name <> "Borne 2"

ActiveWindow.SelectedSheets.Delete

Wend

Application.DisplayAlerts = True

End Sub
1
Frantoc37 Mensajes publicados 17 Estado Miembro
 
Super Théo,
Esta macro funciona de maravilla.
¡Muchas gracias por tu perseverancia! (y disculpa que te responda 2 días después, no había visto tu mensaje)
¡Muy buena noche! :-)

François
0
Theo.R Mensajes publicados 585 Estado Miembro 31 > Frantoc37 Mensajes publicados 17 Estado Miembro
 
No hay problema, encantado de haber podido ayudar ;)

Que sigas bien
0