Identifiant unique
Bonjour,
J'essaie de créer un identifiant unique dans la colonne A qui pourra prendre deux formes.
Premiere forme en cliquant sur un bouton, m'incremente un nouveau ID par rapport au dernier ID
| AA00001-1 AA00002-1 AA00003-1 AA00004-1 AA00005-1 AA00006-1 AA00007-1 AA00008-1 AA00009-1 AA00010-1 AA00011-1 etc. |
Deuxième forme en cliquant sur autre bouton, m'incremente un-ID connu mais avec un nouveau mode, le dernier chiffre qui change
AA00001-1
AA00001-2
AA00001-3
AA00001-4
AA00002-1
AA00002-2
AA00003-1
AA00003-1
etc.
pouvez-vous m'aider ?
a+
Je suis à peu près certain que vous ne nous avez proposé qu'une partie du problème. L'histoire nous le dira
Donc proposition 1. Pour la forme n° 2, il faut entrer manuellement la racine dans la cellule B1.
bonjour Optimix, benji77,
si vous êtes sur la dernière cellule de la colonne A et vous clicquez soit double soit droite avec le souris, la cellulle suivante sera +1 pour une des 2 manières.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With Range("A" & Rows.Count).End(xlUp)
If Target.Address = .Address Then
.Offset(1).Value = Left(.Value, 2) & Format(Mid(.Value, 3, 5) + 1, "00000") & "-1"
Cancel = True
End If
End With
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
With Range("A" & Rows.Count).End(xlUp)
If Target.Address = .Address Then
.Offset(1).Value = Left(.Value, 8) & Split(.Value, "-")(1) + 1
Cancel = True
End If
End With
End Sub
Bonjour a tous,
Tout d'abord merci pour l'ensemble de vos solutions.
j'ai applique la solution a FINDRH qui propose ce je souhaite.
De la a pourvoir adapter sa solution, la est un autre problème.
C'est pourquoi je préfère vous laisser mon formulaire afin que vous le compreniez, compreniez ma demande.
Je dois aussi mettre a jour l'ensemble des champs rentres des combobox2 a 226 et textbox26 a 30 en appuyant sur l'un des 2 boutons insertion (bouton 5 ou 14)
Si vous pouviez me guider afin de l'adapter a mon probleme ...
a+
Bonjour
J'ai vu ton pb qui n'est pas simple a priori, d'autant plus que ton classeur me plante systématiqement mes macros sur mes fichiers source ....
Elles existent toujours, fonctionnent mais sont verrouillées invisibles... une nouveauté !!!
J'ai réparé excel 3 fois....
Désolé je rends mon tablier sur ce sujet
Cordialement
FINDRH
bonsoir FINDRH,
Désolé que mon formulaire vous ait causé des problèmes
En tout cas merci pour cette solution que je retiens.
Bien à vous
Cdlt
A+
re,
en module1, les 2 macros possibles, dans votre UF, macro "CommandButton5_Click", je ne sais pas comment cela doit fonctionner, mais un essai.
Bonjour BsAlv,
Merci pour cette solution pour le bouton 5.
TEST effectué:
Je dois d'abord créer ma nouvelle ligne avec ce bouton; sélectionner la ligne avec son nouvel identifiant, y rentrer les valeurs que je souhaite dans chaque champs puis appuyer sur le bouton modification pour valider la ligne et ses valeurs avec le nouvel identifiant crée, c'est excellent, ca marche !
Interrogation:
Apres la question que je me pose, c'est de diminuer d'un clic, en insérant la nouvelle ligne avec l'identifiant et ses valeurs sans passer par le bouton modification. Vous pensez que cela est possible? c'est ce que je souhaite mettre en place.
Bouton 14:
Concernant le bouton 14, c'est un peut different. Je souhaite sélectionner une ligne avec son identifiant et ses valeurs déjà presents dans la ListBox20 afin de créer un nouveau mode de fonctionnement d'un meme système. la ligne sélectionnée aura pour identifiant par exemple AA00033-1 ou AA00152-4 et pouvoir créer un nouveau identifiant ayant le numéro AA00033-2 ou AA00152-5 en prenant en compte que c'est le dernier chiffre qui s'incremente de +1 par rapport a la ligne sélectionnée. En effet, c'est plus délicat a mettre en place.
A+
bonjour Benji77,
voici votre bouton14, je ne suis pas sûr que cela fonctionne 100% comme vous le voulez.
Bonjour Bs Alv,
Desole pour ma reponse tardive.
Un seul mot: "Excellent"
A+
Bonjour BsAlv,
J'ai 4 variables non définies, a mettre dans l'option explicit pour le bouton14.
Option Explicit
Dim TblBD()
Dim dchoisis1, dchoisis2, dchoisis3, dchoisis4, dchoisis5, dchoisis6, dchoisis7, dchoisis8, dchoisis9, dchoisis10, dchoisis11, dchoisis12, dchoisis13, dchoisis14, dchoisis15, dchoisis16
Dim nomtableau As String
Dim nbcol As Byte
Dim i As Bytevariable r:
r = Application.Match(.Text, LO.ListColumns("ELECTRONIC NAME").DataBodyRange, 0) variable s:
s = Left(.Value, 8) & Split(.Value, "-")(1) + 1 variable r1:
r1 = Application.Match(s, LO.ListColumns("ELECTRONIC NAME").DataBodyRange, 0)variable c:
c = LO.ListRows.Add(r + 1).RangeAvec correctif dans mon option explicit:
Option Explicit
Dim TblBD()
Dim dchoisis1, dchoisis2, dchoisis3, dchoisis4, dchoisis5, dchoisis6, dchoisis7, dchoisis8, dchoisis9, dchoisis10, dchoisis11, dchoisis12, dchoisis13, dchoisis14, dchoisis15, dchoisis16
Dim nomtableau As String
Dim nbcol As Byte
Dim i As Byte
Dim s, r, r1, cLe bouton 14 fonctionne.
Re,
Pour le bouton 5, j'ai un bug avec:
s = Left(.Value, 2) & Format(Mid(.Value, 3, 5) + 1, "00000") & "-1"
Private Sub CommandButton5_Click()
With Sheets("DATABASE_VUSHF").Range("Tableau1").ListObject
If .ListRows.Count > 0 Then
With .DataBodyRange.Cells(.ListRows.Count, 1)
s = Left(.Value, 2) & Format(Mid(.Value, 3, 5) + 1, "00000") & "-1"
End With
With .ListRows.Add.Range
.Range("A1").Value = s 'nouvelle numéro en A1
.Range("AA1").Resize(, 5).Value = Array(TextBox26.Value, TextBox27.Value, TextBox28.Value, TextBox29.Value, TextBox30.Value) 'ces 5 textboxes en AA:AE
End With
Else
MsgBox "problème, c'est la premiere ligne"
End If
End With
UserForm_Initialize
Call reset_all_controls
End SubPeut etre faut il que je vous renvoie le fichier excel ? ou alors integrer l'option explicit tout en haut des codes afin de constater le bug.
@+
re,
je suppose que l'identificiant de la dernière ligne du tableau est vide ou n'a pas le bon format, par exemple la partie du charactère 3 à 7 n'est pas numérique ou encore une autre chose
With .DataBodyRange.Cells(.ListRows.Count, 1)
If .Value = "" Then
MsgBox "identifiant de la dernière ligne est vide !!!" & vbLf & "On abandonne la procédure", vbCritical: Exit Sub
ElseIf Not Mid(.Value, 3, 5) Like "#####" Then
MsgBox "identifiant de la dernière ligne n'a pas le bon format !!!" & vbLf & "On abandonne la procédure", vbCritical: Exit Sub
Else
s = Left(.Value, 2) & Format(Mid(.Value, 3, 5) + 1, "00000") & "-1"
End If
End WithPour le 14, s est string (ici aussi), r et r1 sont Variant et c est Range, mais je préfère comme vous l'avez fait maintenant avec "Dim s, r, r1, c"
Sur l'Excel que je vous avais envoyé, cela fonctionnait très bien!
Mais comme j'ai mis l'option explicit, cela ne fonctionne plus.
J'ai essaye avec votre nouveau code, mais bug aussi.
Private Sub CommandButton5_Click()
With .DataBodyRange.Cells(.ListRows.Count, 1)
If .Value = "" Then
MsgBox "identifiant de la dernière ligne est vide !!!" & vbLf & "On abandonne la procédure", vbCritical: Exit Sub
ElseIf Not Mid(.Value, 3, 5) Like "#####" Then
MsgBox "identifiant de la dernière ligne n'a pas le bon format !!!" & vbLf & "On abandonne la procédure", vbCritical: Exit Sub
Else
s = Left(.Value, 2) & Format(Mid(.Value, 3, 5) + 1, "00000") & "-1"
End If
End With
UserForm_Initialize
Call reset_all_controls
End SubWith .DataBodyRange.Cells(.ListRows.Count, 1)
Compile error: invalid or unqualified reference.
a+
re, la macro a besoin un tableau structuré, vous avez oublié les premières lignes
Private Sub CommandButton5_Click()
dim s
With Sheets("DATABASE_VUSHF").Range("Tableau1").ListObject
If .ListRows.Count > 0 Then
et le reste ....
+ End if + End WithPrivate Sub CommandButton5_Click()
Dim s
With Sheets("DATABASE_VUSHF").Range("Tableau1").ListObject
If .ListRows.Count > 0 Then
With .DataBodyRange.Cells(.ListRows.Count, 1)
If .Value = "" Then
MsgBox "identifiant de la dernière ligne est vide !!!" & vbLf & "On abandonne la procédure", vbCritical: Exit Sub
ElseIf Not Mid(.Value, 3, 5) Like "#####" Then
MsgBox "identifiant de la dernière ligne n'a pas le bon format !!!" & vbLf & "On abandonne la procédure", vbCritical: Exit Sub
Else
s = Left(.Value, 2) & Format(Mid(.Value, 3, 5) + 1, "00000") & "-1"
End If
End With
UserForm_Initialize
Call reset_all_controls
End SubProblème avec End sub
compil error: block if without End If
a+
re,
je l'avais dit dans mon dernier poste, au bout il faut encore un endif et un end with
Private Sub CommandButton5_Click()
Dim s
With Sheets("DATABASE_VUSHF").Range("Tableau1").ListObject
If .ListRows.Count > 0 Then
With .DataBodyRange.Cells(.ListRows.Count, 1)
If .value = "" Then
MsgBox "identifiant de la dernière ligne est vide !!!" & vbLf & "On abandonne la procédure", vbCritical: Exit Sub
ElseIf Not Mid(.value, 3, 5) Like "#####" Then
MsgBox "identifiant de la dernière ligne n'a pas le bon format !!!" & vbLf & "On abandonne la procédure", vbCritical: Exit Sub
Else
s = Left(.value, 2) & Format(Mid(.value, 3, 5) + 1, "00000") & "-1"
End If
End With
End If '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
End With '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
UserForm_Initialize
Call reset_all_controls
End Subj'ai fait les correctifs
Private Sub CommandButton5_Click()
Dim s
With Sheets("DATABASE_VUSHF").Range("Tableau1").ListObject
If .ListRows.Count > 0 Then
With .DataBodyRange.Cells(.ListRows.Count, 1)
If .Value = "" Then
MsgBox "identifiant de la dernière ligne est vide !!!" & vbLf & "On abandonne la procédure", vbCritical: Exit Sub
ElseIf Not Mid(.Value, 3, 5) Like "#####" Then
MsgBox "identifiant de la dernière ligne n'a pas le bon format !!!" & vbLf & "On abandonne la procédure", vbCritical: Exit Sub
Else
s = Left(.Value, 2) & Format(Mid(.Value, 3, 5) + 1, "00000") & "-1"
End If
End With
UserForm_Initialize
Call reset_all_controls
End If
End With
End Subalors plus de bug.
Mais je ne peux pas incrémenter une nouvelle ligne car il me met identifiant de la dernière ligne est vide ... .
a+