XL 2016 Insérer des lignes/colonnes via userform

luke3300

XLDnaute Impliqué
Bonjour le forum,

J'aimerais arriver à insérer des lignes et/ou des colonnes dans une grille existante selon un nombre choisi dans une userform et aussi que cette procédure se fasse automatiquement dans la Feuil2.
Donc si "x" colonnes/lignes ajoutées en Feuil1, que ce soit ajouté aussi en Feuil2 (qui comporte la même grille mais pas pour la même utilisation).

Je joint un petit fichier avec le détail et des explications plus précises et une ébauche d'userform ...

Merci à tous pour toute l'aide que vous pourrez m'apporter et bon WE ;)
 

Fichiers joints

Dernière édition:

job75

XLDnaute Barbatruc
Bonjour luke3300,
Code:
Private Sub CommandButton1_Click() 'Annuler
Unload Me
End Sub

Private Sub CommandButton2_Click() 'Valider
Dim w As Worksheet
TextBox1 = Abs(Int(Val(TextBox1)))
TextBox2 = Abs(Int(Val(TextBox2)))
If TextBox1 * TextBox2 = 0 Then Exit Sub
For Each w In Sheets(Array("Feuil1", "Feuil2")) 'noms à adapter
    w.Rows(27).Resize(TextBox1).Insert
    w.Columns("G").Resize(, TextBox2).Insert
Next
End Sub
A+
 

luke3300

XLDnaute Impliqué
Bonjour Job75,

Merci pour ta réponse rapide :D
Ces codes-là sont pour les boutons "Annuler" et "Valider" de mon UserForm mais que dois-je mettre comme code pour le bouton pour appeler la UserForm?

Bonne fin de journée;)
 

luke3300

XLDnaute Impliqué
Merciiiii :) je te répondais justement que j'avais trouvé ça sur le forum: "UserForm1.Show vbModeless" et que j'avais testé et c'est OK super! :D

J'ai cependant enlevé le "vbModeless" qui ne me paraissait pas utile.

Merci beaucoup Job75, excellente soirée.
 

luke3300

XLDnaute Impliqué
Re,

Une remarque ... lorsque j'ajoute 1 ligne par exemple et 0 colonne, ça ne fait rien chez moi ... si j'inverse et que je rentre 0 ligne et 1 colonne ça ne fait toujours rien. Par contre dès qu'il y a une valeur dans les 2 TextBox, ça marche nickel ... :( une idée du pourquoi?
 

job75

XLDnaute Barbatruc
Re,

Plutôt que bloquer la macro si TextBox1 ou TextBox2 égale zéro il vaut mieux ceci :
Code:
Private Sub CommandButton2_Click() 'Valider
Dim w As Worksheet
TextBox1 = Abs(Int(Val(TextBox1)))
TextBox2 = Abs(Int(Val(TextBox2)))
For Each w In Sheets(Array("Feuil1", "Feuil2")) 'noms à adapter
    If TextBox1 Then w.Rows(27).Resize(TextBox1).Insert
    If TextBox2 Then w.Columns("G").Resize(, TextBox2).Insert
Next
End Sub
A+
 

luke3300

XLDnaute Impliqué
Bonjour Job75, le forum,

Il y a un point auquel je n'avais pas pensé :( ... lorsqu'on insère des lignes et/ou des colonnes dans une grille, les formules qui s'y trouvent ne sont pas incluses dans les nouvelles lignes/colonnes.
Je crois dès lors que la solution serait de copier une ligne/colonne et de l'insérer autant de fois que le nombre désiré. Qu'en pensez-vous? Et si c'est la solution, que dois changer dans le code?
Merci beaucoup pour votre aide et agréable journée à tous.
 

job75

XLDnaute Barbatruc
Bonjour luke3300,

Avec ce code les formules (et uniquement les formules) sont collées dans les cellules insérées :
Code:
Private Sub CommandButton2_Click() 'Valider
Dim sel As Range, w As Worksheet
ActiveCell.Activate 'si un objet est sélectionné
Set sel = Selection
TextBox1 = Abs(Int(Val(TextBox1)))
TextBox2 = Abs(Int(Val(TextBox2)))
Application.ScreenUpdating = False
For Each w In Sheets(Array("Feuil1", "Feuil2")) 'noms à adapter
    If TextBox1 Then
        w.Rows(27).Resize(TextBox1).Insert
        w.Rows(26).Copy
        w.Rows(27).Resize(TextBox1).PasteSpecial xlPasteFormulas
    End If
    If TextBox2 Then
        w.Columns("G").Resize(, TextBox2).Insert
        w.Columns("F").Copy
        w.Columns("G").Resize(, TextBox2).PasteSpecial xlPasteFormulas
    End If
Next
Application.CutCopyMode = 0
sel.Select
End Sub
A+
 

Discussions similaires


Haut Bas