OVH Cloud OVH Cloud

insertion de ligne

6 réponses
Avatar
yad_18
Bonjour,
Novice ans la programmation, je souhaite trouver une macro me
permettrant d'ins=E9rer une ligne =E0 chaque fois que la valeur de la
ligne suivant est sup=E9rieure de plus de 1.

Par exemple j'ai une colonne avec :

1
2
3
4
5
7
8
10

Il faudrait ins=E9rer une ligne entre 5 et 7 et 2 lignes entre 8 et 10


J'ai trouver une macro permettant d'ins=E9rer une ligne si la ligne
suivante diff=E8re, mais je n'arrive pas =E0 la modifier pour que ca
marche pour mon probl=E8me :((((

Voici la macro en question :

Sub Insertion()
ligne =3D Cells(65536, 1).End(xlUp).Row
For debut =3D ligne To 2 Step -1
If Cells(debut, 1) > Cells(debut - 1, 1) Then _
Cells(debut, 1).EntireRow.Insert
Next
End Sub

Y'en a plein d'autre dans le meme style mais aucune ne permet
d'ins=E9rer une ligne si la ligne suivante est sup=E9rieure +1.

Merci d'avance pour votre aide.

6 réponses

Avatar
MichDenis
Essaie ceci :

Il a été présumé que tu n'as pas de lignes vides
dans ta plage de cellules ....

'-------------------------------
Sub test()

Dim ActCell As Range
Dim NextCell As Range
'Adapte le nom de la feuille (Propriété name de la feuille
'dans la fenêtre vba , de même que la cellule de départ
Set ActCell = Feuil1.Range("A1")

Do While ActCell <> ""
Set NextCell = ActCell.Offset(1)
If NextCell - ActCell > 1 Then
NextCell.EntireRow.Insert
End If
Set ActCell = NextCell
Loop
End Sub
'-------------------------------


a écrit dans le message de news:

Bonjour,
Novice ans la programmation, je souhaite trouver une macro me
permettrant d'insérer une ligne à chaque fois que la valeur de la
ligne suivant est supérieure de plus de 1.

Par exemple j'ai une colonne avec :

1
2
3
4
5
7
8
10

Il faudrait insérer une ligne entre 5 et 7 et 2 lignes entre 8 et 10


J'ai trouver une macro permettant d'insérer une ligne si la ligne
suivante diffère, mais je n'arrive pas à la modifier pour que ca
marche pour mon problème :((((

Voici la macro en question :

Sub Insertion()
ligne = Cells(65536, 1).End(xlUp).Row
For debut = ligne To 2 Step -1
If Cells(debut, 1) > Cells(debut - 1, 1) Then _
Cells(debut, 1).EntireRow.Insert
Next
End Sub

Y'en a plein d'autre dans le meme style mais aucune ne permet
d'insérer une ligne si la ligne suivante est supérieure +1.

Merci d'avance pour votre aide.
Avatar
yad_18
Merci beaucoup ca marche très bien! :)
Par contre il reste le problème si dans ma suite j'ai un trou de 2
(par exemple si je passe de 10 à 13) ca n'insère qu'une ligne et pas
deux. Je vais voir si je peux régler ca.




Essaie ceci :

Il a été présumé que tu n'as pas de lignes vides
dans ta plage de cellules ....

'-------------------------------
Sub test()

Dim ActCell As Range
Dim NextCell As Range
'Adapte le nom de la feuille (Propriété name de la feuille
'dans la fenêtre vba , de même que la cellule de départ
Set ActCell = Feuil1.Range("A1")

Do While ActCell <> ""
Set NextCell = ActCell.Offset(1)
If NextCell - ActCell > 1 Then
NextCell.EntireRow.Insert
End If
Set ActCell = NextCell
Loop
End Sub
'-------------------------------


a écrit dans le message de news:

Bonjour,
Novice ans la programmation, je souhaite trouver une macro me
permettrant d'insérer une ligne à chaque fois que la valeur de la
ligne suivant est supérieure de plus de 1.

Par exemple j'ai une colonne avec :

1
2
3
4
5
7
8
10

Il faudrait insérer une ligne entre 5 et 7 et 2 lignes entre 8 et 10


J'ai trouver une macro permettant d'insérer une ligne si la ligne
suivante diffère, mais je n'arrive pas à la modifier pour que ca
marche pour mon problème :((((

Voici la macro en question :

Sub Insertion()
ligne = Cells(65536, 1).End(xlUp).Row
For debut = ligne To 2 Step -1
If Cells(debut, 1) > Cells(debut - 1, 1) Then _
Cells(debut, 1).EntireRow.Insert
Next
End Sub

Y'en a plein d'autre dans le meme style mais aucune ne permet
d'insérer une ligne si la ligne suivante est supérieure +1.

Merci d'avance pour votre aide.


Avatar
Jacky
Bonjour,

Avec la numérotation en plus...
Ceci:
'---------
Sub Insertion()
Application.ScreenUpdating = False
ligne = Cells(65536, 1).End(xlUp).Row
For debut = ligne To 2 Step -1
If Cells(debut, 1) - Cells(debut - 1, 1) > 1 Then
x = Cells(debut, 1).Value
For i = 1 To Cells(debut, 1) - Cells(debut - 1, 1) - 1
x = x - 1
Cells(debut, 1).EntireRow.Insert
Cells(debut, 1).Value = x
Next
End If
Next
End Sub
'---------------

--
Salutations
JJ

a écrit dans le message de news:

Bonjour,
Novice ans la programmation, je souhaite trouver une macro me
permettrant d'insérer une ligne à chaque fois que la valeur de la
ligne suivant est supérieure de plus de 1.

Par exemple j'ai une colonne avec :

1
2
3
4
5
7
8
10

Il faudrait insérer une ligne entre 5 et 7 et 2 lignes entre 8 et 10


J'ai trouver une macro permettant d'insérer une ligne si la ligne
suivante diffère, mais je n'arrive pas à la modifier pour que ca
marche pour mon problème :((((

Voici la macro en question :

Sub Insertion()
ligne = Cells(65536, 1).End(xlUp).Row
For debut = ligne To 2 Step -1
If Cells(debut, 1) > Cells(debut - 1, 1) Then _
Cells(debut, 1).EntireRow.Insert
Next
End Sub

Y'en a plein d'autre dans le meme style mais aucune ne permet
d'insérer une ligne si la ligne suivante est supérieure +1.

Merci d'avance pour votre aide.
Avatar
yad_18
Merci beaucoup Jacky c'est vraiment exactement ce qu'il me fallait!

Yad.



Bonjour,

Avec la numérotation en plus...
Ceci:
'---------
Sub Insertion()
Application.ScreenUpdating = False
ligne = Cells(65536, 1).End(xlUp).Row
For debut = ligne To 2 Step -1
If Cells(debut, 1) - Cells(debut - 1, 1) > 1 Then
x = Cells(debut, 1).Value
For i = 1 To Cells(debut, 1) - Cells(debut - 1, 1) - 1
x = x - 1
Cells(debut, 1).EntireRow.Insert
Cells(debut, 1).Value = x
Next
End If
Next
End Sub
'---------------

--
Salutations
JJ

a écrit dans le message de news:

Bonjour,
Novice ans la programmation, je souhaite trouver une macro me
permettrant d'insérer une ligne à chaque fois que la valeur de la
ligne suivant est supérieure de plus de 1.

Par exemple j'ai une colonne avec :

1
2
3
4
5
7
8
10

Il faudrait insérer une ligne entre 5 et 7 et 2 lignes entre 8 et 10


J'ai trouver une macro permettant d'insérer une ligne si la ligne
suivante diffère, mais je n'arrive pas à la modifier pour que ca
marche pour mon problème :((((

Voici la macro en question :

Sub Insertion()
ligne = Cells(65536, 1).End(xlUp).Row
For debut = ligne To 2 Step -1
If Cells(debut, 1) > Cells(debut - 1, 1) Then _
Cells(debut, 1).EntireRow.Insert
Next
End Sub

Y'en a plein d'autre dans le meme style mais aucune ne permet
d'insérer une ligne si la ligne suivante est supérieure +1.

Merci d'avance pour votre aide.


Avatar
MichDenis
Est-ce que ceci résout ta difficulté ?


Sub test()
Dim A As Integer, ActCell As Range, NextCell As Range
Set ActCell = Feuil1.Range("A1")
Do While ActCell <> ""
Set NextCell = ActCell.Offset(1)
A = NextCell - ActCell
If A > 1 Then
NextCell.Resize(A - 1).EntireRow.Insert
End If
Set ActCell = NextCell
Loop
End Sub




a écrit dans le message de news:

Merci beaucoup ca marche très bien! :)
Par contre il reste le problème si dans ma suite j'ai un trou de 2
(par exemple si je passe de 10 à 13) ca n'insère qu'une ligne et pas
deux. Je vais voir si je peux régler ca.




Essaie ceci :

Il a été présumé que tu n'as pas de lignes vides
dans ta plage de cellules ....

'-------------------------------
Sub test()

Dim ActCell As Range
Dim NextCell As Range
'Adapte le nom de la feuille (Propriété name de la feuille
'dans la fenêtre vba , de même que la cellule de départ
Set ActCell = Feuil1.Range("A1")

Do While ActCell <> ""
Set NextCell = ActCell.Offset(1)
If NextCell - ActCell > 1 Then
NextCell.EntireRow.Insert
End If
Set ActCell = NextCell
Loop
End Sub
'-------------------------------


a écrit dans le message de news:

Bonjour,
Novice ans la programmation, je souhaite trouver une macro me
permettrant d'insérer une ligne à chaque fois que la valeur de la
ligne suivant est supérieure de plus de 1.

Par exemple j'ai une colonne avec :

1
2
3
4
5
7
8
10

Il faudrait insérer une ligne entre 5 et 7 et 2 lignes entre 8 et 10


J'ai trouver une macro permettant d'insérer une ligne si la ligne
suivante diffère, mais je n'arrive pas à la modifier pour que ca
marche pour mon problème :((((

Voici la macro en question :

Sub Insertion()
ligne = Cells(65536, 1).End(xlUp).Row
For debut = ligne To 2 Step -1
If Cells(debut, 1) > Cells(debut - 1, 1) Then _
Cells(debut, 1).EntireRow.Insert
Next
End Sub

Y'en a plein d'autre dans le meme style mais aucune ne permet
d'insérer une ligne si la ligne suivante est supérieure +1.

Merci d'avance pour votre aide.


Avatar
yad_18
Ca marche aussi merci :)
C'est interessant de voir comme par 2 méthodes différentes on peut
arriver au meme résultats! (et d'autant plus difficile d'essayer d'y
comprendre quelque chose...)

Yad.



Est-ce que ceci résout ta difficulté ?


Sub test()
Dim A As Integer, ActCell As Range, NextCell As Range
Set ActCell = Feuil1.Range("A1")
Do While ActCell <> ""
Set NextCell = ActCell.Offset(1)
A = NextCell - ActCell
If A > 1 Then
NextCell.Resize(A - 1).EntireRow.Insert
End If
Set ActCell = NextCell
Loop
End Sub




a écrit dans le message de news:

Merci beaucoup ca marche très bien! :)
Par contre il reste le problème si dans ma suite j'ai un trou de 2
(par exemple si je passe de 10 à 13) ca n'insère qu'une ligne et pas
deux. Je vais voir si je peux régler ca.




Essaie ceci :

Il a été présumé que tu n'as pas de lignes vides
dans ta plage de cellules ....

'-------------------------------
Sub test()

Dim ActCell As Range
Dim NextCell As Range
'Adapte le nom de la feuille (Propriété name de la feuille
'dans la fenêtre vba , de même que la cellule de départ
Set ActCell = Feuil1.Range("A1")

Do While ActCell <> ""
Set NextCell = ActCell.Offset(1)
If NextCell - ActCell > 1 Then
NextCell.EntireRow.Insert
End If
Set ActCell = NextCell
Loop
End Sub
'-------------------------------


a écrit dans le message de news:

Bonjour,
Novice ans la programmation, je souhaite trouver une macro me
permettrant d'insérer une ligne à chaque fois que la valeur de la
ligne suivant est supérieure de plus de 1.

Par exemple j'ai une colonne avec :

1
2
3
4
5
7
8
10

Il faudrait insérer une ligne entre 5 et 7 et 2 lignes entre 8 et 10


J'ai trouver une macro permettant d'insérer une ligne si la ligne
suivante diffère, mais je n'arrive pas à la modifier pour que ca
marche pour mon problème :((((

Voici la macro en question :

Sub Insertion()
ligne = Cells(65536, 1).End(xlUp).Row
For debut = ligne To 2 Step -1
If Cells(debut, 1) > Cells(debut - 1, 1) Then _
Cells(debut, 1).EntireRow.Insert
Next
End Sub

Y'en a plein d'autre dans le meme style mais aucune ne permet
d'insérer une ligne si la ligne suivante est supérieure +1.

Merci d'avance pour votre aide.