Travailler sur une autre feuille sans l'afficher
Bonjour le forum,
par un usf, j'aimerais pouvoir travailler sur une autre feuille (lst-com) en gardant ma feuille (commande) ouverte
ceci me donne une erreur de "end with sans with"
Je me doute que l'erreur doit être toute bête, mais j'ai essayé plusieurs choses sans résultats!
Private Sub UserForm_Initialize()
Dim num As Integer
With Worksheets("lst-com")
DateMoAn = Now()
num = Range("A65536").End(xlUp).Row
If Right(Range("A" & num), 3) < 9 Then
Label31 = Format(DateMoAn, "mmyy") & "C00" & Right(Range("A" & num), 3) + 1
End With
end if
end sub
Bonjour,
De cette façon :
Private Sub UserForm_Initialize()
Dim num As Integer
DateMoAn = Now()
With Worksheets("lst-com")
num = .Range("A65536").End(xlUp).Row
If Right(.Range("A" & num), 3) < 9 Then
Label31 = Format(DateMoAn, "mmyy") & "C00" & Right(.Range("A" & num), 3) + 1
End If
End With
End Sub
Bonjour Theze et merci
en mettant les choses au bon endroit et avec les "point" c'est bien mieux, plus d'erreur "end if", mais..
...par contre l'info qui devrait s'afficher sur le "label31" ne s'affiche pas?
Bonjour
Je pense que tu n'as pas repris le nom l'userform auquel appartient le Label
remplace :
Label31 = Format(DateMoAn, "mmyy") & "C00" & Right(.Range("A" & num), 3) + 1
par
UserForm.Label31 = Format(DateMoAn, "mmyy") & "C00" & Right(.Range("A" & num), 3) + 1
Cordia5
Exécutes le code en pas à pas (touche F8) si tu n'entres pas dans le bloc If-End If c'est tout simplement que la condition est fausse à savoir les trois derniers caractères de la cellule "A" & num (je me demande bien ce qu'ils doivent représenter ?) sont supérieurs ou égaux à 9, avec par exemple 008, tu va entrer dans le bloc et donc avoir un affichage de valeur. Le fait de parenter le Label ne change rien et n'est pas obligatoire car le Label se trouvant sur la Form il est de façon implicite enfant de cette dernière par contre, la bonne pratique veux que malgré le fait que la propriété "Caption" soit la propriété par défaut, il est bien de la préciser comme il est conseiller de préciser la propriété "Value" pour un Range
Bonjour CORDIA5, re Theze,
@CORDIA5
UserForm.Label31 = Format(DateMoAn, "mmyy") & "C00" & Right(.Range("A" & num), 3) + 1
j'y avais déjà pensé et déjà essayé, mais ça ne change rien, de plus, comme le code ce trouve dans "l'initialise" de usf en question je pense que ça n'a aucun intérêt de le rajouter, merci quand même de t'y être penché
@Theze
j'ai effectuer un test pas à pas et la ligne:
il passe en jaune > if Right
rien sur celle ci > Label31 = Form.......
il passe en jaune > End if
bon après...., en testant les autres "if end if" le résultat est le même, donc ça doit-être normale
Private Sub UserForm_Initialize()
Dim num As Integer
DateMoAn = Now()
With Worksheets("lst-com")
num = .Range("A65536").End(xlUp).Row
If Right(.Range("A" & num), 3) < 9 Then
Label31 = Format(DateMoAn, "mmyy") & "C00" & Right(.Range("A" & num), 3) + 1
End If
End With
pour te répondre à ceci:
(je me demande bien ce qu'ils doivent représenter ?)
j'ai mis le reste du code en commentaire en attendant que la première partie fonctionne.
ce code me permet d'incrémenter mes n° de commandes et qu' à chaque passage
0-9 = mmyyC009
10-99 =mmyyC099
100-999 = mmyyC999
Sachant que chaque nouvelle année je repart à zéro, donc pas besoins d'avoir au dessus de mille.
voici le code complet:
Dim num As Integer
DateMoAn = Now()
With Worksheets("lst-com")
num = .Range("A65536").End(xlUp).Row
If Right(.Range("A" & num), 3) < 9 Then
Label31= Format(DateMoAn, "mmyy") & "C00" & Right(.Range("A" & num), 3) + 1
End If
End With
'Else
'If Right(Range("A" & num), 3) < 99 Then
'Label31 = Format(DateMoAn, "mmyy") & "C0" & Right(Range("A" & num), 3) + 1
'Else
'If Right(Range("A" & num), 3) < 999 Then
'Label31 = Format(DateMoAn, "mmyy") & "C" & Right(Range("A" & num), 3) + 1
''Else
''TextBox_numclient = "LPBE" & Right(Range("A" & num - 1), 4) + 1
'End If
'End If
End Sub
la bonne pratique veux que malgré le fait que la propriété "Caption" soit la propriété par défaut, il est bien de la préciser
j'ai essayer, en précisant "Label31.caption..." aucun changement!
Ce qui est étonnant c'est que le code fonctionne, a partir du moment où je suis sur la feuille "lst-com"
J'ai fait le test dans un usf vierge:
Dim num As Integer
Sheets("lst-com").Activate
DateMoAn = Now()
num = Range("A65536").End(xlUp).Row
If Right(Range("A" & num), 3) < 9 Then
Label1 = Format(DateMoAn, "mmyy") & "C00" & Right(Range("A" & num), 3) + 1
Else
If Right(Range("A" & num), 3) < 99 Then
Label1 = Format(DateMoAn, "mmyy") & "C0" & Right(Range("A" & num), 3) + 1
Else
If Right(Range("A" & num), 3) < 999 Then
Label1 = Format(DateMoAn, "mmyy") & "C" & Right(Range("A" & num), 3) + 1
End If
End If
End If
End Sub
Le problème vient, je pense, sur le fait de travailler sur une autre feuille et d'aller chercher les infos! enfin ce n'est que ce je pense
Bonjour diablo7431, le forum,
je te propose ce code VBA (non testé, c'est juste une piste) :
Private Sub UserForm_Initialize()
Dim lig As Long, num As Integer
DateMoAn = Now()
With Worksheets("lst-com")
lig = .Cells(Rows.Count, 1).End(xlUp).Row
num = Val(Right$(.Range("A" & lig), 3))
Label31 = Format(DateMoAn, "mmyy") & "C" & Right$("00" & num + 1, 3)
End With
TextBox_numclient = "LPBE" & Val(Right$(Range("A" & lig - 1), 4)) + 1
End Sub
dhany
Bonjour dhany,
merci pour ta contribution
Parfait
la seul chose en trop dans le code:
TextBox_numclient = "LPBE" & Val(Right$(Range("A" & lig - 1), 4)) + 1
de plus ta solution me permet de réduire considérablement le code d’incrémentation.
merci pour ton retour, et pour le ♡ !
merci aussi d'avoir passé le sujet en résolu !
bonne continuation !
dhany