Doubler les lignes contenant le nombre 1

serir

XLDnaute Junior
Bonjour :cool:,

Je voulais doubler les lignes contenant 1 dans la colonne nbre,
La difficulté c'est que je n'arrive pas à écrire le nombre de lignes qui serai 16 en vba après la création des doublons.
Le nombre de lignes après la création des doublons n'est pas fixe il est en fonction du nombre de lignes avant la création.

Merci d'avance pour votre aide.
 

Pièces jointes

  • Doublement des lignes.xlsm
    56.6 KB · Affichages: 39

Lone-wolf

XLDnaute Barbatruc
Re : Doubler les lignes contenant le nombre 1

Bonjour serir

Moi pas comprendre ça
le nombre de lignes qui serai 16 en vba après la création

Et ça
Le nombre de lignes après la création des doublons n'est pas fixe

:confused: :confused:

Sinon, en cellule N2 par exemple tu tape le nombre de lignes que tu veux. Ensuite dans la macro

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
nombre = Range("n2")
Target.EntireRow.Resize(rowsize:=nombre).Insert Shift:=xlDown
Cancel = True
End Sub
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Doubler les lignes contenant le nombre 1

Bonjour.

Comme ça :
VB:
Sub DoublementLignes()
Dim L As Long
For L = ActiveSheet.Cells(Rows.Count, "D").End(xlUp).Row To 2 Step -1
   If Cells(L, "D").Value = 1 Then
      Rows(L).Copy
      Rows(L).Insert: End If: Next L
End Sub

Moralité: une exécution qui, durant elle même, change le nombre de ligne à traiter doit être entreprise depuis la fin vers le début. Pareil pour des suppressions de lignes.
 
Dernière édition:

serir

XLDnaute Junior
Re : Doubler les lignes contenant le nombre 1

Merci beaucoup Dranreb:eek: ça fonctionne très bien (seulement dans la ligne dont le code est 0002 il y a la sélection copier c'est à dire des tirés discontinu)

Et merci pour le conseil.
 

Lone-wolf

XLDnaute Barbatruc
Re : Doubler les lignes contenant le nombre 1

Re à tous :)

Un autre exemple

Code:
Sub DoublementLignes()
Dim lig, col, nb As Long
Dim cel As Range
Sheets("Feuil8").Activate
With ActiveSheet
For Each cel In .Range("d2:d1002")
If cel Like "*1" Then
nb = .Range("f1")  ' nombre de lignes à inserer
cel.Offset(1, 3).EntireRow.Resize(rowsize:=nb).Insert Shift:=xlDown
End If
Next cel
For lig = 2 To .Range("a65536").End(xlUp).Row
For col = 1 To 4
If .Cells(lig, col) = "" Then
.Cells(lig, col) = .Cells(lig - 1, col)
End If
Next col
Next lig
End With
End Sub
 

Discussions similaires

Réponses
7
Affichages
294
Réponses
9
Affichages
187

Statistiques des forums

Discussions
312 310
Messages
2 087 130
Membres
103 480
dernier inscrit
etaniere