Rechercher et couper/coller dans une autre feuille de calcul

Résolu/Fermé
Krie001 - Modifié le 2 déc. 2020 à 10:11
 Krie001 - 2 déc. 2020 à 18:39
Bonjour !

J'ai créé un système de prêt de livre dans Excel. Ma première feuille de calcul contient mes enregistrements pour les prêts actifs.
Je désire faire une macro "Retour" qui cherche un enregistrement, qui va couper/coller l'enregistrement dans une seconde feuille de calcul. Et dans le meilleur des mondes, tout en supprimant la ligne de la première feuille qui est maintenant vide.

J'utilise un Userform qui demande le nom complet pour faire la recherche, voici ce que j'ai comme code pour l'instant :


Private Sub cmdRecercher_Click()

<bold>' Copie de la ligne dans Archive</bold>

Dim Rw As Range
Dim Ligne As Long

<bold>' Sélectionne l'ensemble des données</bold>

Sheets("Prêts actifs").Select
ActiveCell.SpecialCells(xlLastCell).Select
Range(Selection, Cells(1)).Select

<bold>'Boucle qui cherche la sélection voulu puis copie dans Archive</bold>
For Each Rw In Selection.Rows

Ligne = Rw.Row

If Rw.Cells(1).Value = txtNomComplet.Value Then
Rw.Copy Destination:=Worksheets("Archive").Cells(Ligne, 12).EntireRow

End If

Next Rw

' Pop-up d'avertissement de fin de macro.

MsgBox "Enregistrement transféré.", vbOKOnly, "Macro terminée"

'Fermeture du UserForm

Unload frmRetour
frmRetour.Hide


End Sub



Pour l'instant, cela trouve l'enregistrement désiré et le copie dans la seconde feuille (Archive), mais ne supprime pas l'enregistrement de la première feuille(Prêts actifs).
Aussi, lorsque l'enregistrement est copié dans l'autre feuille, celle-ci est sur la même ligne. Est-ce qu'il y a moyen d'intégrer un code pour que la macro insère l'enregistrement à la première ligne vide ?


Merci beaucoup !!
A voir également:

2 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
2 déc. 2020 à 10:10
Bonjour Krie, bonjour le forum,

Essaie comme ça :
Private Sub cmdRecercher_Click()
Dim OP As Worksheet 'déclare la variable OP (Onglet Prêts actifs)
Dim OA As Worksheet 'déclare la variable OA (Onglet Archive)
Dim R As Range 'déclare la variable R (Recherche)
Dim PLV As Long 'déclare la variable PLV (Premiere Ligne Vide)

Set OP = Worksheets("Prêts actifs") 'définit l'onglet OP
Set OA = Worksheets("Archive") 'définit l'onglet OA
'définit la recherche R (recherche la valeur exacte de la textbox [tctNomComplet] dans toutes les cellules de l'onglet OP
Set R = OP.Cells.Find(txtNomComplet.Value, , xlValues, xlWhole)
If Not R Is Nothing Then 'condition : si il existe au moins une occurrence trouvée
    PLV = OA.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1 'définit la première ligne vide de la colonne A de l'ongelt OA
    OP.Rows(R.Row).Copy OA.Cells(PLV, "A") 'copie la ligne de la première occurrence trouvée et la colle dans la cellule ligne PLV colonne A de l'onglet OA
    OP.Rows(R.Row).Delete 'supprime la ligne de l'occurrence trouvée dans l'onglet OP
    MsgBox "Enregistrement transféré.", vbOKOnly, "Macro terminée" 'message
End If 'fin de la condition
Unload frmRetour 'vide et ferme l userform [frmRetour]
End Sub

1
C'est exactement ce que j'avais besoin, merci beaucoup !
0