VBA - Macro pour selectionner une ligne sous conditions
Résolu
jeannuslanus
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
jeannuslanus Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
jeannuslanus Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je dois, dans le cadre de mon stage, faire une macro qui recherche une valeur dans la colonne A de la feuille "suivi renego groupe". Cette valeur dépend de la cellule C2 d'une autre feuille intitulée "Saisie". Si le programme trouve la valeur dans "suivi renego groupe", il selectionne les 13 premières cellules de la ligne correspondante et les copie.
Pour l'instant voilà ce que j'ai réussi à faire mais je suis débutante donc c'est encore difficile pour moi et ça ne fonctionne pas!
'recherche macro
Sub recherche()
Sheets("Saisie").Selectderlig = Range("C2").End(xlUp).
Row Sheets("Suivi Renego Groupe").
Select Range("A2").Select
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1) = derlig Then Rows(i).Cut Sheets(2).Cells(Rows.Count, 1).End(xlUp)(2)
Next
End Sub
Merci beaucoup d'avance pour votre aide !
Je dois, dans le cadre de mon stage, faire une macro qui recherche une valeur dans la colonne A de la feuille "suivi renego groupe". Cette valeur dépend de la cellule C2 d'une autre feuille intitulée "Saisie". Si le programme trouve la valeur dans "suivi renego groupe", il selectionne les 13 premières cellules de la ligne correspondante et les copie.
Pour l'instant voilà ce que j'ai réussi à faire mais je suis débutante donc c'est encore difficile pour moi et ça ne fonctionne pas!
'recherche macro
Sub recherche()
Sheets("Saisie").Selectderlig = Range("C2").End(xlUp).
Row Sheets("Suivi Renego Groupe").
Select Range("A2").Select
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1) = derlig Then Rows(i).Cut Sheets(2).Cells(Rows.Count, 1).End(xlUp)(2)
Next
End Sub
Merci beaucoup d'avance pour votre aide !
A voir également:
- Vba selectionner ligne
- Partager photos en ligne - Guide
- Mètre en ligne - Guide
- Aller à la ligne excel - Guide
- Apparaitre hors ligne instagram - Guide
- Formulaire en ligne de meta - Guide
7 réponses
je les copie en transposé sous forme de liste dans l'onglet "saisie" à partir de la cellule C2 !
Merci beaucoup !
Merci beaucoup !
c'est genial merci beacoup ! par contre le copier coller se fait en ligne, comment modifier le programme pour faire plutot un "couper-coller transposé" où la ligne coupée disparait?
ca serait vraimet super !!!! :D
ca serait vraimet super !!!! :D
J'avais mal lu, excuse moi
je t'ai fait une macro mais tu aurais le m^me résultat plus simplement par formule avec RECHERCHEV
si tu ne connais cette bê^te là
https://www.commentcamarche.net/faq/s/recherchev
Sheets("saisie").Range("D2:O2") = .Range(.Cells(Lig, "B"), .Cells(Lig, "M")).Value
devient
Sheets("saisie").Range("C3:C14") = Application.Transpose(.Range(.Cells(Lig, "B"), .Cells(Lig, "M")))
je t'ai fait une macro mais tu aurais le m^me résultat plus simplement par formule avec RECHERCHEV
si tu ne connais cette bê^te là
https://www.commentcamarche.net/faq/s/recherchev
Sheets("saisie").Range("D2:O2") = .Range(.Cells(Lig, "B"), .Cells(Lig, "M")).Value
devient
Sheets("saisie").Range("C3:C14") = Application.Transpose(.Range(.Cells(Lig, "B"), .Cells(Lig, "M")))
c'est incroyable ça marche magnifiquement bien !!
merci de tout coeur !!
une dernière chose s vous avez encore quelques minutes à m'accorder:
j'ai créé une macro qui fonctionne très bien, le principe c'est que dans la feuille "saisie" on peut ajouter une ligne à la suite du tableau "suivi regnego groupe".
Grâce au programme "copie" que vous venez de me donner, je peux maintenant remplir les plages de "saisie" simplement à partir de la donnée que je rentre dans la cellule C2 que la macro va rechercher dans la feuille "suivi renego groupe".
l'idée serait de pouvoir supprimer la ligne si la valeur de C2 elle existe déjà dans la feuille "suivi renego groupe" pour "enregistrer" les données que j'entre dans la feuille "saisie".
serait il alors possible de modifier le programme suivant pourfaire cela? est-ce suffisamment clair pour vous ?
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
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" apparait dans la collonne A de la feuille C2, alors il faut supprimer la ligne correspondante".
Merci beaucoup d'avance !
merci de tout coeur !!
une dernière chose s vous avez encore quelques minutes à m'accorder:
j'ai créé une macro qui fonctionne très bien, le principe c'est que dans la feuille "saisie" on peut ajouter une ligne à la suite du tableau "suivi regnego groupe".
Grâce au programme "copie" que vous venez de me donner, je peux maintenant remplir les plages de "saisie" simplement à partir de la donnée que je rentre dans la cellule C2 que la macro va rechercher dans la feuille "suivi renego groupe".
l'idée serait de pouvoir supprimer la ligne si la valeur de C2 elle existe déjà dans la feuille "suivi renego groupe" pour "enregistrer" les données que j'entre dans la feuille "saisie".
serait il alors possible de modifier le programme suivant pourfaire cela? est-ce suffisamment clair pour vous ?
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
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" apparait dans la collonne A de la feuille C2, alors il faut supprimer la ligne correspondante".
Merci beaucoup d'avance !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
il faut simplement rajouter à mon programme cette fonction:
Si jamais la valeur de la cellule C2 de la feuille "saisie" existe dans la colonne "suivi renego groupe", alors il faut supprimer la ligne correspondante à la cellule qui se trouve dans "suivi renego groupe"
Si jamais la valeur de la cellule C2 de la feuille "saisie" existe dans la colonne "suivi renego groupe", alors il faut supprimer la ligne correspondante à la cellule qui se trouve dans "suivi renego groupe"
l'objectif est de mettre à jour des données en passant par une feuille de saisie: on recherche des informations qui sont dans le tableau "suivi groupe renego", à partir d'une donnée que l'on entre dans la feuille de saisie et elles s'affichent dans la feuille de saisie , on les mofidie et elles s'enregistrent dans le tableau "suivi groupe renego". Pour qu'elles s'enregistrent j'ai fait ce programme :
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
Mais les valeurs s'enregistrent à la suite comme des nouvelles valeurs sans écraser les précédentes. Je voudrais donc qu'elles continuent de s'enregistrer à la suite en supprimant les anciennes lignes..
Pöur 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) apparait dans la collonne A (de la feuille "suivi renego groupe")
Je sais 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 !!
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
Mais les valeurs s'enregistrent à la suite comme des nouvelles valeurs sans écraser les précédentes. Je voudrais donc qu'elles continuent de s'enregistrer à la suite en supprimant les anciennes lignes..
Pöur 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) apparait dans la collonne A (de la feuille "suivi renego groupe")
Je sais 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 !!
Bin, c'est la m^me dans l'autre sens :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 copier()
Dim Valeur As Variant, Lig As Integer
Valeur = Sheets("saisie").Range("C2")
With Sheets("suivi renego group")
On Error GoTo vide
Lig = .Columns("A").Find(Valeur, , , , , xlPrevious).Row
Sheets("saisie").Range("D2:O2") = .Range(.Cells(Lig, "B"), .Cells(Lig, "M")).Value
Exit Sub
vide:
MsgBox Valeur & " inconnu", vbCritical
End With
End Sub
Michel