Saisie Automatique avec Userform

Bonjour à tous,

J'ai créé une petite macro pour la saisie automatique de données.

L'utilisateur peut indiquer le nombre de saisie qu'il souhaite intégrer à son tableau. Le nombre de saisie indiqué va alors apparaître en dessous de la dernière saisie enregistrée.

rskqipn

Jusque là, tout fonctionne !

J'aimerai ajouter une condition sur la nature de la saisie : changer ce qu'écrit la macro (pour l'instant, la macro écrit "Saisie_X").

Je souhaite changer ce "X". Dans le fichier joint, on voit que ce X est un nombre. X allant dans l'exemple jusque 6.

J'aimerai que la macro reconnaisse quelle est la dernière saisie effectuée (ici "Saisie_6"), et qu'elle écrive donc "Saisie_7".

Si je réitère l'opération, la macro écrira non plus "Saisie_7" mais "Saisie_8" et ainsi de suite.

Attention : peu importe l'ordre des saisies dans la colonne (j'ai fait exprès de mettre Saisie_6 en milieu de colonne).

Voici le code du bouton AjouterSaisie :

If TextBox1.Value = "" Then
MsgBox ("Veuillez renseigner tous les champs")
Else

If Not IsNumeric(TextBox1) Then
    MsgBox ("Non numérique")
    TextBox1.Value = ""
    TextBox1.SetFocus
Exit Sub
End If

    Dim premlig As Integer
    Dim ctr As Integer
        premlig = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
            For ctr = premlig + 1 To premlig + TextBox1.Value
            Cells(ctr, 1) = "Saisie_X"
            Next

Unload AjoutSaisie
AjoutSaisie.Show
End If

Si je n'ai pas été clair dans ce que je dis. N'hésitez pas à me demander !

Et merci d'avance !

14classeur2.xlsm (23.19 Ko)

Bonjour,

Un truc dans ce goût là ?

If TextBox1.Value = "" Then
MsgBox ("Veuillez renseigner tous les champs")
Else

If Not IsNumeric(TextBox1) Then
    MsgBox ("Non numérique")
    TextBox1.Value = ""
    TextBox1.SetFocus
Exit Sub
End If

    Dim premlig As Integer
    Dim ctr As Integer, Max As Integer
        premlig = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
            For ctr = 1 To premlig
                      If CInt(Right(Cells(ctr, 1) , Len(Cells(ctr, 1))-7)) > Max Then Max = CInt(Right(Cells(ctr, 1) , Len(Cells(ctr, 1))-7))
            Next ctr
            For ctr = premlig + 1 To premlig + TextBox1.Value
            Cells(ctr, 1) = "Saisie_" & Max + 1
            Next ctr

Unload AjoutSaisie
AjoutSaisie.Show
End If

Bonjour Pedro,

Merci pour cette réponse très rapide !

Le code ne fonctionne pas. Il y a un problème avec l'utilisation des If/End If et For/Next.

J'essaie de corriger et comprendre ce que tu as fait.

C'est corrigé, une erreur d'inattention...

Erreur d'exécution '13' :

Incompatibilité de type

pour la ligne :

If CInt(Right(Cells(ctr, 1), Len(Cells(ctr, 1)) - 7)) > Max Then Max = CInt(Right(Cells(ctr, 1), Len(Cells(ctr, 1)) - 7))

La première boucle sur ctr doit commencer à 2 et non pas 1 pour éviter de travailler sur l'en-tête. Il faut également supprimer "Saisie_X" ou ajouter une ligne de code pour éviter d'en tenir compte.

Voilà un code plus adapté:

Private Sub BoutonAjout_Click()

Dim premlig As Integer, ctr As Integer, Max As Integer

If TextBox1.Value = "" Then
    MsgBox ("Veuillez renseigner tous les champs")
Else
    If Not IsNumeric(TextBox1) Then
        MsgBox ("Non numérique")
        TextBox1.Value = ""
        TextBox1.SetFocus
        Exit Sub
    End If
    premlig = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
    Max = 0
    For ctr = 2 To premlig
        If Cells(ctr, 1) Like "Saisie_#*" Then
            If CInt(Right(Cells(ctr, 1), Len(Cells(ctr, 1)) - 7)) > Max Then Max = CInt(Right(Cells(ctr, 1), Len(Cells(ctr, 1)) - 7))
        End If
    Next ctr
    For ctr = premlig + 1 To premlig + TextBox1.Value
        Cells(ctr, 1) = "Saisie_" & Max + 1
    Next ctr

    Unload AjoutSaisie
    AjoutSaisie.Show
End If

End Sub

Tout fonctionne parfaitement Pedro. Merci beaucoup !

Tout fonctionne parfaitement Pedro. Merci beaucoup !

Me voilà rassuré !

Rechercher des sujets similaires à "saisie automatique userform"