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 :

capture

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 : --> Le code me permet uniquement de coller le numéro saisi et non toute la ligne contenant les informations sur le contrôle ...

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 :

capture

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

Rechercher des sujets similaires à "deplacer ligne feuille saisie"