Microsoft 365 Formulaire et numérotation des lignes tableau

Marec

XLDnaute Junior
Bonjour,

J'ai un formulaire USF qui alimente un tableau.
Quand j'enregistre les lignes s'ajoutent a la suite dans le tableau.
Au final j'enregistre le tableau par un bouton,et vide le tableau en même temps .
Je souhaiterai numéroter les lignes au fur et mesure des enregistrements.
Comment code cette incrémentation et la maintenir existante malgré l'effacement du tableau.?
(Je précise que je me suis fait aider pour certaines partie du fichier)

si quelqu'un a une idée je suis preneur
D'avance merci
 
Solution
Le classeur ci-joint conserve tout ce que vous avez fait.
Il y a juste dans la colonne "PAL N°" de la table structurée la formule
VB:
=LIGNE()-LIGNE(Tab_Packing[[#En-têtes];[PAL N°]])
Le code de l'userform a été modifié pour neutraliser la boite4

Marec

XLDnaute Junior
Bonjour vgendon,

En fait, dans le USF ,preniere txtbox je lui met le numéro 1qui est bien enregistrer dans le tableau
Comme je vais avoir plusieurs fois cette même ligne je voudrais a enregistrer, je voudrais que les numéro de lignes s'incrèrmement +1 .
Avec: lignes (a1) ,je ne parviens pas, surtout que je vide le tableau a la création du pdf
 

Marec

XLDnaute Junior
Bonjour à tous,

Il y a une solution assez simple. Dans le fichier-démo-simplette joint :

* un bouton pour ouvrir un userfom avec un textbox
* dans cet usf, un bouton d'enregistrement qui place le contenu du textbox dans la 1ère ligne vide de la feuille en colonne B
VB:
Private Sub CommandButton1_Click()
Dim lg As Integer

    lg = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1
    ActiveSheet.Cells(lg, "B").Value = Me.TextBox1.Value
    Unload Me
End Sub

* dans le code de la feuille on récupère l'événement Change et si A est vide et B non vide, on attribue en A le max de la colonne A plus 1
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B:B")) Is Nothing And Target.Rows.Count = 1 Then
        If Me.Range("A" & Target.Row).Value = "" And Not Me.Range("B" & Target.Row).Value = "" Then
            Me.Range("A" & Target.Row).Value = Application.Max(Me.Range("A:A")) + 1
        End If
    End If
End Sub
C'est cette méthode éprouvée que j'utilise le plus souvent
P.
Bonjour à tous,

Il y a une solution assez simple. Dans le fichier-démo-simplette joint :

* un bouton pour ouvrir un userfom avec un textbox
* dans cet usf, un bouton d'enregistrement qui place le contenu du textbox dans la 1ère ligne vide de la feuille en colonne B
VB:
Private Sub CommandButton1_Click()
Dim lg As Integer

    lg = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1
    ActiveSheet.Cells(lg, "B").Value = Me.TextBox1.Value
    Unload Me
End Sub

* dans le code de la feuille on récupère l'événement Change et si A est vide et B non vide, on attribue en A le max de la colonne A plus 1
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B:B")) Is Nothing And Target.Rows.Count = 1 Then
        If Me.Range("A" & Target.Row).Value = "" And Not Me.Range("B" & Target.Row).Value = "" Then
            Me.Range("A" & Target.Row).Value = Application.Max(Me.Range("A:A")) + 1
        End If
    End If
End Sub
C'est cette méthode éprouvée que j'utilise le plus souvent
P.
 

Marec

XLDnaute Junior
Bonjour à tous,

Il y a une solution assez simple. Dans le fichier-démo-simplette joint :

* un bouton pour ouvrir un userfom avec un textbox
* dans cet usf, un bouton d'enregistrement qui place le contenu du textbox dans la 1ère ligne vide de la feuille en colonne B
VB:
Private Sub CommandButton1_Click()
Dim lg As Integer

    lg = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1
    ActiveSheet.Cells(lg, "B").Value = Me.TextBox1.Value
    Unload Me
End Sub

* dans le code de la feuille on récupère l'événement Change et si A est vide et B non vide, on attribue en A le max de la colonne A plus 1
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B:B")) Is Nothing And Target.Rows.Count = 1 Then
        If Me.Range("A" & Target.Row).Value = "" And Not Me.Range("B" & Target.Row).Value = "" Then
            Me.Range("A" & Target.Row).Value = Application.Max(Me.Range("A:A")) + 1
        End If
    End If
End Sub
C'est cette méthode éprouvée que j'utilise le plus souvent
P.
bien que simple ,je ne parviens pas a adapter ce code
je joins le fichier si vous pouvez y jeter un ti coup d'oeil.
Quelques explications seraient bien venues,mais j'ai franchement du mal a suivre toute cette syntaxe
 

Pièces jointes

  • T1.xlsm
    37.1 KB · Affichages: 5

fanch55

XLDnaute Barbatruc
Je souhaiterai numéroter les lignes au fur et mesure des enregistrements.
Comment code cette incrémentation et la maintenir existante malgré l'effacement du tableau.?
Bonsoir, le numéro de ligne signifie quoi dans votre exemple ?
Est-ce une nouvelle colonne à mettre à jour dans le tableau Tab_Packing ?
1674501503640.png

On peut également y mettre une clé unique qui identifiera à tout jamais celle-ci ...
 

Marec

XLDnaute Junior
Bonsoir,
Suis désolé mais une clé unique ,je vois pas ce que vous entendez .
Cette colonne correspond au txtbox Numéro de palette.donc le numéro qui sera inscrit sur la palette.Maintenant ,ajouter une colonne est bien aussi,dans ce cas je change l'entête N°pal par Nbre Pal et la colonne que vous ajoutez devient N°Pal.


Par contre lorsque je ferme,le tableau se vide comme prévu initialement,mais je voudrais que l'incrementation refonctionne bien sûr.
 
Dernière édition:

fanch55

XLDnaute Barbatruc
Le classeur ci-joint conserve tout ce que vous avez fait.
Il y a juste dans la colonne "PAL N°" de la table structurée la formule
VB:
=LIGNE()-LIGNE(Tab_Packing[[#En-têtes];[PAL N°]])
Le code de l'userform a été modifié pour neutraliser la boite4
 

Pièces jointes

  • T1.xlsm
    41.2 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
312 219
Messages
2 086 369
Membres
103 197
dernier inscrit
sandrine.lacaussade@orang