Propriete TAG

Jeff7087

XLDnaute Nouveau
Bonjour tout le monde
Encore un petit probleme que je n'arrive pas à resoudre.
A travers une routine VBA sous Excel, j'essaie de modifier la propritete TAG d'un userForm à l'aide de ce style de syntaxe :
FrmFormName.tag = cstr(range("A1").interior.colorindex).
Le but etant de postionner le tag avec la couleur de la cellule A1.
Cela fonctionne la premiere fois que je passe dans la boucle, mais la propriete revient à sa valeur initiale apres.

Si quelqu'un a une idee ...
 

Pierrot93

XLDnaute Barbatruc
Re : Propriete TAG

Bonsoir Jeff,

quand tu dis :

Cela fonctionne la premiere fois que je passe dans la boucle, mais la propriete revient à sa valeur initiale apres.

c'est après quoi ? si tu es dans une boucle, doit prendre la dernière valeur affectée, non ??

peut être qu'en voyant le code utilisé, cela nous permettrait de t'aider plus facilement.

bone soirée
@+
 

Jeff7087

XLDnaute Nouveau
Re : Propriete TAG

Bonsoir Pierrot
Effectivement mon explication n'est pas suffisament claire ....
En fait, c'est une routine que j'ai installe dans une applie qui permet aux utilisateurs de personnaliser leur environnement. Cette routine fait partie d'un ensemble de formulaires et de modules. Je voulais me servir de cette propriete pour stocker le code de couleur desire. Elle se deroule en 2 etapes, une premiere me permet d'afficher une plage de cellule dans laquelle l'utilisateur positionne ses choix de couleur. Il valide ses choix en lancant une routine a travers un bouton de commande qui lance le code qui recupere le code de couleur pour le stocker dans le tag. La premiere fois que je fais completement le cycle, cela fonctionne, et la deuxieme fois il me redonne les valeurs par defaut.
Le code situe dans un module ressemble a ceci (frmAbsences etant le nom du form dans le lequel je veux sauvegarde ma valeur:
FrmAbsences.Tag = CStr(Range("D65").Interior.ColorIndex)
J'utilise alors cette valeur a travers un autre formulaire pour coloriser la cellule avec la valeur choisie: ex de code utilise

Cell.Interior.ColorIndex = FrmAbsences.tag
J'espere avoir ete plus clair, en attendant de poster un exemple simple.
 

Pierrot93

XLDnaute Barbatruc
Re : Propriete TAG

Bonjour Jeff

oui, je crois qu'un tout petit exemple simple présentant le problème posé ne serait pas inutile...

Sinon, pourquoi ne pas stocker ta couleur dans une variable "public" ? Bien évidement elle serait réinitialisée à la fermeture du classeur...

Autre solution, écrire en "mode design" directement dans les propriétés de ton USF, ce qui permettrait de retrouver la nouvelle valeur au rechargement de celui-ci avant ou après ré-ouverture du classeur... contrainte, il faut que dans les options de sécurité, la case "faire confiance au projet visual basic" soit cochée.... et ce pour tous tes utilisateurs...

bonne journée
@+
 

Jeff7087

XLDnaute Nouveau
Re : Propriete TAG

Bonjour
Merci pour tes idees, mais j'ai resolu mon probleme. Pour tout dire, c'est que toutes les forms et la pluspart du code sont dans un fichier XLA, uniquement sur le pc des users qui en ont besoin. Les autres users, qui n'ont pas besoin de tout ca, n'ont acces qu'au fichier XLS en consultation, tout cela pour eviter de grossir le fichier XLS (200 Ko de gagnes). Le but etait justement de forcer les proprietes des USF, mais en passant par du code, car les users ne connaissent pas VBA.
En attendant, j'ai resolu mon pb en passant par une plage de cellules situees dans le XLS.
Cela n'empeche que j'aimerais bien savoir pourquoi cela ne fonctionne pas.
Je me repencherai sur le pb dès que mon applie sera bouclée.
Merci de tes propositions
Bon week end et à la prochaine.....
 

Papou-net

XLDnaute Barbatruc
Re : Propriete TAG

Bonjour jeff7087, pierrot93,

L'explication du problème est que Excel gère les couleurs selon le code RVB, alors que VBA les exprime en valeurs Hexadécimales.

Il faudrait donc établir un tableau de correspondance entre les n° de couleurs Excel et leur équivalent en hexa.

Ex (dans un module de code standard) :

Code:
Public CoulHexa As String

Sub CodesCouleurs()

CoulHexa = Array(56)
  CoulHexa(1) = "&H..."
  CoulHexa(2) = "&H..."
  
  
  CoulHexa(55) = "&H..."
  CoulHexa(56) = "&H..."

End Sub

Les indices de CoulHexa (entre parenthèses) représentent les n° de couleurs définis dans les boîtes de choix d'Excel.

Pour plus de renseignements, tu peux consulter l'excellent lien ci-dessous :

Les couleurs en VBA Excel: Les équivalences Hex-Long-RGB - Club des décideurs et professionnels en Informatique

Espérant avoir aidé.

Cordialement.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 576
Messages
2 089 855
Membres
104 290
dernier inscrit
Beloumi3