XL 2016 incrementation automatique

JEFF77

XLDnaute Occasionnel
Bonjour à tous

je fais un petit projet ,mais j'ai un souci .Je viens vous poser mon problème si possible pour vous.

serait il possible dans la colonne A de la feuille source ou sur le formulaire dans le textbox 1 d'avoir une incrémentation auto en chiffre.
et autre soucis lorsque le formulaire est complet je valide le feuille source se remplie bien mais lorsque je fais une autre saisie
j'ai une erreur vba "erreur d’exécution 438"
j'espère avoir été clair pour vous.

merci par avance

Jeff77
 

Pièces jointes

  • Classeur1.xlsm
    20.6 KB · Affichages: 18

JEFF77

XLDnaute Occasionnel
bonjour à vous deux

je vous remercie d'avoir regardez mon fichier.
cp4 sur ton fichier 2 problème pour moi dans le formulaire le numero est ok mais lorsque je valide la ligne se remplie bien mais lorsque j'efface les données dans le formulaire pour faire une nouvelle saisie le textbox1 s'efface serait il possible qu'il reste.
et quand je rempli de nouveau le formulaire et valide dans source il ne change pas de ligne.

GALOUGALOU le fichier me convient mieux mais lorsque j'efface les données dans le formulaire pour faire une nouvelle saisie le textbox1 s'efface serait il possible qu'il reste.je ne veux pas quitter le formulaire à chaque saisie.

merci à vous deux

bonne journéé
prenez soin de vous
 

GALOUGALOU

XLDnaute Accro
re jeff77
pour moi faire simple c'est faire bien
donc je vous propose dans le code cette modification,
Unload Me
UserForm1.Show
sur le clic du bouton validation, l'userform se fermera et s'ouvrira automatiquement . le textbox1 s'effacera et presentera le nouvel index.
Enrichi (BBcode):
Private Sub CommandButton1_Click()
    If TextBox1 = "" Or TextBox2 = "" Or TextBox3 = "" Or TextBox4 = "" Or TextBox5 = "" Or TextBox6 = "" Or TextBox7 = "" Then
    MsgBox ("toutes les informations ne sont pas remplies")
   
        Else
        If Sheets("source").Range("a2") = "" Then
         Sheets("source").Range("a2") = TextBox1

        Else
   
       
     dlt = Sheets("source").Cells(36000, 1).End(xlUp).Row + 1

        Sheets("source").Range("a" & dlt) = TextBox1
        Sheets("source").Range("b" & dlt) = TextBox2
        Sheets("source").Range("c" & dlt) = TextBox3
        Sheets("source").Range("d" & dlt) = TextBox4
        Sheets("source").Range("e" & dlt) = TextBox5
        Sheets("source").Range("f" & dlt) = TextBox6
        Sheets("source").Range("g" & dlt) = TextBox7
       
    End If
    End If
    Unload Me
    UserForm1.Show

End Sub
 

Pièces jointes

  • Copie de Copie de Classeur1 v2.xlsm
    26.4 KB · Affichages: 11

JEFF77

XLDnaute Occasionnel
Re GALOUGALOU

super je t’embête encore un peu juste un dernier petit bug lorsque toutes les lignes sont effacées je rempli mon formulaire
et quand je valide j'ai juste en A2 le textbox1 et rien dans les autres.
formulaire suivant ok pour tout.

merci
 

cp4

XLDnaute Barbatruc
mais lorsque je valide la ligne se remplie bien mais lorsque j'efface les données dans le formulaire pour faire une nouvelle saisie le textbox1 s'efface serait il possible qu'il reste.
et quand je rempli de nouveau le formulaire et valide dans source il ne change pas de ligne.
pour la dernière ligne, je suis d'accord avec toi car j'avais fait une erreur à la va-vite.
Pour l'effacement c'est ton code initial qui fait le boulot (vide textbox1), auquel je n'y avais pas touché. Maintenant, si tu ouvres une discussion pour un problème, mais dont l'objectif est de se faire livrer du tout cuit, c'est autre chose. Alors, on est membre pour apprendre en se faisant aider. Pour moi c'est Ok. Dans le cas contraire, c'est abusé de la gentillesse des contributeurs.

Le fichier corrigé ci-joint.

@GALOUGALOU ;)

Bonne soirée.
 

Pièces jointes

  • Copie de Classeur1-1.xlsm
    26.4 KB · Affichages: 7

JEFF77

XLDnaute Occasionnel
re
supposition
si le problème se trouve dans un autre classeur, et que la feuille comporte un tableau ou que dans la colonne A se trouve des données, ces raisons peuvent expliquer tes problèmes.
A confirmer.
cordialement
re

non le même classeur regarde je t'ai expliqué dans la feuille source
 

Pièces jointes

  • Copie de Copie de Classeur1 v3 (1).xlsm
    25 KB · Affichages: 4

JEFF77

XLDnaute Occasionnel
pour la dernière ligne, je suis d'accord avec toi car j'avais fait une erreur à la va-vite.
Pour l'effacement c'est ton code initial qui fait le boulot (vide textbox1), auquel je n'y avais pas touché. Maintenant, si tu ouvres une discussion pour un problème, mais dont l'objectif est de se faire livrer du tout cuit, c'est autre chose. Alors, on est membre pour apprendre en se faisant aider. Pour moi c'est Ok. Dans le cas contraire, c'est abusé de la gentillesse des contributeurs.

Le fichier corrigé ci-joint.

@GALOUGALOU ;)

Bonne soirée.

je m'excuse cp4 je débute j'essai d'apprendre en regardant des tutos.pas evident
je te remercie de ton aide
bonne soirée
 

GALOUGALOU

XLDnaute Accro
re jeff77 amitiés cp4 bonjour le forum
le problème venait du code corrigé dans la mouture ci-dessous (suppression de ligne inutile)
Enrichi (BBcode):
Private Sub CommandButton1_Click()
    If TextBox1 = "" Or TextBox2 = "" Or TextBox3 = "" Or TextBox4 = "" Or TextBox5 = "" Or TextBox6 = "" Or TextBox7 = "" Then
    MsgBox ("toutes les informations ne sont pas remplies")
   

        Else
   
       
     dlt = Sheets("source").Cells(36000, 1).End(xlUp).Row + 1

        Sheets("source").Range("a" & dlt) = TextBox1
        Sheets("source").Range("b" & dlt) = TextBox2
        Sheets("source").Range("c" & dlt) = TextBox3
        Sheets("source").Range("d" & dlt) = TextBox4
        Sheets("source").Range("e" & dlt) = TextBox5
        Sheets("source").Range("f" & dlt) = TextBox6
        Sheets("source").Range("g" & dlt) = TextBox7
       
    End If
    Unload Me
    UserForm1.Show


End Sub

attention, dans la feuille un tableau se construit à partir de la ligne 3, au fur et mesure de l'ajout de données. pour une réinitialisation supprimer toutes les lignes du tableau (de la ligne 3 à la fin).
une petite précision, en informatique je n'ai reçu aucune formation,je suis autodidacte et malgré bien des embuches, j'ai appris grâce à internet et à l'aide trouvé sur les forums par des personnes qui ont démocratisées leurs connaissances. alors bon courage et ne lâchez rien.
cordialement
galougalou
 

Pièces jointes

  • Copie de Copie de Classeur v5.xlsm
    26.7 KB · Affichages: 11

cp4

XLDnaute Barbatruc
re jeff77 amitiés cp4 bonjour le forum
le problème venait du code corrigé dans la mouture ci-dessous (suppression de ligne inutile)
Enrichi (BBcode):
Private Sub CommandButton1_Click()
    If TextBox1 = "" Or TextBox2 = "" Or TextBox3 = "" Or TextBox4 = "" Or TextBox5 = "" Or TextBox6 = "" Or TextBox7 = "" Then
    MsgBox ("toutes les informations ne sont pas remplies")


        Else

    
     dlt = Sheets("source").Cells(36000, 1).End(xlUp).Row + 1

        Sheets("source").Range("a" & dlt) = TextBox1
        Sheets("source").Range("b" & dlt) = TextBox2
        Sheets("source").Range("c" & dlt) = TextBox3
        Sheets("source").Range("d" & dlt) = TextBox4
        Sheets("source").Range("e" & dlt) = TextBox5
        Sheets("source").Range("f" & dlt) = TextBox6
        Sheets("source").Range("g" & dlt) = TextBox7
    
    End If
    Unload Me
    UserForm1.Show


End Sub

attention, dans la feuille un tableau se construit à partir de la ligne 3, au fur et mesure de l'ajout de données. pour une réinitialisation supprimer toutes les lignes du tableau (de la ligne 3 à la fin).
une petite précision, en informatique je n'ai reçu aucune formation,je suis autodidacte et malgré bien des embuches, j'ai appris grâce à internet et à l'aide trouvé sur les forums par des personnes qui ont démocratisées leurs connaissances. alors bon courage et ne lâchez rien.
cordialement
galougalou
Bonjour,

@GALOUGALOU ;) moi aussi je suis autodidacte (comme beaucoup d'ailleurs).
Le tableau se construira au fur et à mesure avec la première ligne du tableau vide (soit ligne 2 de la feuille). Il fallait ajouter une condition au début du code pour que ça tombe pile poil en seconde ligne lorsque le tableau structuré est vide.
VB:
Private Sub CommandButton1_Click()
   If TextBox1 = "" Or TextBox2 = "" Or TextBox3 = "" Or TextBox4 = "" Or TextBox5 = "" Or TextBox6 = "" Or TextBox7 = "" Then
      MsgBox ("toutes les informations ne sont pas remplies")

   Else

      If Range("Tableau1").ListObject.ListRows.Count = 0 Then
         dlt = 2
      Else
         dlt = Sheets("source").Range("a" & Sheets("source").Rows.Count).End(xlUp).Row + 1
      End If
      Sheets("source").Range("a" & dlt) = TextBox1
      Sheets("source").Range("b" & dlt) = TextBox2
      Sheets("source").Range("c" & dlt) = TextBox3
      Sheets("source").Range("d" & dlt) = TextBox4
      Sheets("source").Range("e" & dlt) = TextBox5
      Sheets("source").Range("f" & dlt) = TextBox6
      Sheets("source").Range("g" & dlt) = TextBox7

   End If
   Unload Me
   UserForm1.Show
End Sub

Le code ci-dessous t'aidera à déterminer le numéro de ligne lorsque le tableau est vide
Code:
Sub NbreLigneTableau()
Debug.Print Range("Tableau1").Rows.Count 'renvoie 1 qd tableau vide
Debug.Print Range("Tableau1").ListObject.ListRows.Count 'renvoie 0 qd tableau vide
End Sub

@JEFF77 ;), si tu veux une numérotation comme celle proposée par Galougalou.
Tu peux prendre celle-ci à la place de l'autre.
Code:
Me.TextBox1 = Application.WorksheetFunction.Max(.Range("a2:a" & .Range("a" & .Rows.Count).End(xlUp).Row)) + 1
Bonne journée.
 
Dernière édition:

GALOUGALOU

XLDnaute Accro
re à cp4
et oui on apprend à tout age, je ne connaissais pas cette ligne de code. merci cp4...:)
re jeff 77
le moteur de recherche est ton meilleur ami, mais peut-être ce lien
cordialement
galougalou
 

Discussions similaires

Réponses
18
Affichages
621

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16