Rechercher et couper/coller dans une autre feuille de calcul
Résolu
Krie001
-
Krie001 -
Krie001 -
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 :
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 !!
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:
- Rechercher et couper/coller dans une autre feuille de calcul
- Couper une video - Guide
- Rechercher ou saisir une url - Guide
- Bruler feuille de laurier - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Calcul moyenne excel - Guide
2 réponses
Bonjour Krie, bonjour le forum,
Essaie comme ça :
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