Problème Incrémentation automatique textbox3 dans userform

bonjour,

je voudrais incrémenter la textbox3 du formulaire avec un numero automatique de dossier de format A-YYYYMMDD+ N° pour chaque appel.

j'ai une feuille dossier (dont le code est inscrit par clic droit sur l'onglet, où il devrait puiser ce numéro. numéro qui ensuite serait recopié dans la feuille récap.

mais je n'ai que des erreurs. Pouvez-vous m'aider ?

je joins le fichier exemple

merci d'avance

Bonjour,

J'ai l'impression que ça marche de mon côté. Cependant, ce n'est pas une macro clic droit mais sélection. Alors je propose une macro double clic sur A1 sans passer par J1 :

Private Sub Worksheet_beforedoubleclick(ByVal Target As Range, cancel as boolean)
dim num&
If Target.Address = "$A$1" Then
    Cancel = True
    num = Right(Range("A1").Value, 2) * 1
    Target.Value = "A-" & Format(Date, "ddmmyyyy") & "-" & Format(num + 1, "00")
End If
End Sub

Cdlt,

merci ! je vais tester! mais je voudrais que ce numéro soit rentré automatiquement dans la textbox3

sans ouvrir la feuille dossier, est ce que c'est possible ?

Oui c'est possible mais je n'ai pas vraiment fait attention au reste du fichier.

En fait, l'incrémentation n'est pas compliquée. Il faut juste déterminer les conditions dans lesquelles elle se réalise. J'imagine que vous avez un bouton valider sur votre UF qui va archiver les infos (dont le numéro inscrit sur la textbox) dans une base ? Alors, il suffit de prendre le max de la colonne numéros de cette base et rajouter 1.

alors j'ai mis ça dans l'UF mais ça ne rajoute pas de numéro ça recopie le même numéro du A2 feuille DOSSIER

Private Sub UserForm_Initialize()

 Dim NoEnreg As Integer
'Dim NoDossier As Integer

NoEnreg = Range("DOSSIER!A20000").End(xlUp).Row + 1 'Incrémente n° dossier
TextBox3.Value = NoEnreg

TextBox3.Value = "A-" & Format(Date, "yyyymmdd") & "-" & Format(NoEnreg + 1, "0000")

InitData
InitCombo
AdapterTailleFormAEcran

End Sub

qu'est-ce que j'ai encore oublié ?

Je pense que c'est parce que tu prends le numéro de la dernière ligne + 1. Or, à cause de la ligne d'en-tête (ou même des 2 lignes), il y a un décalage et tu te retrouves avec le n° du dernier enregistrement. Peux-tu essayer ça :

Private Sub UserForm_Initialize()

 Dim NoEnreg As Integer
'Dim NoDossier As Integer

with sheets("DOSSIER")
    dl = .cells(.rows.count, 1).End(xlUp).Row 'dernière ligne
    NoEnreg = split(.cells(dl, 1).value, "-")(2) * 1 'dernier enregistrement
end with

TextBox3.Value = "A-" & Format(Date, "yyyymmdd") & "-" & Format(NoEnreg + 1, "0000")

InitData
InitCombo
AdapterTailleFormAEcran

End Sub

Split(chaine, "-") divise la chaine à partir du séparateur et renvoie autant de chaines qu'il n'y a de parties séparées par un "-". En l'occurrence, ici, split renvoie un tableau de 3 éléments (en base 0 : de 0 à 2). Donc split(...)(2) est le dernier élément, le numéro à incrémenter.

Cdlt,

Bonjour, et encore merci pour votre aide !

je viens de faire le test du split sur le fichier mais ça me dit :

erreur de compilation

variable non définie.....

Bonjour,

Soit vous enlevez "Option Explicit", soit vous rajoutez dim dl as long. Normalement, ça devrait passer ensuite.

Cdlt,

Il n'y a plus d'erreur, mais il n'incrémente toujours pas de nouveau numéro, il recopie le même à chaque fois...

ça me rend vraiment dingue....

merci pour votre patience !

On est d'accord que le numéro dans la textbox3 est le dernier de la colonne A de DOSSIER + 1 ? Si c'est bien le cas, ce que je pense, c'est qu'il y a bien incrémentation.

Mais votre userform ne sert pas qu'à décorer et incrémenter j'imagine . Vous incrémentez un numéro unique pour ensuite l'enregistrer à la suite de votre base. Si vous n'effectuez pas d'enregistrement à l'issue du test, forcément, le dernier numéro reste le même (ce qui est rassurant). Le cycle c'est :

J'ouvre l'userform avec le numéro incrémenté (dernier + 1).

Je fais mes petites saisies.

J'appuie sur valider > les infos sont archivées dans ma base.

A la prochaine ouverture, j'aurais un nouveau numéro incrémenté de 1 (mais l'étape archivage est nécessaire pour cela).

Cdlt,

C'est exactement ça !

comment fait t-on l'enregistrement de ce dernier numéro ?

Alors là, c'est un autre sujet... Si l'incrémentation a lieu, c'est déjà ça.

Ensuite, il faut que vous archiviez vos données au clic sur la bouton de votre userform (que je n'ai pas regardé).

Ca dépend des noms de vos contrôles d'userform, des noms de vos colonnes de tableau.

Par exemple, Supposons que toutes les textbox ou combobox dont la valeur est destinée à être archivée soient nommées txt_Doss_Articles, cbx_Doss_Detail, etc et qu'à chaque fois, vous ayez une colonne dont le nom correspond à la dernière partie (Articles, Detail, ...).

Alors, un code exemple permettrait de se rapprocher du résultat :

Sub Archiver()

dim ctrl as control, nvl&, col&

with range("Dossier") 'tableau structuré nommé Dossier
    nvl = .rows.count - application.countblank(.columns(1)) + 1 'nouvelle ligne vierge
    for each ctrl in Uerform1.controls 'pour chaque controle de l'UF (adapter nom UF)
        if split(ctrl.name, "_")(1) = "Doss" then 'si il contient Doss (et est donc à retenir)
            col = application.match(split(ctrl.name, "_")(2), .rows(0), 0) 'numéro colonne renvoyée apres recherche de la partie droite du nom du ctrl dans la ligne d'en-tête du tableau
            .cells(nvl, col) = ctrl.value 'la valeur du ctrl en cours est archivé dans la cellule qui correspond (ligne nvl, colonne col)
        end if
    next ctrl
end with

end sub

Et pour exécuter cette macro, il faut l'appeler dans l'évènement clic du bouton de l'userform :

private sub commandbutton_click()
call Archiver
end sub

Cdlt,

Bonjour toutes et tous

coucou 3Gb ^^

est-ce que c'est comme ceci, je ne suis pas certain, j'ai ajouté un onglet car, il n'était pas présent dans le classeur ' ongletname'

celui-ci affiche le contenu des 3 textbox(s)

Option Explicit

Private OngletName As Object
'Private LigneFin As Long
Private LigneNew As Long

'Private Sub UserForm_Initialize()
  '  OngletName = "DOSSIER"
   ' Call InitialiseForm
'End Sub

Private Sub UserForm_Initialize()

 Dim NoEnreg As Integer

Dim dl As Long
With Sheets("DOSSIER")
    dl = .Cells(.Rows.Count, 1).End(xlUp).Row 'dernière ligne
    NoEnreg = Split(.Cells(dl, 1).Value, "-")(2) * 1 'dernier enregistrement
End With

TextBox3.Value = "A-" & Format(Date, "yyyymmdd") & "-" & Format(NoEnreg + 1, "0000")

'InitData
'InitCombo
'AdapterTailleFormAEcran

End Sub

Private Sub CmdValider_Click()
Dim n As Long
Dim LigneNew As Worksheet
    For n = 1 To 3
        Sheets("Ongletname").Cells(n).Value = UserForm1.Controls("TextBox" & n).Value
    Next n
    'Call InitialiseForm
End Sub

crdlt,

André

pour GB

pour la "sauvegarde" j'ai cette erreur :

erreur de compilation

Variable non définie

et il me surligne Userform1 (alors que j'ai vérifié, c'est bien son nom)

je teste après le fichier de André13

merci encore pour votre patience et vos explications !

Bonsoir…

Tu as un Tableau donc il suffit d’ajouter une ligne qui ouvre le formulaire de gestion des autres colonnes.

*Dans l’exemple joint c’est réalisé par un doubleclic

Bien sûr je n'ai pas traité cette suite !

J'avoue que là, je suis complètement pommée !

plus rien ne s'incrémente, et plus ça va, plus j'ai l'impression d'être nulle, alors désolée pour le temps que vous passez à m'aider !

mais j'aimerais vraiment comprendre....

je joins le fichier

Bonsoir à tous,

Voici votre fichier en retour avec mon idée. J'ai renommé les textbox et 2 colonnes.

Il y avait un blocage car j'ai mal saisi (Uerform au lieu de Userform).

Cdlt,

Merci !

je vais tester et voir si j'arrive à l'adapter à mon fichier réel, est-ce que je peux abuser et revenir vers vous si j'ai des questions ?

merci encore !

Rechercher des sujets similaires à "probleme incrementation automatique textbox3 userform"