Déplacer une ligne dans une autre feuille après saisie
Bonjour à tous,
J'ai un souci avec mon code. Je travaille actuellement sur un tableur de saisie des contrôles en production.
Une fois le contrôle terminé (dont les enregistrements sont effectués dans un tableur Excel) je souhaiterais archiver les contrôles terminés dans une deuxième feuille. Il me restera donc plus que les contrôles "actifs" dans la première feuille.
Ainsi, à la saisie d'un numéro de contrôle dans une Textbox, j'aimerais sélectionner la ligne correspondante au numéro saisie et la reporter dans une deuxième feuille.
Voici comment se matérialise ce petit formulaire :
Pour ce faire, voici le code sur lequel je m'arrache quelques cheveux :
Public Sub Button_Archiver_Click()
Application.ScreenUpdating = False
'On sélectionne la feuille 1
Sheets("Feuil1").Select
'LigneFeuille2 = Box_saisie_archive.Value
LigneFeuille2 = 1
'Nombre de ligne à analyser
NbLignes = 5000
For i = 1 To NbLignes
'Si il trouve la cellule correspondante à la valeur saisie dans la boîte de dialogue --> Il archive.
If Cells(i, 1).Value = Box_saisie_archive.Text Then
'On coupe la ligne
Range("A:AK").Cells(i, 1).Cut
'On sélectionne la Feuil2
Sheets("Feuil2").Select
'On garde sélectionné la ligne coupée
Range("A:AK").Cells(LigneFeuille2, 1).Select
contenu = Range("A:AK").Cells(LigneFeuille2, 1).Formula
'Tant qu'il y a du contenu sur une ligne, sélectionne la première ligne suivante qui est vide
While contenu <> ""
LigneFeuille2 = LigneFeuille2 + 1
contenu = Range("A:AK").Cells(LigneFeuille2, 1).Formula
Wend
Range("A:AK").Cells(LigneFeuille2, 1).Select
'Colle la ligne active sur la première ligne vide de la Feuille 2
ActiveSheet.Paste
'Retourne sur la feuille 1
Sheets("Feuil1").Select
LigneFeuille2 = LigneFeuille2 + 1
Range("A:AK").Cells(i, 1).Delete
'NbLignes = NbLignes - 1
End If
Next i
'On Error Resume Next
Archive_Form.Hide
Sheets("Feuil1").Select
Range("A1").Select
MsgBox "Pensez à supprimer votre alerte sous l'ERP !"
End Sub
Problème :
En espérant quelqu'un pourra me sortir de l'ornière !
Bonne journée,
Floo73
J'ai réussi à avancer un peu, maintenant j'arrive à couper/coller la ligne que je sélectionne via la saisie de mon numéro de contrôle mais je n'arrive pas à supprimer la ligne blanche/vide qu'il me laisse dans la feuille 1 ...
Public Sub Button_Archiver_Click()
Application.ScreenUpdating = False
'On sélectionne la feuille 1
Sheets("Feuil1").Select
'LigneFeuille2 = Box_saisie_archive.Value
LigneFeuille2 = 1
'Nombre de ligne à analyser
NbLignes = 5000
For i = 1 To NbLignes
'Si il trouve la cellule correspondante à la valeur saisie dans la boîte de dialogue --> Il archive.
If Cells(i, 1).Value = Box_saisie_archive.Text Then
'On coupe la ligne
'Range("A:AK").Cells(i, 1).Cut
Cells(i, 1).EntireRow.Cut
'On sélectionne la Feuil2
Sheets("Feuil2").Select
'On garde sélectionné la ligne coupée
'Range("A:AK").Cells(LigneFeuille2, 1).Select
Cells(LigneFeuille2, 1).EntireRow.Select
'contenu = Range("A:AK").Cells(LigneFeuille2, 1).Formula
contenu = Cells(LigneFeuille2, 1).Formula
'Tant qu'il y a du contenu sur une ligne, sélectionne la première ligne suivante qui est vide
While contenu <> ""
LigneFeuille2 = LigneFeuille2 + 1
'contenu = Range("A:AK").Cells(LigneFeuille2, 1).Formula
contenu = Cells(LigneFeuille2, 1).Formula
Wend
'Range("A:AK").Cells(LigneFeuille2, 1).Select
Cells(LigneFeuille2, 1).Select
'Colle la ligne active sur la première ligne vide de la Feuille 2
ActiveSheet.Paste
'Retourne sur la feuille 1
Sheets("Feuil1").Select
LigneFeuille2 = LigneFeuille2 + 1
'Range("A:AK").Cells(i, 1).Delete
'Cells(i, 1).EntireRow.Delete
NbLignes = NbLignes - 1
End If
Next i
'On Error Resume Next
Archive_Form.Hide
Sheets("Feuil1").Select
Range("A1").Select
MsgBox "Pensez à supprimer votre alerte sous l'ERP !"
End Sub
Donc, comment supprimer une ligne après mon couper/coller et décaler toutes les autres cellules remplies vers le haut ?
Bon après-midi,
Floo73
Bonjour,
Comme ça par exemple
Sheets("TA FEUILLE").Rows(TA REFERENCE AU NUMERO DE LIGNE).Delete Shift:=xlUp
cdlt
Bonjour,
Merci pour votre aide car je commencais à être légèrement désoeuvré !
Le problème persiste toujours
J'ai apporté cette modification :
Sheets("Feuil1").Rows(Box_saisie_archive.Text).Delete Shift:=xlUp
Voici le message d'erreur :
Visiblement, je n'ai pas assez de mémoire pour supprimer toute la ligne ...
Les informations contenues dans chaque ligne s'étendent jusqu'à la colonne AA. A votre avis, est-ce que je dois rajouter quelque chose du genre ? :
Sheets("Feuil1").Range("A:AA").Rows(Box_saisie_archive.Text).Delete Shift:=xlUp
Merci pour votre aide !
Floo73
Si j'ai bien compris, i = ta ligne active