travailler sur une autre feuille sans l'afficher Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
d
diablo7431
Membre habitué
Membre habitué
Messages : 99
Inscrit le : 4 décembre 2016
Version d'Excel : 365

Message par diablo7431 » 31 octobre 2018, 06:07

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
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 4'019
Appréciations reçues : 306
Inscrit le : 26 janvier 2011
Version d'Excel : 2007/2019

Message par Theze » 31 octobre 2018, 06:31

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
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
d
diablo7431
Membre habitué
Membre habitué
Messages : 99
Inscrit le : 4 décembre 2016
Version d'Excel : 365

Message par diablo7431 » 31 octobre 2018, 07:04

Bonjour Theze et merci :wink:

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?
Avatar du membre
CORDIA5
Membre dévoué
Membre dévoué
Messages : 788
Appréciations reçues : 27
Inscrit le : 14 août 2016
Version d'Excel : 2016

Message par CORDIA5 » 31 octobre 2018, 08:23

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

:btres:
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 4'019
Appréciations reçues : 306
Inscrit le : 26 janvier 2011
Version d'Excel : 2007/2019

Message par Theze » 31 octobre 2018, 15:51

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
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
d
diablo7431
Membre habitué
Membre habitué
Messages : 99
Inscrit le : 4 décembre 2016
Version d'Excel : 365

Message par diablo7431 » 31 octobre 2018, 17:58

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 ::B.
Avatar du membre
dhany
Passionné d'Excel
Passionné d'Excel
Messages : 6'898
Appréciations reçues : 694
Inscrit le : 3 octobre 2017
Version d'Excel : 2007 FR

Message par dhany » 1 novembre 2018, 13:10

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
1 membre du forum aime ce message.
d
diablo7431
Membre habitué
Membre habitué
Messages : 99
Inscrit le : 4 décembre 2016
Version d'Excel : 365

Message par diablo7431 » 1 novembre 2018, 13:57

Bonjour dhany,

merci pour ta contribution ;)

Parfait ::D

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. :)
Avatar du membre
dhany
Passionné d'Excel
Passionné d'Excel
Messages : 6'898
Appréciations reçues : 694
Inscrit le : 3 octobre 2017
Version d'Excel : 2007 FR

Message par dhany » 1 novembre 2018, 14:07

merci pour ton retour, et pour le :D  :sp:

merci aussi d'avoir passé le sujet en résolu !  ;-b)

bonne continuation !  :trfl:

dhany
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message