creation fonction appelant divers userform et géré par une variable
Bonjour à tous,
Je créé régulièrement des fonctions pour les taches répétitives dans mes programmes.
Je m'en suis sorti jusqu'à vouloir créer cette fonction.
ci dessous le code inséré dans le programme que je veux mettre dans une fonction car je l'utilise 15 à 20 fois à la suite.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 'SAISIE 6CU PR6
If Sheets("tab_calc_coll").Range("D34").Value = 0 Then
With calculcoll.result_6cu_pr6
.Caption = "PR6 : 0 mètre"
.ForeColor = &HFFFFFF
.BackColor = &HFF&
End With
Else
With calculcoll.result_6cu_pr6
.Caption = "PR6 : " & Sheets("tab_calc_coll").Range("D34").Value & " mètres"
.ForeColor = &H0&
.BackColor = &HC0FFC0
End With
End If |
pour cet exemple les variables sont :
2ieme ligne "d34" et 10ième ligne "d34" appelé lign
3ieme ligne ".result_6cu_pr6" et 9iéme ligne "result_6cu_pr6" appelé cellule
4iéme ligne "pr6" et 10ième ligne "pr6" variable appelé pr
et cela donnerai ceci pour moi :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| function saisicab (lign,cellule,pr)
If Sheets("tab_calc_coll").Range(lign).Value = 0 Then
With calculcoll.(cellule)
.Caption = pr & " : 0 mètre"
.ForeColor = &HFFFFFF
.BackColor = &HFF&
End With
Else
With calculcoll.(cellule)
.Caption = pr & " : " & Sheets("tab_calc_coll").Range(lign).Value & " mètres"
.ForeColor = &H0&
.BackColor = &HC0FFC0
End With
End If
end function |
Cette fonction ne renvoie pas de résultat mais elle se chargera de la mise en forme de plusieurs LABEL dans un userform.
Le problème que vous trouverez de suite est la variable cellule qui enregistre le nom du label. Effectivement vba ne reconnaît pas ceci !!! J'ai essayé plusieurs solutions sans y arriver.
j'ai essayé même de mettre en variable l'appel de l'userform jusqu'à la propriété sans plus de succés.
Je reconnais que je maîtrise très mal les variable de type objet appelant des fonctions spéciales!!!!:roll::
Je pense que s'il y a solution, elle doit être dans ce type de variable !!!!
Pouvez vous m'aider ?
JE VOUS EN REMERCIE PAR AVANCE