VBA - Macro para seleccionar una fila bajo condiciones
Resuelto
jeannuslanus
Mensajes publicados
15
Fecha de registro
Estado
Miembro
Última intervención
-
jeannuslanus Mensajes publicados 15 Fecha de registro Estado Miembro Última intervención -
jeannuslanus Mensajes publicados 15 Fecha de registro Estado Miembro Última intervención -
Hola,
Debo, dentro del marco de mi estágio, hacer una macro que busque un valor en la columna A de la hoja "seguimiento renego grupo". Este valor depende de la celda C2 de otra hoja titulada "Entrada". Si el programa encuentra el valor en "seguimiento renego grupo", selecciona las 13 primeras celdas de la fila correspondiente y las copia.
Por ahora esto es lo que he logrado hacer pero soy principiante, así que aún es difícil para mí y no funciona!
'búsqueda macro
Sub búsqueda()
Hojas("Entrada").Selectderlig = Range("C2").End(xlUp).
Fila Hojas("Seguimiento Renego Grupo").
Seleccionar Range("A2").Select
Para i = 2 Hasta Cells(Rows.Count, 1).End(xlUp).Row
Si Cells(i, 1) = derlig Entonces Rows(i).Cut Sheets(2).Cells(Rows.Count, 1).End(xlUp)(2)
Siguiente
End Sub
¡Muchas gracias de antemano por tu ayuda!
Debo, dentro del marco de mi estágio, hacer una macro que busque un valor en la columna A de la hoja "seguimiento renego grupo". Este valor depende de la celda C2 de otra hoja titulada "Entrada". Si el programa encuentra el valor en "seguimiento renego grupo", selecciona las 13 primeras celdas de la fila correspondiente y las copia.
Por ahora esto es lo que he logrado hacer pero soy principiante, así que aún es difícil para mí y no funciona!
'búsqueda macro
Sub búsqueda()
Hojas("Entrada").Selectderlig = Range("C2").End(xlUp).
Fila Hojas("Seguimiento Renego Grupo").
Seleccionar Range("A2").Select
Para i = 2 Hasta Cells(Rows.Count, 1).End(xlUp).Row
Si Cells(i, 1) = derlig Entonces Rows(i).Cut Sheets(2).Cells(Rows.Count, 1).End(xlUp)(2)
Siguiente
End Sub
¡Muchas gracias de antemano por tu ayuda!
7 respuestas
-
Hola,
¿Y las copias dónde las haces?
--
Michel -
los copio transpuestos como lista en la pestaña "entrada" a partir de la celda C2. ¡Muchas gracias!
-
es genial, ¡muchas gracias! pero el copiar-pegar se hace en línea, ¿cómo modificar el programa para hacer en su lugar un "cortar-pegar transpuesto" donde la línea cortada desaparece?
¡sería realmente increíble !!!! :D-
Me equivoqué al leer, perdón te hice una macro pero tendrías el mismo resultado más simplemente con una fórmula usando BUSCARV si no conoces a esa “tonta” allí https://www.commentcamarche.net/faq/s/recherchev Sheets("saisie").Range("D2:O2") = .Range(.Cells(Lig, "B"), .Cells(Lig, "M")).Value se convierte en Sheets("saisie").Range("C3:C14") = Application.Transpose(.Range(.Cells(Lig, "B"), .Cells(Lig, "M")))
-
-
¡Es increíble, funciona maravillosamente!
¡muchas gracias de todo corazón!
una última cosa si tenéis aún unos minutos para mí:
he creado una macro que funciona muy bien, el principio es que en la hoja "saisie" se puede añadir una línea al final del cuadro "suivi regnego groupe".
Gracias al programa "copie" que me acabáis de dar, ahora puedo rellenar las rangées de "saisie" simplemente a partir de los datos que introduzco en la celda C2 que la macro va a buscar en la hoja "suivi renego groupe".
la idea sería poder eliminar la línea si el valor de C2 ya existe en la hoja "suivi renego groupe" para "grabar" los datos que introduzco en la hoja "saisie".
¿sería posible modificar el siguiente programa para hacer eso? ¿es suficientemente claro para vosotros?
Sub enregistrer()
'
' Enregistrer Macro
'
Sheets("Saisie").Select
Range("C2:C15").Select
Selection.Copy
Sheets("Suivi Renego Groupe").Select
Range("A2").Select
Do While Not IsEmpty(ActiveCell.Value)
ActiveCell.Offset(1, 0).Activate
Loop
Range("A81").Select
ActiveWindow.SmallScroll Down:=9
Sheets("Saisie").Select
Selection.Copy
Sheets("Suivi Renego Groupe").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
End
End Sub
End Sub
en clair il faudrait ajouter une alternative du style "ce programme s'applique quoi qu'il arrive mais si la valeur de la cellule C2 de la feuille "saisie" apparaît dans la colonne A de la feuille C2, alors il faut supprimer la ligne correspondante".
Merci beaucoup d'avance ! -
¿Es suficientemente claro para usted?
Absolutamente no
--
Michel -
solo hay que agregar a mi programa esta función:
Si alguna vez el valor de la celda C2 de la hoja "saisie" existe en la columna "suivi renego groupe", entonces hay que eliminar la fila correspondiente al valor que se encuentra en "suivi renego groupe"-
-
El objetivo es actualizar datos pasando por una hoja de entrada: buscamos información que está en la tabla "seguimiento grupo renegociación", a partir de un dato que introducimos en la hoja de entrada y se muestran en la hoja de entrada, lo modificamos y se guardan en la tabla "seguimiento grupo renegociación". Para que se guarden, hice este programa:
Sub enregistrer()
'
' Enregistrer Macro
'
Sheets("Saisie").Select
Range("C2:C15").Select
Selection.Copy
Sheets("Suivi Renego Groupe").Select
Range("A2").Select
Do While Not IsEmpty(ActiveCell.Value)
ActiveCell.Offset(1, 0).Activate
Loop
Range("A81").Select
ActiveWindow.SmallScroll Down:=9
Sheets("Saisie").Select
Selection.Copy
Sheets("Suivi Renego Groupe").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
End
End Sub
End Sub
Mais les valeurs s'enregistrent à la suite comme de nouvelles valeurs sans écraser les précédentes. Je voudrais donc qu'elles continuent de s'enregistrer à la suite en supprimant les anciennes lignes..
Pour cela, il faudrait compléter le programme ci-dessus avec une fonction qui supprime la ligne où la donnée C2 (de la feuille de saisie) apparaît dans la colonne A (de la feuille "suivi renego groupe")
Je sais que c'est assez complexe, mais mon boss n'a pas compris que j'étais en stage de com et pas de VBA ...
si vous réussissez à comprendre ce serait vraiment génial !! -
-
Bueno, es lo mismo en sentido contrario :o)
Option Explicit
'------
Sub enregistrer()
Dim Valeur, Lig As Integer
Valeur = Sheets("saisie").Range("C2")
With Sheets("Suivi Renego Groupe")
Lig = .Columns("A").Find(Valeur, , , , , xlPrevious).Row
Range(.Cells(Lig, "B"), Cells(Lig, "N")) = Application.Transpose(Sheets("saisie").Range("C3:C15"))
End With
End Sub -
-
-
Option Explicit
'---
Sub copiar()
Dim Valor As Variant, Fila As Integer
Valor = Sheets("saisie").Range("C2")
With Sheets("seguimiento renego grupo")
On Error GoTo vacio
Fila = .Columns("A").Find(Valor, , , , , xlPrevious).Row
Sheets("saisie").Range("D2:O2") = .Range(.Cells(Fila, "B"), .Cells(Fila, "M")).Value
Exit Sub
vacío:
MsgBox Valor & " inconnu", vbCritical
End With
End Sub