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
- Feuille de pointage excel - Télécharger - Tableur
- Bruler feuille de laurier - Guide
- Rechercher et remplacer word - 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