Formulario en Word

Resuelto
CHATOUNETTE -  
CLOWNELLE Mensajes publicados 26 Estado Miembro -
Bonsoir,
Estoy creando un formulario en Word y no sé cómo hacer para que en la etiqueta Número de teléfono, al introducir el número, se muestre en tramos de 2 dígitos con un espacio que separe los 10 dígitos, por ejemplo (00 00 00 00 00). Igualmente, para la etiqueta Número de Seguridad Social, ¿cómo puedo hacer que al introducir los números, los espacios se coloquen entre ellos (por ejemplo: 0 00 00 00 000 000 00)?
Estoy trabajando desde casa (debido al confinamiento) y me gustaría avanzar en la creación de este formulario. ¡Gracias por tu ayuda!

6 respuestas

m@rina Mensajes publicados 27409 Fecha de registro   Estado Moderador Última intervención   11 561
 
Hola,

Hablas de un formulario, pero no sabemos de qué tipo de formulario estás hablando. Sin embargo, hay al menos tres tipos diferentes. Entonces, lo que deseas hacer es posible, pero depende de los controles utilizados.
https://faqword.com/index.php/word/formulaires-controles/911-le-point-sur-les-outils-de-formulaires

m@rina

--
Al menos la mitad de los usuarios hacen una pregunta y nunca regresan. A veces me pregunto por qué sigo respondiendo...
1
CHATOUNETTE
 
Buenas noches,
Estoy en Modo Creación, Personalizado con áreas de texto "Propiedades", menús desplegables y un calendario. Así que un formulario completado en la computadora. En algún momento, deseo que las personas ingresen su número de seguridad social y su número de teléfono. Quisiera un formato con espacios y no una sucesión de números. Gracias por el enlace. Atentamente, Sandra.
0
m@rina Mensajes publicados 27409 Fecha de registro   Estado Moderador Última intervención   11 561 > CHATOUNETTE
 
Hola,

No me respondas muy claramente, en relación con el enlace dado...
Bueno, a priori se trata de controles de contenido.
Lo que quieres hacer es posible únicamente mediante una macro.

Aquí tienes una macro que va a formatear el número de la seguridad social y el número de teléfono. Primero, debes poner etiquetas en tus dos controles (a través de las propiedades). En mi ejemplo, son "sécu" y "tél". Coloca esta macro en ThisDocument:

Private Sub Document_ContentControlOnExit(ByVal CC As ContentControl, Cancel As Boolean)
Dim nsecu, ntel
If CC.Tag = "sécu" Then
nsecu = CC.Range.Text
nsecu = Format(nsecu, "0 00 00 00 000 000 00")
CC.Range = nsecu
End If

If CC.Tag = ("tél") Then
ntel = CC.Range.Text
ntel = Format(ntel, "00 00 00 00 00")
CC.Range = ntel
End If
End Sub


Muestro aquí cómo poner esta macro
https://faqword.com/index.php/word/formulaires-controles/902-a-l-instar-des-champs-de-formulaire-peut-on-declencher-une-macro-a-la-sortie-d-un-controle-de-contenu?highlight=WyJjb250ZW50Y29udHJvbCJd

Es importante tener en cuenta que el formato se hará una vez que salgamos del control, ya que el evento es EXIT.

Para tu problema de protección, es importante elegir Protección de Formulario y solo los controles podrán ser completados.

m@rina
0
Chatounette > m@rina Mensajes publicados 27409 Fecha de registro   Estado Moderador Última intervención  
 
Hola Marina, bajo "Desarrollador", efectivamente inserté en "Aa" (Control de contenido de texto en bruto). Hice Alt+F11 y escribí la macro. La guardé correctamente. En "Propiedad" especifiqué en la línea "Etiqueta" la palabra "tél" para la línea que corresponde y en otro control de contenido de texto en bruto, especifiqué en la etiqueta "sécu". Restricté las modificaciones seleccionando "Relleno de formularios", lo guardé.
El problema es que cuando la persona llega a la línea del tél o a la línea de sécu, aparece: "Haga clic o presione aquí para ingresar texto" y cuando se introduce el número de teléfono, este texto no se elimina. Así que el número se mezcla con el texto "haga clic o presione aquí...". No entiendo, sobre todo porque en las otras celdas donde hay este mismo texto, al ingresar la información este texto se borra para dar paso a la información ingresada por la persona que completa el formulario. ¿De dónde puede venir esto?
¡Un gran GRACIAS Marina por esta macro! ¡Comienzo a llegar a lo esencial del asunto!
Sandra
0
m@rina Mensajes publicados 27409 Fecha de registro   Estado Moderador Última intervención   11 561 > Chatounette
 
Hola Sandra

Para poner un mensaje de entrada, hay que pasar al modo Creación y escribir el mensaje. Luego, una vez que se sale del modo Creación, hacer clic en el contenido hará desaparecer el mensaje.

De hecho, había un pequeño problema en la macro, ya que también formateaba el rótulo. Te pongo el documento aquí con las macros corregidas
https://www.cjoint.com/doc/20_03/JCBn1Z2OkrH_format-cc.docm

m@rina
0
CLOWNELLE Mensajes publicados 26 Estado Miembro > m@rina Mensajes publicados 27409 Fecha de registro   Estado Moderador Última intervención  
 
Marina, veo que estás mucho más cómoda que yo. Ya estoy muy contenta de haber logrado poner en práctica tus explicaciones para la macro. He hecho capturas de pantalla para que puedas visualizar mejor lo que tengo en mi pantalla, pero ¿cómo puedo enviártelas (cómo hiciste arriba para poner la macro)?
0
Raymond PENTIER Mensajes publicados 58208 Fecha de registro   Estado Colaborador Última intervención   17 478
 
Hola.

Solución 1 = Hacer el formulario en Excel, y no en Word.


Solución 2 = Insertar tablas de una fila y 14 columnas para el teléfono, una fila y 21 columnas para la SS.

https://www.cjoint.com/c/JCzboGpVIu7
--
¡Es genial, la jubilación! Sobre todo en las Antillas...
Raymond (INSA, AFPA)
0
CHATOUNETTE
 
Hola,
Le agradezco por esta información.
Sin embargo, en los formularios, ya he podido ver que se ingresa el número y los espacios se colocan automáticamente para pasar al siguiente cuadro y así poner un solo número por cuadro.
Aún en mi formulario, al final lo protegí mediante una contraseña y cuando lo pruebo, mis títulos siguen siendo modificables. Se puede escribir. ¿Tendría también una explicación que me pudiera ayudar?
Se lo agradezco de antemano.
0
CLOWNELLE Mensajes publicados 26 Estado Miembro
 
Hola Marina,
Para terminar con la macro anterior. Cuando se ingresan más de 10 dígitos en el teléfono o un número de más para el número de seguridad social (lo cual es posible actualmente), me gustaría saber si es posible insertar en la macro una instrucción que muestre un mensaje de error informando que hay un dígito de más.
¿Es posible o no?
Gracias de nuevo.
0
m@rina Mensajes publicados 27409 Fecha de registro   Estado Moderador Última intervención   11 561
 
Hola,

Es importante saber que las posibilidades en un control de contenido son bastante limitadas, a diferencia de los controles de Userform o incluso de ActiveX.

Como has comprendido, los eventos son limitados: solo se puede realizar una acción al entrar en el control y al salir.
Elimino de inmediato el mensaje al entrar que explica lo que se debe hacer y que rápidamente va a molestar a todos.

Al salir, se puede verificar el número de caracteres, también se puede verificar si es numérico. El problema es que los espacios son considerados como parte del formato numérico. Y si la persona ingresa espacios, esto generará un error...

Estoy pensando en lo que se puede hacer y vuelvo a contactarte.

m@rina

--
Al menos la mitad de los usuarios hacen una pregunta y nunca vuelven. A veces me pregunto por qué sigo respondiendo...
0
CLOWNELLE Mensajes publicados 26 Estado Miembro
 
Buenas noches Marina,

ok, gracias por esta información.

Hasta luego.

Sandra
0
m@rina Mensajes publicados 27409 Fecha de registro   Estado Moderador Última intervención   11 561
 
Re...

Aquí hay una macro que anula y reemplaza la anterior. Entonces, debes ir a tus macros y eliminar completamente la macro existente.

Esta macro verificará el número de dígitos ingresados, si la persona ha escrito los espacios o no. Si el número es correcto (10 para el número de teléfono y 15 para el número de seguridad social), el número será formateado, de lo contrario, habrá un mensaje (que puedes modificar si es necesario). Si la persona ha ingresado los espacios, no hay problema, pero podemos advertir que es innecesario.

Private Sub Document_ContentControlOnExit(ByVal CC As ContentControl, Cancel As Boolean)
Dim texto As String, i, Resultado, nb

texto = CC.Range.Text
If CC.ShowingPlaceholderText = False Then
If Not IsNumeric(texto) Then GoTo fin:

Select Case CC.Tag
Case "tél"
For i = 1 To Len(texto)
If IsNumeric(Mid(texto, i, 1)) Then
Resultado = Resultado & Mid(texto, i, 1)
End If
Next
CC.Range = Resultado
nb = CC.Range.Characters.Count

If nb <> 10 Then
MsgBox "el número no es correcto, debe tener 10 dígitos"
Else: texto = Format(texto, "0# ## ## ## ##")
CC.Range = texto
End If

Case "sécu"
For i = 1 To Len(texto)
If IsNumeric(Mid(texto, i, 1)) Then
Resultado = Resultado & Mid(texto, i, 1)
End If
Next
CC.Range = Resultado
nb = CC.Range.Characters.Count

If nb <> 15 Then
MsgBox "el número no es correcto, debe tener 15 dígitos"
Else: texto = Format(texto, "0 00 00 00 000 000 00")
CC.Range = texto
End If
End Select

End If
Exit Sub
fin: MsgBox "Número incorrecto"

End Sub


--
Al menos la mitad de los usuarios hacen una pregunta y nunca regresan. A veces me pregunto por qué sigo respondiendo...
0
m@rina Mensajes publicados 27409 Fecha de registro   Estado Moderador Última intervención   11 561
 
He hecho un artículo porque es una cuestión que debe interesar a bastantes usuarios. Ver aquí:
https://faqword.com/index.php/word/formulaires-controles/1111
0
CLOWNELLE Mensajes publicados 26 Estado Miembro
 
¡FUNCIONA!

Es genial que hayas creado un artículo sobre el tema.

Eres un genio, le diré a mi director que esto ha permitido crear un artículo.

Un placer.

Sandra
0