Insertar calendario en la celda de Excel

Resuelto
dat -  
eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   -
Hola,

Estoy preparando un pequeño archivo en Excel 2007.
Tengo una columna destinada a recibir la fecha de puesta en servicio de un vehículo.
Para simplificar y hacer más cómodo el uso de este archivo para los futuros usuarios, me gustaría que, en el momento en que se selecciona la celda para introducir la fecha, aparezca un calendario en el que puedan hacer clic para introducir la fecha en la celda, algo más agradable...
El problema es que no soy muy versado en informática.
He probado a través de varios foros para jugar con VBA, pero no logro nada; ¿alguien podría explicarme amablemente, paso a paso, cómo hacerlo, con los códigos y los botones en los que hay que hacer clic... por favor?

Agradezco de antemano este superhéroe...
Configuración: Windows Vista

20 respuestas

  1. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
     

    If Not (Target.Column = 3 Or Target.Column = 5) Or Target.Row < 2 Or Target.Cells.Count > 1 Then
    3 et 5 étant les n° des colonnes concernées.

    Pour ton autre post tu te compliques la vie de vouloir faire un formulaire (si ce n'est que pour ça...). Sa gestion demande du temps que je n'aurais pas.
    Quand tu poses une question n'hésites pas à déposer un fichier exemple sur cijoint.fr et coller le lien dans le post. Tout le monde n'a pas le courage de recréer ton fichier et de plus ça ne collera pas avec le tien...

    Dans une feuille Liste crée toi tes listes et nommes les plages des modèles.
    Ex: en B1: Renault, en B2:B4 les modèles, sélectionner B1:B4 puis 'insertion / nom / créer...', cocher 'ligne du haut', valider
    Ta plage B2:B4 s'appelle maintenant Renault
    En A une liste des marques avec le titre (nommer aussi)

    Dans ta feuille de travail pour ta 1ère liste en A2:A8 tu fais une validation par liste avec =Marques
    Pour la liste en cascade une validation par liste en B2:B8 avec =INDIRECT($A2)

    exemple

    eric

    eric
    42
    1. dat
       
      Gracias Eric, funciona y te estoy muy agradecido; por fin podré presentar un archivo que se parezca a algo..
      Si tengo otras preguntas sobre estos programas, ¿cómo puedo contactarte directamente en este sitio?
      ¿También dominas Access?
      Gracias de nuevo y hasta pronto
      0
  2. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
     
    Hola a todos,

    Es en la hoja donde hay que añadir el control Calendar, y por lo tanto necesitas la barra de herramientas en Excel "normal".
    De lo contrario puedes subir tu archivo a cijoint.fr (en formato .xls) y pegar aquí el enlace proporcionado.
    Por otra parte solo podría guiarte sobre Excel 2003, en el 2007 hay que buscar...
    eric
    7
  3. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
     
    necesita modificar un poco la macro (atención hay una línea menos, copiar todo) y agregar otra.

    Private Sub Calendar1_Click() ActiveCell.Value = Calendar1.Value End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' si la selección en la hoja cambia (target es la referencia de la selección) If Target.Column <> 3 Or Target.Row < 2 Or Target.Cells.Count > 1 Then 'si la columna <>3 (C) o la fila <2 o la selección tiene más de 1 celda Calendar1.Visible = False 'entonces se oculta el calendario Exit Sub Else 'si no Calendar1.Top = Target.Offset(1, 0).Top + 2 ' alinear el calendario con la parte superior de la celda de abajo Calendar1.Left = Target.Left + 10 ' alinearlo a la izquierda de la celda 'Calendar1.LinkedCell = Target.Address ' poner la celda vinculada al control en la celda seleccionada If IsDate(Target.Value) Then 'si la celda seleccionada contiene una fecha Calendar1.Value = Target.Value ' recuperarla Else ' de lo contrario poner la fecha del día Calendar1.Value = Date End If Calendar1.Visible = True 'mostrar el calendario End If End Sub

    eric

    editar : he vuelto a modificar un poco el código para desplazar el calendario y poder seleccionar las celdas de abajo que estaban ocultas
    5
  4. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
     
    Buenas noches,

    Un ejemplo de lo que podrías hacer. Un clic en la columna C (excepto la fila 1) hace aparecer el calendario. El único pequeño problema es que el control de calendario proporciona una cadena y no una valor de fecha. Los cálculos sobre ello son posibles, pero una comparación de fechas sería incorrecta si no multiplicas por 1 el valor. No sabiendo tu nivel exacto, pregunta dónde te trabas...

    eric
    3
  5. dat
     
    Gracias Eriiic por haber respondido, siempre es un placer ver que se puede encontrar ayuda en Internet cuando el responsable de informática de su empresa ni siquiera se toma el tiempo de explicarlo... en fin...

    Sin embargo cuando digo que soy nulo en informática, desafortunadamente es verdad.... y aparte de la función Suma, si... no sé hacer nada....

    Entonces volviendo a nuestra pregunta, ¿puedes detallar por favor (si tienes 5 minutos por perder), los pasos detallados, los botones... en Excel 2007?
    He probado de copiar tu fórmula en VBA pero realmente no sé nada...
    En el momento en que quiero ejecutar, el programa me pide crear algo mientras yo creía haber terminado... no conozco nada sobre la forma de proceder. ¿Hay que crear un UserForm? ¿Cómo hacerlo?

    La fecha de puesta en servicio del vehículo debe estar en la columna G, salvo en G1 que constituye el título de la columna....

    No creía que fuera tan duro insertar un simple calendario en una celda...

    Gracias de antemano por tu valiosa ayuda
    2
    1. pijaku Mensajes publicados 13513 Fecha de registro   Estado Moderador Última intervención   2 773
       
      Hola a todos,
      Hola Eriiic,
      (por cierto, excelente tabla, muy buena solución)
      Bien para Dat, parece relativamente sencillo adaptar este código. Basta con seguir los pasos:
      1ª parte :
      en la hoja:
      - menú 'vista / barra de herramientas' marcar 'barra de herramientas de controles'
      - en esa barra hacer clic en la herramienta 'controles adicionales…' (a la derecha)
      - seleccionar 'control calendario 11.0'
      - dibujarlo en la hoja

      ¿eso no te supone problema?

      2ª parte el código : clic derecho en la pestaña de tu hoja y :
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      ' si la selección en la hoja cambia (target es la referencia de la selección)
      If Target.Column <> 3 Or Target.Row < 2 Or Target.Cells.Count > 1 Then
      'si n° columna<>3 (C) en tu caso, columna G sustituye 3 arriba por 7 o n° fila<2 o la selección abarca más de 1 celda
      Calendar1.Visible = False
      'entonces ocultamos el calendario
      Exit Sub
      Else
      'sino
      Calendar1.Top = Target.Offset(1, 0).Top
      ' alinear el calendario con la parte superior de la celda de abajo
      Calendar1.Left = Target.Left
      ' alinearlo a la izquierda de la celda
      Calendar1.LinkedCell = Target.Address
      ' poner la celda vinculada al control en la celda seleccionada
      If IsDate(Target.Value) Then
      'si la celda seleccionada contiene una fecha
      Calendar1.Value = Target.Value
      ' recuperarla
      Else
      ' de lo contrario poner la fecha de hoy
      Calendar1.Value = Date
      End If
      Calendar1.Visible = True
      'mostrar el calendario
      End If
      End Sub

      Prueba en un libro de Excel en blanco y cuéntanos dónde te quedas.
      --
      Atentamente,
      -- Lo que vale la pena hacer vale la pena hacerse bien --
      0
  6. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
     
    No te preocupes pijaku, lo haces bien.

    dat: dibujas el calendario donde quieras pero le das las dimensiones correctas.
    Por otro lado, después de dibujarlo hay que salir del modo 'construcción' haciendo clic en el icono con regla+lápiz+escalímetro.
    Luego haz clic en cualquier lugar: desaparece, haz clic en la columna correcta: aparece.
    eric
    2
  7. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
     
    Hola,

    el mismo comentado: calendar.xls
    Según sea necesario, podríamos completar las pruebas para que solo se muestre si la celda está vacía o contiene una fecha, para evitar la pérdida de datos.

    eric
    1
    1. UsulArrakis Mensajes publicados 7683 Estado Colaborador 3 196
       
      Hola eriiic
      te hago llegar este mensaje porque me gustaría saber
      1- si es posible colocar el calendario en 3 columnas en lugar de una sola (en mi caso E, F y M)
      2- si es posible en la macro desencadenar la multiplicación por 1 para poder usar la fecha (cálculo)

      gracias
      0
    2. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
       
      Hola Usul,

      Adaptación rápida por la valija que hay que hacer.... ;-)
      http://www.cijoint.fr/cjlink.php?file=cj201107/cijO2M6mst.xls

      Queda un pequeño problema (que quizá existía en la otra versión): al eliminar una fecha todavía aparece 12:00:00 AM
      Podrás completar si hace falta, creo
      Atención: declaración de una variable en un módulo.
      Mal hábito, creo que puedes traerla a la hoja, pero fuera de la sub

      eric
      0
    3. UsulArrakis Mensajes publicados 7683 Estado Colaborador 3 196
       
      gracias, no hace falta apresurarse, no hay ninguna prisa pero es agradable haber tomado tu tiempo valioso, así que felices vacaciones
      para mí es en agosto ;-)

      hablamos de ello en la vuelta a la actividad
      0
  8. dat
     
    Hola Eriiic,

    He conseguido dibujar un calendario en la hoja de Excel, bueno... lo dibujo en cualquier sitio, ¿no importa?
    Luego hice clic derecho en la pestaña "feuil1" todavía en modo Excel "normal" y pulsé en "ver código" ; hice clic ahí y introduje los datos de pijaku directamente. ¿Hasta aquí está bien?
    Pero una vez que ingresé el código (si es que no me equivoqué) ¿qué hay que hacer para ejecutarlo y ver si funciona, porque cuando pulso "ejecutar" me pide crear la macro, ¿no es eso lo que no hice?
    ¡Qué complicado es cuando no se entiende nada!

    Gracias a ti
    1
    1. pijaku Mensajes publicados 13513 Fecha de registro   Estado Moderador Última intervención   2 773
       
      No, una vez que has copiado y pegado el código, cerrada la ventana de Visual Basic (ahí es donde ves tu hoja de Excel) funciona todo solo, al hacer clic en las celdas de tu hoja...

      Editar: para Eriiic, me permito intervenir aquí sin querer entrometerme en vuestra conversación...
      --
      Cordialmente,
      -- Lo que vale la pena hacerse vale la pena hacerse bien --
      0
  9. dat
     
    ¡Ya funciona! ¡Gracias por tu paciencia y por tu ayuda... sin ti habría abandonado!
    Una última pregunta antes de hacer clic en "resuelto"; ¿cómo hacer para que cuando haga clic en una columna (aparce el calendario...), si salgo de ella sin hacer clic en una fecha no se ponga la fecha de hoy?
    Gracias de antemano por esta pregunta y gracias por ayudarme.
    1
  10. dobo69 Mensajes publicados 1593 Fecha de registro   Estado Miembro Última intervención   835
     
    Buenas noches,

    pasaba por aquí y, si me lo permiten, estaría muy interesado en una explicación del profesor eriiic...

    --
    Si no necesita nada, pídame.
    0
  11. dobo69 Mensajes publicados 1593 Fecha de registro   Estado Miembro Última intervención   835
     
    y pues mucha gracias, señor profesor, me iré a la cama menos tonto esta noche..

    --
    Si no necesita nada, pídame.
    0
  12. dat
     
    Hola y gracias por su respuesta

    Lamentablemente estoy atascado en la primera parte... No se ríe...

    Me explico:

    Menú de visualización... ¿Hay que hacerlo en VBA? ¿O simplemente en la hoja tal como está?
    Porque yo logro dibujar este calendario 12.0 yendo a VBA y haciendo clic en "nuevo userform" e insertando el calendario; ¿eso es correcto?
    0
  13. dat
     
    Muchas gracias a todos, funciona... ¿debería poner "resuelto" en alguna parte en este foro?

    Hasta pronto.
    0
  14. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
     
    Sí, es mejor. Pero si no estás registrado quizá no puedas.
    Lo hice por ti.
    Buena continuación...
    eric
    0
  15. dat
     
    Eric, otra pregunta,

    Tengo otra hoja en la que dos columnas están involucradas en la incorporación de un calendario; he conseguido hacer un copiar pegar, funciona para una de las dos; pero cuando vuelvo a COPIAR o pegar una segunda vez el código, no funciona.
    ¿Qué hacer?

    ¿Tendrías también la respuesta al nuevo tema que acabo de abrir? adjunto el enlace ,

    https://forums.commentcamarche.net/forum/affich-14933312-aide-formule-excel-et-grille-de-saisie

    Gracias una vez más y otra vez
    0
  16. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
     
    Es mejor publicar en el foro, su objetivo es que todos se beneficien de las respuestas.
    Y si yo no estoy, otros pueden responder, en privado...
    No, solo conozco lo mínimo sobre Access, lo siento.
    eric
    0
  17. gunbafo Mensajes publicados 55 Estado Miembro 3
     
    hola,

    Esta explicación es adecuada para una tarea que quiero ejecutar, pero encuentro un problema.

    Estoy en Excel 2003 y no encuentro en la herramienta "otros controles" la opción 'control calendario 11.0'.
    ¿Es un problema de la versión de Excel?

    Gracias por su ayuda para resolver el problema.
    0
  18. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
     
    Hola,

    A priori viene con Access, así que instala Access.
    Si no, busca en la red MSCAL.ocx o un equivalente

    eric
    0
  19. t4nch3
     
    Hola,

    Veo este tema desde hace algunos meses, pero como no encuentro la solución en otro lugar, me permito plantearte la pregunta.

    Me gustaría hacer exactamente lo que hace Eric, pero en Word.

    Finalmente, me gustaría hacer aparecer un calendario al hacer clic en una celda de mi tabla creada en Word.

    Y, a través de ese calendario, poder definir la fecha que me interesa.

    ¿Es posible?

    Gracias por vuestra ayuda.
    0
    1. Tqd Mensajes publicados 1 Estado Miembro
       
      Genial, ¡funciona!
      Ahora me gustaría aplicarlo en dos columnas lado a lado.
      Ej.: Fecha de seguimiento y fecha solicitada
      Parece que no puedo usar el mismo código porque obtengo un mensaje de error...
      ¿Qué debo hacer?
      0
  20. Loryth
     
    Hola,

    Me gustaría hacer exactamente lo mismo, pero ¿es posible que vuelvan a subir sus archivos de prueba para que entienda cómo funciona?
    Muchas gracias y buena tarde
    0
    1. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
       
      Hola,

      El control Calendar ya no existe en las nuevas versiones.
      MS cambia en casi cada versión; por ejemplo, en 2010 era el control DTPicker.
      Por ello te desaconsejo usarlo y tomar un calendario construido dentro de un formulario. Puedes encontrar múltiples ejemplos en la red.
      Aquí, el de pijaku por ejemplo: https://www.commentcamarche.net/faq/41159-vba-excel-toutes-versions-controle-calendrier-transposable
      eric
      0