Astuce: Les autres langues sont Google-Traduction. Vous pouvez visiter le English version de ce lien.
Se connecter
x
or
x
x
S'enregistrer
x

or

Comment déplacer la ligne entière vers une autre feuille en fonction de la valeur de la cellule dans Excel?

Pour déplacer la ligne entière vers une autre feuille en fonction de la valeur de la cellule, cet article vous aidera.

Déplacer la ligne entière vers une autre feuille en fonction de la valeur de la cellule avec le code VBA

Déplacer la ligne entière vers une autre feuille en fonction de la valeur de la cellule avec Kutools for Excel


Sélectionnez facilement des lignes entières en fonction de la valeur de la cellule dans une colonne certian:

Le bouton Sélectionner des cellules spécifiques utilité de Kutools for Excel peut vous aider à sélectionner rapidement des lignes entières basées sur la valeur de la cellule dans une colonne certian dans Excel comme ci-dessous capture d'écran montré. Après avoir sélectionné toutes les lignes en fonction de la valeur de la cellule, vous pouvez les déplacer manuellement ou les copier dans un nouvel emplacement comme vous le souhaitez dans Excel.

Kutools for Excel: avec plus que 200 compléments Excel pratiques, libre d'essayer sans limitation dans les jours 60. Téléchargez l'essai gratuit maintenant!


Déplacer la ligne entière vers une autre feuille en fonction de la valeur de la cellule avec le code VBA


Comme illustré ci-dessous, vous devez déplacer la ligne entière de Sheet1 vers Sheet2 si un mot spécifique "Done" existe dans la colonne C. Vous pouvez essayer le code VBA suivant.

1. presse autre+ F11 touches simultanément pour ouvrir le Microsoft Visual Basic pour applications fenêtre.

2. Dans la fenêtre Microsoft Visual Basic pour Applications, cliquez sur insérer > Module. Ensuite, copiez et collez le code VBA ci-dessous dans la fenêtre.

Code VBA 1: déplacer la ligne entière vers une autre feuille en fonction de la valeur de la cellule

Sub Cheezy()
'Updated by Kutools for Excel 2017/8/28
    Dim xRg As Range
    Dim xCell As Range
    Dim I As Long
    Dim J As Long
    Dim K As Long
    I = Worksheets("Sheet1").UsedRange.Rows.Count
    J = Worksheets("Sheet2").UsedRange.Rows.Count
    If J = 1 Then
       If Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Then J = 0
    End If
    Set xRg = Worksheets("Sheet1").Range("C1:C" & I)
    On Error Resume Next
    Application.ScreenUpdating = False
    For K = 1 To xRg.Count
        If CStr(xRg(K).Value) = "Done" Then
            xRg(K).EntireRow.Copy Destination:=Worksheets("Sheet2").Range("A" & J + 1)
            xRg(K).EntireRow.Delete
            If CStr(xRg(K).Value) = "Done" Then
                K = K - 1
            End If
            J = J + 1
        End If
    Next
    Application.ScreenUpdating = True
End Sub

Note: Dans le code, Sheet1 est la feuille de calcul contient la ligne que vous souhaitez déplacer. Et Sheet2 est la feuille de calcul de destination dans laquelle vous allez localiser la ligne. "C: C"Est la colonne contient la valeur certaine, et le mot"Terminé"Est la valeur certaine que vous allez déplacer la ligne basée sur. Veuillez les changer en fonction de vos besoins.

3. appuie sur le F5 clé pour exécuter le code, la ligne répondant aux critères de Sheet1 sera immédiatement déplacée vers Sheet2.

Note: Le code VBA ci-dessus va supprimer les lignes des données d'origine après avoir déplacé vers une feuille de calcul spécifiée. Si vous souhaitez uniquement copier les lignes en fonction de la valeur de la cellule au lieu de les supprimer. Veuillez appliquer le code VBA 2 ci-dessous.

Code VBA 2: Copier la ligne entière dans une autre feuille en fonction de la valeur de la cellule

Sub MoveRowBasedOnCellValue()
'Updated by Extendoffice 2017/11/10
    Dim xRg As Range
    Dim xCell As Range
    Dim I As Long
    Dim J As Long
    Dim K As Long
    I = Worksheets("Sheet1").UsedRange.Rows.Count
    J = Worksheets("Sheet2").UsedRange.Rows.Count
    If J = 1 Then
    If Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Then J = 0
    End If
    Set xRg = Worksheets("Sheet1").Range("C1:C" & I)
    On Error Resume Next
    Application.ScreenUpdating = False
    For K = 1 To xRg.Count
        If CStr(xRg(K).Value) = "Done" Then
            xRg(K).EntireRow.Copy Destination:=Worksheets("Sheet2").Range("A" & J + 1)
            J = J + 1
        End If
    Next
    Application.ScreenUpdating = True
End Sub

Déplacer la ligne entière vers une autre feuille en fonction de la valeur de la cellule avec Kutools for Excel

Si vous êtes débutant dans le code VBA. Ici, je présente le Sélectionner des cellules spécifiques utilité de Kutools for Excel. Avec cet utilitaire, vous pouvez facilement sélectionner toutes les lignes en fonction d'une certaine valeur de cellule ou de différentes valeurs de cellule dans une feuille de calcul et copier les lignes sélectionnées dans la feuille de calcul de destination selon vos besoins. S'il vous plaît faire comme suit.

Kutools for Excel : avec plus que 300 compléments Excel pratiques, libre d'essayer sans limitation dans les jours 60.

1. Sélectionnez la liste des colonnes qui contient la valeur de cellule sur laquelle vous allez déplacer les lignes, puis cliquez sur Kutools > Ou sélectionner > Sélectionner des cellules spécifiques. Voir la capture d'écran:

2. Dans l'ouverture Sélectionner des cellules spécifiques boîte de dialogue, choisissez Ligne entière le Type de sélection section, sélectionnez Équivaut à le Type spécifique Dans la liste déroulante, entrez la valeur de la cellule dans la zone de texte, puis cliquez sur le OK .

Une autre Sélectionner des cellules spécifiques boîte de dialogue apparaît pour vous montrer le nombre de lignes sélectionnées, et pendant ce temps, toutes les lignes contiennent la valeur spécifiée dans la colonne sélectionnée ont été sélectionnés. Voir la capture d'écran:

3. appuie sur le Ctrl + C clés pour copier les lignes sélectionnées, puis collez-les dans la feuille de calcul de destination dont vous avez besoin.

Note: Si vous souhaitez déplacer des lignes vers une autre feuille de calcul en fonction de deux valeurs de cellule différentes. Par exemple, déplacez les lignes en fonction des valeurs de cellule "Terminé" ou "Traitement", vous pouvez activer Or condition dans le Sélectionner des cellules spécifiques boîte de dialogue comme ci-dessous capture d'écran montré:

Pointe.Si vous voulez avoir un essai gratuit de cet utilitaire, allez à téléchargez le logiciel librement d'abord, puis allez appliquer l'opération selon les étapes ci-dessus.


Articles connexes:



Outils de productivité recommandés

Office Tab

étoile d'or1 Apportez des onglets pratiques à Excel et à d'autres logiciels Office, tout comme Chrome, Firefox et Internet Explorer.

Kutools for Excel

étoile d'or1 Incroyable! Augmentez votre productivité dans les minutes 5. Ne nécessite pas de compétences particulières, économisez deux heures par jour!

étoile d'or1 300 Nouvelles fonctionnalités pour Excel, rendent Excel facile et puissant:

  • Fusionner des cellules / lignes / colonnes sans perdre de données.
  • Combiner et consolider plusieurs feuilles et classeurs.
  • Comparez les gammes, copiez plusieurs gammes, convertissez le texte en date, l'unité et la conversion de devise.
  • Compter par couleurs, sous-totaux de recherche, tri avancé et super filtre,
  • Plus Sélectionner / Insérer / Supprimer / Texte / Format / Lier / Commenter / Classeurs / Feuilles de calcul Outils ...

Capture d'écran de Kutools pour Excel

Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Rob · 1 years ago
    Hi, I'm looking for a variation on this. I need the script to run continuously, or failing that whenever the value in that specific field changes. The code itself works but needs to be run independently. I'd like it to be automated. Can anyone assist?

    As an aside, if I only want it to copy over specific cells in the range, how is that accomplished?
    • To post as a guest, your comment is unpublished.
      crystal · 1 years ago
      Dear Rob,

      If you need the script to run automatically when cells in that field changed, the below VBA code can help you. Please right click current sheet (the sheet with rows you will move automatically) tab, then select View Code from the context menu. Then copy and paste the below VBA script into the Code window.

      Private Sub Worksheet_Change(ByVal Target As Range)

      Dim xCell As Range

      Dim I As Long
      On Error Resume Next

      Application.ScreenUpdating = False

      Set xCell = Target(1)
      If xCell.Value = "Done" Then
      I = Worksheets("Sheet2").UsedRange.Rows.Count
      If I = 1 Then

      If Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Then I = 0

      End If

      xCell.EntireRow.Copy Worksheets("Sheet2").Range("A" & I + 1)

      xCell.EntireRow.Delete
      End If

      Application.ScreenUpdating = True

      End Sub


      For your second question, do you mean just copy several cells instead of the whole row? Or would you please provide a screenshot of your question? Thank you!

      Best Regards, Crystal
      • To post as a guest, your comment is unpublished.
        MaryJ · 1 years ago
        Crystal,


        Your help is more then needed :)



        How we can add another crtieria here, for example i would like to transfer Completed beside Done:


        Private Sub Worksheet_Change(ByVal Target As Range)

        Dim xCell As Range

        Dim I As Long
        On Error Resume Next

        Application.ScreenUpdating = False

        Set xCell = Target(1)
        If xCell.Value = "Done" Then
        I = Worksheets("Sheet2").UsedRange.Rows.Count
        If I = 1 Then

        If Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Then I = 0

        End If

        xCell.EntireRow.Copy Worksheets("Sheet2").Range("A" & I + 1)

        xCell.EntireRow.Delete
        End If

        Application.ScreenUpdating = True

        End Sub
  • To post as a guest, your comment is unpublished.
    sy · 1 years ago
    [quote name="Maddie"]hi, this was very helpful. Is there a way to do this without having the row of data moved to the second sheet, but rather having it copied? So the data would remain on both sheets?[/quote]


    did anybody resolve this
    • To post as a guest, your comment is unpublished.
      Jach · 1 years ago
      Remove this "xCell.EntireRow.Delete" from the code
      • To post as a guest, your comment is unpublished.
        bex · 1 years ago
        When I delete that line of code and run the macro again, Excel freezes. Why and how do I fix it?? I want the data to be on both worksheets and not to be deleted from the original. TIA
        • To post as a guest, your comment is unpublished.
          Kristel · 1 years ago
          is there an answer for this? Mine freezes as well I would like to copy but not delete the row
          • To post as a guest, your comment is unpublished.
            crystal · 1 years ago
            Good Day,
            The below VBA code can help you to only copy the rows instead of deleting them.

            Sub Cheezy()
            Dim xRg As Range
            Dim xCell As Range
            Dim I As Long
            Dim J As Long
            Dim K As Long
            I = Worksheets("Sheet1").UsedRange.Rows.Count
            J = Worksheets("Sheet2").UsedRange.Rows.Count
            If J = 1 Then
            If Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Then J = 0
            End If
            Set xRg = Worksheets("Sheet1").Range("C1:C" & I)
            On Error Resume Next
            Application.ScreenUpdating = False
            For K = 1 To xRg.Count
            If CStr(xRg(K).Value) = "Done" Then
            xRg(K).EntireRow.Copy Destination:=Worksheets("Sheet2").Range("A" & J + 1)
            J = J + 1
            End If
            Next
            Application.ScreenUpdating = True
            End Sub
  • To post as a guest, your comment is unpublished.
    Bethany Gordon · 1 years ago
    What should I input if I want to include any date as my value? So the row stays on sheet 1 if it has no date, and moves to sheet 2 if it does?
  • To post as a guest, your comment is unpublished.
    kay · 1 years ago
    Sub Cheezy()
    Dim xRg As Range
    Dim xCell As Range
    Dim I As Long
    Dim J As Long
    I = Worksheets("Sheet1").UsedRange.Rows.Count
    J = Worksheets("Sheet2").UsedRange.Rows.Count
    If J = 1 Then
    If Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Then J = 0
    End If
    Set xRg = Worksheets("Sheet1").Range("C1:C" & I)
    On Error Resume Next
    Application.ScreenUpdating = False
    For Each xCell In xRg
    If CStr(xCell.Value) = "Done" Then
    xCell.EntireRow.Copy Destination:=Worksheets("Sheet2").Range("A" & J + 1)
    xCell.EntireRow.Delete
    J = J + 1
    End If
    Next
    Application.ScreenUpdating = True
    End Sub



    how can add a second worksheet to have rows moved to sheet2?
  • To post as a guest, your comment is unpublished.
    francesco · 1 years ago
    Hi I am trying to use the code but I receive a syntax error on  Dim xCell As Range.

    Can you help please ?