Microsoft 365 Transformer InputBox en UserForm avec TextBox et CommandButton

Piaf79

XLDnaute Junior
Bonsoir le forum,

Je cherche à insérer une ou plusieurs lignes via UserForm (via TextBox et bouton de validation).
J'ai trouvé ce code mais via InputBox :

VB:
Sub Incrémentation()

    Dim xCount$
LableNumber:
    xCount = Application.InputBox("Nombre de lignes à incrémenter", "Tableau de gestion", , , , , , 1)
       If xCount = "" Or Not IsNumeric(xCount) Then Exit Sub
    If xCount < 1 Then
        MsgBox "La valeur saisie doit être supérieure à 0, merci de renseigner une valeur correcte.", vbInformation, "Tableau de gestion"
        GoTo LableNumber
    End If
    ActiveCell.EntireRow.Copy
    Range(ActiveCell.Offset(1, 0), ActiveCell.Offset(xCount, 0)).EntireRow.Insert Shift:=xlDown
    Application.CutCopyMode = False

End Sub

Est-il possible de "convertir" ce code pour l'intégrer dans un CommandButton ?

Bonne soirée,

Piaf79
 

Piaf79

XLDnaute Junior
Bonjour

Commandbutton userform textbox inputbox.. il y en a un peu dans tous les sens, et surement un peu de confusion

va faire un tour sur ce site pour t'aider à y voir plus clair et faire ton choix
Merci vgendron pour le lien.

J'ai essayé de fonctionner ainsi :

VB:
Private Sub CommandButton3_Click()

    Dim X As Integer
    X = TextBox1.Value
    ActiveCell.EntireRow.Copy
    Range(ActiveCell.Offset(1, 0), ActiveCell.Offset(X, 0)).EntireRow.Insert Shift:=xlDown
    Application.CutCopyMode = False
    Unload Me

End Sub

Private Sub TextBox1_Change()

    On Error Resume Next
    
    If Not IsNumeric(Right(TextBox1, 1)) Then
    TextBox1 = Left(TextBox1, Len(TextBox1) - 1)
    End If


End Sub

Cela fonctionne pour toutes les valeurs supérieurs à 0 (ajout du bon nombre de lignes).
Par contre quand je renseigne la valeur 0 et que je valide... il y a deux lignes qui sont ajoutées.
Une aide ?

P79
 

Piaf79

XLDnaute Junior
normal, quelle que soit la valeur de X, tu commences par
ActiveCell.EntireRow.Copy ==> tu as donc toujours au moins une ligne ajoutée
pour X=0, autant faire un test
if X<>0 then
ajout de x lignes
end if
vgendron,

Voici le code compilé qui a l'air de fonctionner :


VB:
Private Sub CommandButton1_Click()

    Application.ScreenUpdating = False
    Dim lignes As Integer
    Dim debut As Integer
    lignes = TextBox1.Value
    For debut = 1 To lignes
    With ActiveCell.EntireRow
        .Offset(debut, 0).Insert Shift:=xlDown
        .Copy Destination:=.Offset(debut, 0)
    End With
    Next debut
    Unload Me

End Sub

Private Sub TextBox1_Change()

    On Error Resume Next
    
    If Not IsNumeric(Right(TextBox1, 1)) Then
    TextBox1 = Left(TextBox1, Len(TextBox1) - 1)
    End If

End Sub
 

Discussions similaires

Réponses
8
Affichages
584

Statistiques des forums

Discussions
313 274
Messages
2 096 754
Membres
106 739
dernier inscrit
jcdu16