[excel vba] Problema al asignar una macro a un botón

Thomaaaas Mensajes publicados 4 Estado Miembro -  
michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   -
Hola a todos,

En pocas palabras, aprendí a programar en VBA un poco tarde. No siempre es muy limpio, pero me arreglo. Aún así, tengo un problema recurrente: en algunas de mis macros, cuando intento asignarla a un botón (para una hoja de Excel), "esta fórmula es demasiado complicada para ser asignada a un objeto". A veces funciona, a veces no (la mayoría de las veces). Cabe mencionar que la macro funciona muy bien cuando la ejecuto desde la página de VBA (F5). No entiendo...

Ejemplo de esta macro tan simple: agrupa las pestañas siguientes en la pestaña "Recap"
Sub Synth()
Sheets("Recap").Select
EndIndicCode = Range("B1000").End(xlUp).Row
j = 5

For i = 0 To EndIndicCode - 17
feuille = Sheets("recap").Range("c17").Offset(i, 0).Value
Sheets(feuille).Select
Range("A:B").Select
Selection.Copy Destination:=Sheets("Synth").Cells(1, j)
Application.CutCopyMode = False
j = j + 3
Next i

Sheets("Synth").Range("A1").Select
End Sub

He revisado los foros antes de hacer mi pregunta.
¡Gracias (mucho!) de antemano!

PD: ¡Fue mi primera pregunta en Cómo funciona, y en un foro en general!

5 respuestas

  1. Thomaaaas Mensajes publicados 4 Estado Miembro
     
    Pequeña precisión: Excel 2010 :)
    0
  2. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
     
    Hola,

    Nos dices que quieres enviar a la hoja "recap" y en tu código envías copias a la hoja "synth"?...

    también nos dices que agrupa las pestañas, sin embargo, en tu código solo envías una sola pestaña llamada "hoja"... ¿entonces habría un botón en cada hoja?....

    en espera...

    Michel
    0
  3. Thomaaaas Mensajes publicados 4 Estado Miembro
     
    Hola Michel,

    Gracias por tu respuesta. Algunas precisiones:
    - De hecho, en la pestaña "recap", en C17:C60: hay el nombre de todas las pestañas.
    - La variable hoja permite seleccionarlas una por una.
    - Con el fin de copiar las columnas A:B y luego copiarlas en la pestaña "Synth" una tras otra (en resumen, en F:G para la pestaña 3, luego en I:J para la pestaña 4...).
    Por lo tanto, el botón estaría únicamente en "recap" o en "synth", me da igual :)

    Perdona por no haber sido más claro al principio.
    Que tengas un buen día y gracias de nuevo.
    0
  4. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
     
    Hola

    Algunas líneas me han planteado problemas de comprensión (puntos de interrogación)

    restituir los valores de las columnas A B de las hojas en "synth";propuesta:
    Option Explicit
    '-------------------------------------------
    Sub Sintetizar()
    Dim EndIndicCode As Integer, Lig As Integer, Hoja As String
    Dim Derlig As Integer, Col As Integer, T_hoja()
    'Pantalla bloqueada
    Application.ScreenUpdating = False

    With Sheets("recap")
    EndIndicCode = .Range("B1000").End(xlUp).Row
    Col = 5
    For Lig = 17 To EndIndicCode '???? no comprendí los -17
    Hoja = .Cells(Lig, "C")
    With Sheets(Hoja)
    Derlig = .Cells.Find("*", , , , , xlPrevious).Row
    T_hoja = .Range("A1:B" & Derlig).Value
    Sheets("Synth").Cells(1, Col).Resize(UBound(T_hoja), 2) = T_hoja
    Col = Col + 3 '???? +2 si es junto ....
    End With
    Next
    End With
    Sheets("Synth").Range("A1").Select
    End Sub
    Maqueta de trabajo:
    https://www.cjoint.com/?3Bch3xUCyLK

    --
    Michel
    0
  5. Thomaaaas Mensajes publicados 4 Estado Miembro
     
    Hola Michel,

    Debí haberte puesto el archivo en adjunto desde el principio.
    Extrañamente, puedo crear un botón con tu archivo, pero no con el mío (incluso poniendo tus macros en mi archivo).
    Adjunto el archivo, tomé como ejemplo la macro A3_OngletSynth. Pero también se aplica a A2_MajData, por ejemplo. (Y esto a pesar de que otras macros en el archivo pasan por un botón -situados en la pestaña Resumen-).

    https://www.cjoint.com/?0BcteDPtf8n

    Gracias por todo, Michel.
    Que tengas un buen fin de día.
    Saludos cordiales, Thomas.
    0
    1. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
       
      Hola,

      Estaré ausente todo el día... Sé paciente, Gracias
      0