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 insérer automatiquement la ligne en fonction de la valeur de la cellule dans Excel?

doc-insert-row-based-on-value-1
Supposons que vous ayez une plage de données et que vous souhaitiez insérer automatiquement des lignes vides au-dessus ou au-dessous d'une certaine valeur dans Excel, par exemple, insérer automatiquement des lignes sous la valeur zéro comme illustré ci-dessous. Dans Excel, il n'y a pas de moyen direct de résoudre cette tâche, mais je peux introduire un code de macro pour que vous insériez automatiquement des lignes en fonction d'une certaine valeur dans Excel.
Insérer une ligne ci-dessous en fonction de la valeur de la cellule avec VBA

Insérer la ligne ci-dessus en fonction de la valeur de la cellule avec Kutools for Excel bonne idée3

Sélectionnez les cellules / lignes / colonnes avec un ou deux critères dans Excel

La sélection de cellules spécifiques de Kutools pour Excel permet de sélectionner rapidement toutes les cellules, lignes ou colonnes d'une plage en fonction d'un critère ou de deux critères. Cliquez pour l'essai gratuit de 60 days!
doc select cellule spécifique 1
Kutools for Excel: avec plus de 300 compléments Excel pratiques, libre d'essayer sans limitation dans les jours 60.

Pour insérer une ligne en fonction de la valeur de la cellule en exécutant VBA, procédez comme suit:

formule Ne plus jamais avoir à vous soucier des longues formules longues dans Excel! Kutools for Excel's Texte automatique peut ajouter toutes les formules à un groupe
en tant que texte automatique, et libérez votre cerveau! Cliquez ici pour connaître le texte automatique Cliquez ici pour obtenir un essai gratuit

1. presse Alt + F11 touches simultanément, et un Microsoft Visual Basic pour applications la fenêtre sort.

2. Cliquez insérer > Module, puis coller sous le code VBA à la popping Module fenêtre.

VBA: Insérez la ligne ci-dessous en fonction de la valeur de la cellule.

Sub BlankLine()
	'Updateby20150203
	Dim Rng As Range
	Dim WorkRng As Range
	On Error Resume Next
	xTitleId                   = "KutoolsforExcel"
	Set WorkRng                = Application.Selection
	Set WorkRng                = Application.InputBox("Range", xTitleId, WorkRng.Address, Type: = 8)
	Set WorkRng                = WorkRng.Columns(1)
	xLastRow                   = WorkRng.Rows.Count
	Application.ScreenUpdating = False
	For xRowIndex = xLastRow To 1 Step - 1
		Set Rng                   = WorkRng.Range("A" & xRowIndex)
		If Rng.Value = "0" Then
			Rng.Offset(1, 0).EntireRow.Insert Shift: = xlDown
		End If
	Next
	Application.ScreenUpdating = True
End Sub

3. Cliquez F5 clé ou le course bouton, une boîte de dialogue apparaît et sélectionnez la colonne contient zéro. Voir la capture d'écran:
doc-insert-row-based-on-value-2

4. Cliquez OK. Les lignes vides seront ensuite insérées sous la valeur zéro.
doc-insert-row-based-on-value-3

Pointe:

1. Si vous souhaitez insérer des lignes en fonction d'une autre valeur, vous pouvez modifier 0 à n'importe quelle valeur que vous voulez dans le VBA: Si Rng.Value = "0" Alors.

2. Si vous souhaitez insérer des lignes au-dessus de zéro ou d'autres valeurs, vous pouvez utiliser le code vba ci-dessous.

VBA: Insérer une ligne au-dessus de la valeur zéro:

Sub BlankLine()
	'Updateby20150203
	Dim Rng As Range
	Dim WorkRng As Range
	On Error Resume Next
	xTitleId                   = "KutoolsforExcel"
	Set WorkRng                = Application.Selection
	Set WorkRng                = Application.InputBox("Range", xTitleId, WorkRng.Address, Type: = 8)
	Set WorkRng                = WorkRng.Columns(1)
	xLastRow                   = WorkRng.Rows.Count
	Application.ScreenUpdating = False
	For xRowIndex = xLastRow To 1 Step - 1
		Set Rng                   = WorkRng.Range("A" & xRowIndex)
		If Rng.Value = "0" Then
			Rng.EntireRow.Insert Shift: = xlDown
		End If
	Next
	Application.ScreenUpdating = True
End Sub

doc-insert-row-based-on-value-4


Si vous n'êtes pas familier avec VBA, vous pouvez essayer Kutools for Excel's Sélectionner des cellules spécifiques utilitaire, puis insérez des lignes ci-dessus.

Kutools for Excel, avec plus de 300 fonctions pratiques, rend votre travail plus facile.

Après l'installation de Kutools pour Excel, s'il vous plaît faire comme ci-dessous:(Téléchargement gratuit Kutools pour Excel maintenant!)

1. Sélectionnez la liste dans laquelle vous souhaitez rechercher les cellules spécifiques et cliquez sur Kutools > Ou sélectionner > Sélectionner des cellules spécifiques. Voir la capture d'écran:
doc insert row basé sur la valeur 9

2. Dans la boîte de dialogue pop-up, vérifiez Ligne entière option, puis allez sélectionner Équivaut à De Type spécifique liste, puis entrez la valeur que vous voulez trouver dans la zone de texte de droite. Voir la capture d'écran:
doc insert row basé sur la valeur 6

3. Cliquez Oket une boîte de dialogue apparaît pour vous rappeler le nombre de lignes sélectionnées, fermez-le.

4. Placez le curseur sur une ligne sélectionnée et faites un clic droit pour sélectionner insérer à partir du menu contextuel. Voir la capture d'écran:
doc insert row basé sur la valeur 7

Maintenant, les lignes sont insérées au-dessus en fonction d'une valeur spécifique.
doc insert row basé sur la valeur 8


Articles relatifs:

Navigation par onglets et édition de plusieurs classeurs Excel / documents Word tels que Firefox, Chrome, Internet Explorer 10!

Vous pouvez être familier pour voir plusieurs pages Web dans Firefox / Chrome / IE, et basculer entre eux en cliquant sur les onglets correspondants facilement. Ici, l'onglet Office prend en charge le traitement similaire, ce qui vous permet de parcourir plusieurs classeurs Excel ou documents Word dans une fenêtre Excel ou une fenêtre Word et de basculer facilement entre eux en cliquant sur leurs onglets. Cliquez ici pour une version d'évaluation gratuite d'Office Tab pour 45!

excel


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.
    Gina · 4 months ago
    Hi, Thanks for this, however I have another scenario where I need to insert a cingle cell under the value that is not zero. Appreciate any suggestion.
  • To post as a guest, your comment is unpublished.
    Louis · 7 months ago
    Hi i am trying to use this code to enter a row when a the first 4 digits in a cell changes (if thats even possible)

    for example,
    2222A
    2222B
    2223K


    the line will be inserted after 2222B as the 3rd number is a 3 and not a 2

    Thanks guys!!
  • To post as a guest, your comment is unpublished.
    Hi · 10 months ago
    hi I just wanna ask how to add row if the codition is that add row should be done when a cell has a data already (It is for a excel workbook with a lot of sheets :) Thanks!
    • To post as a guest, your comment is unpublished.
      Sunny · 9 months ago
      maybe this vba code can help you. It will add rows if above row is not empty

      Sub helping()
      Dim count As Long
      For count = ActiveSheet.UsedRange.Rows.count To 1 Step -1
      If Information.IsEmpty(Cells(count, 1)) = False Then Rows(count + 1).Insert
      Next count
      End Sub
  • To post as a guest, your comment is unpublished.
    ermias · 1 years ago
    Here is my question and it is a very difficult one i guess.. is there a vba code that add a new row below a filtered column and copy just the first three cells into the added new row and continue doing so until the user stops hitting "enter" and unfilter the filtered cells?
  • To post as a guest, your comment is unpublished.
    Tiago Dias · 1 years ago
    I need huge help on this subject. I have 2 columns, on the 1st I have my data time 01/01/2016 05:00:00, days/months/year hour/minute/seconds and in the 2 2nd column the respective data associated to the time.

    My problem is that I want to add data time between rows since I have days gaps. 1st line is 01/01/2016 and the 2nd row has, for example, 10/01/2016, so I have 9 days. and that code doesn't work for me.

    Looking forward to getting some feedback, please! Thanks
    • To post as a guest, your comment is unpublished.
      Sunny · 1 years ago
      You can try this VBA

      Sub InsertValueBetween()
      'Update 20130825
      Dim WorkRng As Range
      Dim Rng As Range
      Dim outArr As Variant
      Dim dic As Variant
      Set dic = CreateObject("Scripting.Dictionary")
      'On Error Resume Next
      xTitleId = "KutoolsforExcel"
      Set WorkRng = Application.Selection
      Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
      num1 = WorkRng.Range("A1").Value
      num2 = WorkRng.Range("A" & WorkRng.Rows.Count).Value
      interval = num2 - num1
      ReDim outArr(1 To interval + 1, 1 To 2)
      For Each Rng In WorkRng
      dic(Rng.Value) = Rng.Offset(0, 1).Value
      Next
      For i = 0 To interval
      outArr(i + 1, 1) = i + num1
      If dic.Exists(i + num1) Then
      outArr(i + 1, 2) = dic(i + num1)
      Else
      outArr(i + 1, 2) = ""
      End If
      Next
      With WorkRng.Range("A1").Resize(UBound(outArr, 1), UBound(outArr, 2))
      .Value = outArr
      .Select
      End With
      End Sub


      Or if you have Kutools for Excel, you can try this function:
      • To post as a guest, your comment is unpublished.
        Tiago Dias · 1 years ago
        Hello again Sunny, i got some sucess on editing the code to this (i change the num1 line to A2 and With WorkRng.Range("A2:A100000").Resize(UBound(outArr, 1), UBound(outArr, 2)):


        Sub InsertValueBetween()
        'Update 20130825
        Dim WorkRng As Range
        Dim Rng As Range
        Dim outArr As Variant
        Dim dic As Variant
        Set dic = CreateObject("Scripting.Dictionary")
        'On Error Resume Next
        xTitleId = "KutoolsforExcel"
        Set WorkRng = Application.Selection
        Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
        num1 = WorkRng.Range("A2").Value
        num2 = WorkRng.Range("A" & WorkRng.Rows.Count).Value
        interval = num2 - num1
        ReDim outArr(1 To interval + 1, 1 To 2)
        For Each Rng In WorkRng
        dic(Rng.Value) = Rng.Offset(0, 1).Value
        Next
        For i = 0 To interval
        outArr(i + 1, 1) = i + num1
        If dic.Exists(i + num1) Then
        outArr(i + 1, 2) = dic(i + num1)
        Else
        outArr(i + 1, 2) = ""
        End If
        Next
        With WorkRng.Range("A2:A100000").Resize(UBound(outArr, 1), UBound(outArr, 2))
        .Value = outArr
        .Select
        End With
        End Sub



        I show you the graphs, it doesn't work 100% because it doesn't create the time from A1 to A2
      • To post as a guest, your comment is unpublished.
        Tiago Dias · 1 years ago
        Thanks a lot, I have tried both, the 1st one since I have like 500 rows of data, I do that for the all 500 rows and doesn't do anything, I think perhaps it has a limitation on the rows to use, and when I select just the first 5 rows, for example, it doesn't create the missing rows, replaces the rows for the missing data.

        Another problem that I have is that my time data has also the Day/Month/Year HH: MM: SS
        • To post as a guest, your comment is unpublished.
          Tiago Dias · 1 years ago
          From 2 to 3, it creates the missing data that I want ok, but the value of the 03/01/2016 is eliminated and there is some time data that is eliminated something that I don't want either
          • To post as a guest, your comment is unpublished.
            Sunny · 1 years ago
            Sorry the VBA code did not help you, I cannot find the method which can work for date and time format. If you find the solution finnally, could you let me know? Thank you.