Incrémenter une référence dans un formulaire Excel
Bonsoir à Tous,
je sais que le sujet à déjà été traité dans plusieurs forum mais je n'arrive pas a trouvé la bonne solution.
dans le fichier ci joint j'ai un formulaire et je souhaiterai qu'a son ouverture il incrémente automatiquement la référence qui se trouve en "A2" dans la TextBoxAff ( N° Aff) .
En effet, après l’insertion des données dans la feuille GAZ 33, il y a un tri qui vient mettre la ligne qui vient de se crée en ligne 2 et donc la dernière référence est toujours en "A2".
en espérant votre aide
Bonne soirée
Francis
Salut fmas,
Private Sub UserForm_Initialize()
'
Dim sItem$
'
sItem = Worksheets("GAZ 33").[A2]
Me.TextBoxAff.Text = Replace(Left(sItem, 4) & CStr(Val(Right(sItem, 5)) + 0.01), ",", ".")
'
End SubA+
Merci beaucoup Curulis57
impeccable. 3 jours que je cherchais!!!
puis je abuser, ce n'est pas dans le sujet mais je viens de m’apercevoir que j'ai une erreur dans la MsgBox.
Après avoir cliqué sur le bouton j'ai la MsgBox qui monte, si je clique sur oui, tout se passe bien mais si je clique sur NON, j'ai le message suivant " erreur 1004, la méthode 'range' de l'objet '_Global' a échoué et cette ligne se met en jaune;
" Range("A" & L).Value = TextBoxAff ' N° aff"
il doit manquer qq chose dans la procédure du Msg mais je n'arrive pas à trouver.
Private Sub BtCreer_Click()
Dim L As Integer
If MsgBox("Confirmez-vous l'insertion de ce nouveau dossier ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
L = Sheets("GAZ 33").Range("A" & Rows.Count).End(xlUp).Row + 1
End If
'Pour placer le nouvel enregistrement à la première ligne non vide du tableau
Range("A" & L).Value = TextBoxAff ' N° aff
Range("B" & L).Value = TextBoxClient ' Client
Range("C" & L).Value = TextBoxTelBu ' tel bureau
Range("D" & L).Value = TextBoxVille ' Ville
Dim j As Long
Dim i As Integer
Set Ws = Sheets("GAZ 33") ' correspond au nom de l'onglet dans le fichier excel
With Me.TextBoxAff
For j = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
Next j
' Trie sur la colonne A (Cells 2,1) ou A2
Dim x As Integer
x = Cells(2, 1).End(xlDown).Row
Range("A2:N" & x).Select
'Mettre Ascending pour ordre A à Z et Descending pour ordre Z à A
Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
' Efface les donnée de la feuille formulaire
Unload Me
Unload UserForm1
Sheets("Boutons").Select
End With
End Suben te remerciant par avance et te souhaitant une bonne journée
Salut fmas,
Private Sub BtCreer_Click()
'
Dim L%
'
If MsgBox("Confirmez-vous l'insertion de ce nouveau dossier ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
With Sheets("GAZ 33")
L = .Range("A" & Rows.Count).End(xlUp).Row + 1
'Pour placer le nouvel enregistrement à la première ligne non vide du tableau
.Range("A" & L).Value = Me.TextBoxAff.Text ' N° aff
.Range("B" & L).Value = Me.TextBoxClient.Text ' Client
.Range("C" & L).Value = Me.TextBoxTelBu.Text ' tel bureau
.Range("D" & L).Value = Me.TextBoxVille.Text ' Ville
' Trie sur la colonne A (Cells 2,1) ou A2
'Mettre Ascending pour ordre A à Z et Descending pour ordre Z à A
.Range("A2:N" & L).Sort Key1:=.Range("A2"), Order1:=xlDescending, Orientation:=xlTopToBottom
End With
End If
' Efface les donnée de la feuille formulaire
Unload UsfForm1
Worksheets("Boutons").Activate
'
End SubA+
encore MERCI pour tes 2 réponses.
j'ai vérifié l'incrémentation un peu plus loin et je rencontre un problème à partir du passage de .09
voici le résultat:
N Aff ordre de saisie
2Q9B99.1 6
2Q9B99.09 5
2Q9B99.08 4
2Q9B99.07 3
2Q9B99.06 2
2Q9B99.05 1
2Q9B99.04 0 point de départ
2Q9B0.01 7
2Q9B0.01 8
après le 2Q9B99.09; il passe à 2Q9B99.1 puis à 2Q9B0.01 et naturellement reste bloqué à ce chiffre puis la cellule A2 est toujours la même 2Q9B99.1
d'autre part, si je souhaite passer à 3 chiffre apres le . je remplace ta formule
Me.TextBoxAff.Text = Replace(Left(sItem, 4) & CStr(Val(Right(sItem, 5)) + 0.01), ",", ".")par celle ci ?
Me.TextBoxAff.Text = Replace(Left(sItem, 5) & CStr(Val(Right(sItem, 5)) + 0.001), ",", ".")?
le code doit 2Q9B99 reste fixe.
bonne journée
Salut fmas,
oops, je n'avais pas poussé les tests très loin, dirait-on...
Pour deux "décimales"...
sItem = Worksheets("GAZ 33").[A2]
Me.TextBoxAff.Text = Replace(Left(sItem, 4) & Format(CStr(Val(Right(sItem, 5)) + 0.01), "00.00"), ",", ".")Pour 3 "décimales"...
sItem = Worksheets("GAZ 33").[A2]
Me.TextBoxAff.Text = Replace(Left(sItem, 4) & Format(CStr(Val(Right(sItem, 6)) + 0.001), "00.000"), ",", ".")MAIS, ATTENTION, quand tu voudras changer de système, tu DEVRAS créer toi-même, manuellement le n° du premier dossier.
Ex : de 2Q9B99.04, créer 2Q9B99.041
A+
MERCI Curulis57,
Impécable.
ok pour faire la modif en cas de passage à 3 décimales.