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

Rechercher des sujets similaires à "travailler feuille afficher"