Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Macro insertion ligne avec un user form

TrèsBonEteATous

XLDnaute Nouveau
Bonjour à tous !
Par avance merci de votre compréhension, de votre aide et de vos bons conseils. Je débute sur excel , j'ai attentivement cherché des solutions, mais je pense que je ne vais pas pouvoir y arriver sans votre aide.

Je travaille sur des sujets SEO où le but du jeu est de savoir quels sont le mots clés de sites web OU comment sont positionnés des sites sur des mots clés.
Bref l'idée est de pouvoir insérer un nombre de lignes VIDES défini par l'utilisateur (100, 1000 5000, ...) dans un user form.

Il y a aussi une autre difficulté : comment activer/ désactiver simplement le calcul automatique pour ne le lancer que quand les lignes auront été créées ?

J'ai trouvé cette macro (sans doute sur le site) pour insérer 100 lignes. Je vous remercie sincèrement de votre aide


Option Explicit

Sub InsertionLignes()
Dim nbCol As Integer, i As Integer, n As Integer
Dim nbLigne As Long, rpre() As Long
Dim plage As Range, cel As Range, zone As String

Application.ScreenUpdating = False
Sheets.Add after:=Worksheets("Données")
ActiveSheet.Name = "Clone"
Set plage = Worksheets("Données").Range("A1").CurrentRegion
plage.Copy Destination:=Worksheets("Clone").Range("A1")
Set plage = Worksheets("Clone").Range("A1").CurrentRegion
nbCol = plage.End(xlToRight).Column
nbLigne = plage.End(xlDown).Row

For Each cel In plage.Columns(2).Cells
If IsEmpty(cel) Then
n = n + 1
ReDim Preserve rpre(n)
rpre(n) = cel.Row
End If
Next
For i = n - 1 To 1 Step -1
zone = CStr(rpre(i + 1)) & ":" & CStr(99 + rpre(i))
plage.Rows(zone).Insert Shift:=xlDown
Next i

' réintégration sur la feuille "Données"
nbLigne = n * 100
plage.Resize(nbLigne).Copy Destination:=Worksheets("Données").Range("A1")
'suppression de la feuille intermédiaire
Application.DisplayAlerts = False
Worksheets("Clone").Delete
Worksheets("Données").Activate
Application.ScreenUpdating = True '*************

End Sub
 

Pièces jointes

  • test.xlsm
    34.6 KB · Affichages: 5

Staple1600

XLDnaute Barbatruc
Bonjour le fil

En 2004, je m'étais déjà approcher du vide (sans y choir)
Après 15 ans de poussières, je recycle (ça fera plaisir à Greta)
VB:
Sub InsertionLigneVides()
'code recyclé du fil ci-dessous
'https://www.excel-downloads.com/threads/inserer-des-lignes-vides-entre-chaque-valeur-dune-plage.225538/post-1431878
Dim i&, X&
X = InputBox("Nombre de ligne vide à insérer?", "Insertion Ligne", 10)
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
Cells(i, 1).Offset(1).Resize(X).EntireRow.Insert
Next
Application.Calculation = xlCalculationAutomatic
End Sub
PS: Pas vu l'ombre d'un userform dans ton classeur, TrésBonAutomneATous
(eh oui l'été, c'est fini )
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…