Agregar un dato en una tabla mediante un botón
marco
-
marco -
marco -
Hola,
me permito solicitarles de nuevo ayuda
Verán, tengo en una hoja una tabla de datos que sirve para la creación de una lista desplegable.
Quisiera que el usuario indique en una celda definida un nuevo dato y que pueda añadirlo a la tabla de datos mediante un botón "validar".
Y para llevar la perfección que los datos, tras este añadido, se ordenen alfabéticamente de forma automática.
Espero que puedan ayudarme; gracias de antemano.
Configuración: Windows / Firefox 73.0
me permito solicitarles de nuevo ayuda
Verán, tengo en una hoja una tabla de datos que sirve para la creación de una lista desplegable.
Quisiera que el usuario indique en una celda definida un nuevo dato y que pueda añadirlo a la tabla de datos mediante un botón "validar".
Y para llevar la perfección que los datos, tras este añadido, se ordenen alfabéticamente de forma automática.
Espero que puedan ayudarme; gracias de antemano.
Configuración: Windows / Firefox 73.0
10 respuestas
-
-
Hola,
primero gracias por su respuesta.
pero lo que me muestra es el estado actual de mi hoja de Excel con una tabla dinámica.
Lo que desearía es que el usuario introduzca una nueva dato en una celda definida (por ejemplo A1) y que al confirmar mediante un botón que he creado que se llamaría por ejemplo "guardar" ese dato se vaya incorporando a mi tabla manteniendo, si es posible, un orden alfabético (sería un plus).
Gracias de antemano- He hecho una lista desplegable dinámica siguiendo el enlace que te di.
La lista se encuentra en la Hoja1, en la columna A. La lista desplegable está en C2.
La celda definida para introducir una nueva fila es F2.
Tienes que adaptarla según el nombre de las hojas y las celdas de tu entorno.
Aquí está el código:
Option Explicit Private Sub CommandButton1_Click() Dim derniereLigne As Long derniereLigne = Range("A" & Rows.Count).End(xlUp).Row + 1 If Range("F2").Value = "" Then Exit Sub Range("A" & derniereLigne).Value = Range("F2").Value Trier 'de A à Z End Sub 'macro faite avec l'enregistreur de macro Sub Trier() ActiveWorkbook.Worksheets("Feuil1").ListObjects("Tableau1").Sort.SortFields. _ Clear ActiveWorkbook.Worksheets("Feuil1").ListObjects("Tableau1").Sort.SortFields. _ Add Key:=Range("Tableau1[[#All],[Mois]]"), SortOn:=xlSortOnValues, Order _ :=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Feuil1").ListObjects("Tableau1").Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub
Para ordenar, usa el grabador de macros como yo, haciendo el ordenamiento manual.
Voilà
@+ El Pivert
-
-
-
Hola,
gracias por tu respuesta.
Mi situación es un poco diferente, porque mi "lista desplegable" está en otra hoja del libro llamada "TEST"
Aquí tienes la información:
"La tabla" se encuentra en una hoja llamada "BASE DONNEES"
La lista desplegable está en una hoja llamada "TEST" en B12
y mi celda para ingresar el nuevo valor a insertar en la tabla está en D3 de la hoja "BASE DONNEES"
He modificado tu código con estos elementos pero no funciona.
Aquí está el código:Option Explicit
Private Sub CommandButton1_Click()
Dim derniereLigne As Long
derniereLigne = Range("C" & Rows.Count).End(xlUp).Row + 1
If Range("D3").Value = "" Then Exit Sub
Range("C" & derniereLigne).Value = Range("D3").Value
Ordenar 'de A a Z
End Sub
'macro hecha con el grabador de macros
Sub Trier()
ActiveWorkbook.Worksheets("BASE DONNEES").ListObjects("Tableau1").Sort.SortFields._
Clear
ActiveWorkbook.Worksheets("BASE DONNEES").ListObjects("Tableau1").Sort.SortFields._
Add Key:=Range("Tableau1[#All,[Mois]]"), SortOn:=xlSortOnValues, Order _
:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("BASE DONNEES").ListObjects("Tableau1").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Merci d'avance.
Bonne journée-
Vous devez l’adapter en fonction du nom des feuilles et des cellules de votre environnement
il suffit de regarder la macro enregistrée pour obtenir la bonne syntaxe
comme ceci:
Private Sub CommandButton1_Click() Dim derniereLigne As Long derniereLigne = Worksheets("BASE DONNEES").Range("C" & Rows.Count).End(xlUp).Row + 1 If Worksheets("BASE DONNEES").Range("D3").Value = "" Then Exit Sub Worksheets("BASE DONNEES").Range("C" & derniereLigne).Value = Worksheets("BASE DONNEES").Range("D3").Value Trier 'de A à Z End Sub
@+ Le Pivert- Hola,
una vez más lo siento, pero he pegado su código en el código del botón.
Crear una macro llamada Ordenar en la que he pegado este código'macro hecho con el grabador de macros
Sub Ordenar()
ActiveWorkbook.Worksheets("BASE DE DATOS").ListObjects("Tableau1").Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("BASE DE DATOS").ListObjects("Tableau1").Sort.SortFields. _
Add Key:=Range("Tableau1[#All,[Mes]]"), SortOn:=xlSortOnValues, Order _
:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("BASE DE DATOS").ListObjects("Tableau1").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
y eso no funciona.
¿Puede confirmar que mi enfoque es correcto y decirme qué es lo que no funciona?
Gracias
-
-
Hola,
si pego el código de mi último mensaje después del código del botón, la adición funciona, pero aparece un error de VB que dice "error de compilación" "end sub esperado".
Y otro punto: la adición se realiza al final de la lista pero no en orden alfabético. -
Hola,
lo siento pero una vez más estoy empezando.
He añadido "end sub" y efectivamente tiene sentido.
Una nueva error aparece :
"error de ejecución '1004'
La método 'Range' del objeto '_Worksheet' ha fallado -
si je ne mais pas le code au dessus de la ligne où dois-je le mettre ?
L'erreur s produit sur les lignes ci-dessous avec une flèche sur la dernière ligne :
ActiveWorkbook.Worksheets("BASE DONNEES").ListObjects("Tableau1").Sort.SortFields. _
Add Key:=Range("Tableau1[#All],[Mois]"), SortOn:=xlSortOnValues, Order _
:=xlAscending, DataOption:=xlSortNormal -
Hola,
vale para el grabador para la macro Ordenar
Para la columna, por razones prácticas las he movido efectivamente a la B pero hice las modificaciones en el código.
Por otro lado, respecto al código siguiente, ¿es normal que no haya nada antes de los ":"?
:=xlAscending
Gracias -
-
Hola,
aquí. Gracias
Option Explicit
Private Sub CommandButton1_Click()
Dim derniereLigne As Long
derniereLigne = Worksheets("BASE DONNEES").Range("B" & Rows.Count).End(xlUp).Row + 1
If Worksheets("BASE DONNEES").Range("D3").Value = "" Then Exit Sub
Worksheets("BASE DONNEES").Range("B" & derniereLigne).Value = Worksheets("BASE DONNEES").Range("D3").Value
Trier 'de A à Z
End Sub
Sub Trier()
ActiveWorkbook.Worksheets("BASE DONNEES").ListObjects("Tableau1").Sort.SortFields._
Clear
ActiveWorkbook.Worksheets("BASE DONNEES").ListObjects("Tableau1").Sort.SortFields._
Add Key:=Range("Tableau1[#All,[Mois]]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("BASE DONNEES").ListObjects("Tableau1").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub -
Hola,
acabo de eliminar la macro y volver a crearla y sigue apareciendo el mismo error.
¿Hay alguna forma de que os envíe el archivo? -