Insertar calendario en la celda de Excel
Resuelto
dat
-
eriiic Mensajes publicados 24581 Fecha de registro Estado Colaborador Última intervención -
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...
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
-
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 -
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 -
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 -
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 -
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-
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 --
-
-
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 -
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-
-
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 -
-
-
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-
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 --
-
-
¡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. -
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. -
y pues mucha gracias, señor profesor, me iré a la cama menos tonto esta noche..
--
Si no necesita nada, pídame. -
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? -
Muchas gracias a todos, funciona... ¿debería poner "resuelto" en alguna parte en este foro?
Hasta pronto. -
Sí, es mejor. Pero si no estás registrado quizá no puedas.
Lo hice por ti.
Buena continuación...
eric -
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 -
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 -
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. -
Hola,
A priori viene con Access, así que instala Access.
Si no, busca en la red MSCAL.ocx o un equivalente
eric -
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. -
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-
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
-