Boucler sur des labels
Bonjour à tous,
Fraîchement inscrit j'ai besoin de vos lumières.
Après de multiples recherches sur le forum (et ailleurs) j'ai trouvé pile ce qu'il me fallait, mais...... ça ne marche pas.
Bref historique et description du problème.
Je suis depuis quelque temps sur la création d'une appli devis / facturation. Une chose en amenant une autre d'une truc simple ça devient une usine à gaz au fur et à mesure des demandes des utilisateurs.
Donc j'en suis à vouloir afficher un devis complet dans une useform avec des labels. Jusque là tout va bien. Toutefois à l'affichage les labels contenant la valeur de cellules vides indiquent 0, et c'est un peu moche et je veux faire une boucle sur 40 labels qui rend ceux à 0 non visible.
J'ai donc trouvé sur le forum un post de pierre.jy du 29 février qui traite très précisément de ce problème, soit une boucle sur des labels justement pour les rendre visible ou non visible. Mais dans mon cas ça ne fonctionne pas. En fait je ne sais pas si j'ai mis la macro où il fallait.
Dans mon userform.initialize j'affecte aux labels la valeur des cellules de la feuille "Voir_devis" avec les formats qui vont bien (à peu près, et on en reparlera), mais je ne peux pas supprimer les labels à 0...
Un grand merci à ceux qui me liront et me donneront leur avis.
Le code :
(voir en fin de code la sub clean())
Private Sub userform_initialize()
'________________________________
'N° de devis
Me.Label41 = Sheets("Voir_devis").[i1]
'________________________________
'
'Bloc adresse
Me.Label42 = Sheets("Voir_devis").[f6]
Me.Label43 = Sheets("Voir_devis").[f7]
Me.Label44 = Sheets("Voir_devis").[f8]
Me.Label45 = Sheets("Voir_devis").[f9]
Me.Label46 = Sheets("Voir_devis").[g9]
'________________________________
'Les 10 lignes du devis
'Ligne 1
Me.Label1 = Sheets("Voir_devis").[a12]
Me.Label2 = Format(CDbl(Sheets("Voir_devis").[g12]), "#0.00" & " €")
Me.Label3 = Sheets("Voir_devis").[h12]
Me.Label4 = Format(CDbl(Sheets("Voir_devis").[i12]), "#0.00" & " €")
'________________________________
'Ligne 2
Me.Label5 = Sheets("Voir_devis").[a13]
Me.Label6 = Format(CDbl(Sheets("Voir_devis").[g13]), "#0.00" & " €")
Me.Label7 = Sheets("Voir_devis").[h13]
Me.Label8 = Format(CDbl(Sheets("Voir_devis").[i13]), "#0.00" & " €")
'________________________________
'Ligne 3
Me.Label9 = Sheets("Voir_devis").[a14]
Me.Label10 = Format(CDbl(Sheets("Voir_devis").[g14]), "#0.00" & " €")
Me.Label11 = Sheets("Voir_devis").[h14]
Me.Label12 = Format(CDbl(Sheets("Voir_devis").[i14]), "#0.00" & " €")
'________________________________
'Ligne 4
Me.Label13 = Sheets("Voir_devis").[a15]
Me.Label14 = Format(CDbl(Sheets("Voir_devis").[g15]), "#0.00" & " €")
Me.Label15 = Sheets("Voir_devis").[h15]
Me.Label16 = Format(CDbl(Sheets("Voir_devis").[i15]), "#0.00" & " €")
'________________________________
'Ligne 5
Me.Label17 = Sheets("Voir_devis").[a16]
Me.Label18 = Format(CDbl(Sheets("Voir_devis").[g16]), "#0.00" & " €")
Me.Label19 = Sheets("Voir_devis").[h16]
Me.Label20 = Format(CDbl(Sheets("Voir_devis").[i16]), "#0.00" & " €")
'________________________________
'Ligne 6
Me.Label21 = Sheets("Voir_devis").[a17]
Me.Label22 = Format(CDbl(Sheets("Voir_devis").[g17]), "#0.00" & " €")
Me.Label23 = Sheets("Voir_devis").[h17]
Me.Label24 = Format(CDbl(Sheets("Voir_devis").[i17]), "#0.00" & " €")
'________________________________
'Ligne7
Me.Label25 = Sheets("Voir_devis").[a18]
Me.Label26 = Format(CDbl(Sheets("Voir_devis").[g18]), "#0.00" & " €")
Me.Label27 = Sheets("Voir_devis").[h18]
Me.Label28 = Format(CDbl(Sheets("Voir_devis").[i18]), "#0.00" & " €")
'________________________________
'Ligne 8
Me.Label29 = Sheets("Voir_devis").[a19]
Me.Label30 = Format(CDbl(Sheets("Voir_devis").[g19]), "#0.00" & " €")
Me.Label31 = Sheets("Voir_devis").[h19]
Me.Label32 = Format(CDbl(Sheets("Voir_devis").[i19]), "#0.00" & " €")
'________________________________
'Ligne 9
Me.Label33 = Sheets("Voir_devis").[a20]
Me.Label34 = Format(CDbl(Sheets("Voir_devis").[g20]), "#0.00" & " €")
Me.Label35 = Sheets("Voir_devis").[h20]
Me.Label36 = Format(CDbl(Sheets("Voir_devis").[i20]), "#0.00" & " €")
'________________________________
'Ligne 10
Me.Label37 = Sheets("Voir_devis").[a21]
Me.Label38 = Sheets("Voir_devis").[g21]
Me.Label38 = Format(CDbl(Sheets("Voir_devis").[g21]), "#0.00" & " €")
Me.Label39 = Sheets("Voir_devis").[h21]
Me.Label40 = Format(CDbl(Sheets("Voir_devis").[i21]), "#0.00" & " €")
clean
End Sub
Private Sub clean()
Dim lab As MSForms.Label
Dim i As Integer
For i = 1 To 40
With Sheets("Labels")
Set lab = Me.Controls("Label" & i)
If Me.Controls("Label" & i).Caption = "0" Then
lab.Visible = False
Else
lab.Visible = True
End If
End With
Next i
End Sub
Bonjour,
Je n'ai pas l'intention de répondre à tes questions, mais je vais te dire pourquoi
1) Le code cité n'utilise pas la balise Code dont tu disposes dans la fenêtre de rédaction, qui a pour effet de faciliter la lecture du code.
2) Le code n'étant de plus pas écrit avec une indentation correcte, il faut en moyenne 4 fois plus de temps pour le lire en sachant ce qu'on lit.
3) Aucun fichier permettant d'examiner ton problème en situation n'est joint.
4) [seulement à titre de conseil pour l'avenir] il faut rapidement apprendre à renommer ses contrôles de façon à pouvoir les insérer dans des boucles, et apprendre à faire des boucles, on ne peut s'en passer pour coder rationnellement en VBA...
Cordialement.