Soucis de variables

Résolu
duduleray Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -  
 Duduleray -
Bonjour,




Voila, j'ai un petit soucis de variable, j'ai donc une variable "Nom"

et plusieurs tableaux pour l'instant la pour essai baptiser "Dégradé1" "Dégradé2" "Dégradé3"

je souhaiterai utiler qu'une seule fois la boucle "For Each S In Nom"

Sur un test Ex:

if X=1 then Nom ="Dégradé1"

if X=51 then Nom ="Dégradé2"

etc etc mais ca marche pas les tests sont bons mais la variable "Nom" ne change pas
----------
PS: le code ci-dessous ne fait rien de spécial ici, c'est juste un bout pour voir
si possible ou pas.

>>>>> Voir svp commentaire dans ligne de code

Public Ctl As Msforms.Control, MyNumBox As NumBox: Public NumBoxes As Collection
Public WithEvents Bouton As Msforms.CommandButton: Public Nb As Integer, Ctrl As Control
Public S, X, Nom, Dégradé1, Dégradé2, Dégradé3 As Variant
Dim Boutons() As New NumBox

Private Sub Userform_Initialize()
'*** Dégradé1 du bouton N°1 à N°50
X = 1

If X = 1 Then Nom = "Dégradé1"  '*** Comme ca ca marche pas
if X=  1 then Nom = Dégradé1    '*** Comme ca non plus 

Dégradé1 = Array(46, 55, 64, 73, 82, 91, 100, 109, 118, 127, 137, 146, 155, 164, 173, 182, 191, 200)

'X = 51: Nom = Dégradé2
'Dégradé2 = Array(11776, 14080, 16384, 18688, 20992, 23296) 25600, 27904, 30208, 32512, 35072, 37376)
          
Set NumBoxes = New Collection
On Error Resume Next

For Each S In Nom  '*** ici quand je mets "Dégradé1 ou Dégradé2 ou Dégradé3" c'est bon

Controls("CommandButton" & (X)).BackColor = S
Me("CommandButton" & (X)).BackColor = S
Set MyNumBox = New NumBox
Set MyNumBox.TargetBox = Me("CommandButton" & (X))
NumBoxes.Add MyNumBox
X = X + 1
Next S
End Sub


Merci a vous et de votre temps, bonne journée a tous

Cdtl Ray

9 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

En fait, tu remplis tes variables dans le désordre.
D'abord tu dis Nom = dégradé et après tu affectes des valeurs à dégradé.
Fais le dans le sens inverse.
1- remplis tes variables tableaux dégradé, puis affectes en une à Nom...
Comme ceci :
Option Explicit

Public S, X, Nom, Dégradé1, Dégradé2, Dégradé3 As Variant

Sub test()
X = 2 'ou X = 1 pour tests...
Dégradé1 = Array(46, 55, 64, 73, 82, 91, 100, 109, 118, 127, 137, 146, 155, 164, 173, 182, 191, 200)
Dégradé2 = Array(11776, 14080, 16384, 18688, 20992, 23296, 25600, 27904, 30208, 32512, 35072, 37376)

If X = 1 Then Nom = Dégradé1 Else Nom = Dégradé2
For Each S In Nom
    Debug.Print S
Next
End Sub
0
Duduleray
 
Salut Pijaku

Je te remercie de ton aide, je regarde ça en rentrant (RDV toubib), te donne suite dès que possible, suis a la bourre

Merci tout mème ,c'est gentil LOL

A plus tard , bonne journée a toi

Cdtl Raymond
0
Duduleray
 
Salut Pijaku,

Bon écoute que du bonheur, ça marche bien, bien compris ton explication aussi

Un grand merci a toi,

Une question svp: je m'explique:

chaque "dégradé1 - 2 ou 3" corresponds a 50 valeurs décimales

j'ai un userform avec 50 commandbuttons qui sont coloriés avec ces valeurs (dégradé1 corresponds au rouge, dégradé2 au Vert)

Je souhaiterai creer un Label dans mon USF et faire varier dans ce label les 50 couleurs du dégradé1 ou 2 ou 3 avec un scrollbar , MAIS un Dégradé a la fois

Je ne sais pas faire, je saurai mettre en place mais pas coder

Pourrait tu svp et si tu a le temps et le savoir pour me faire ça, cela fait un moment que je cherche a faire hélas sans bon résultat

Encore merci pour ton aide
A plus tard

Cdtl Raymond
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Re- Raymond,

Ca n'est pas que je n'ai pas le temps ni l'envie de te faire ça, mais quelqu'un d'autre l'a déjà réalisé. Qui plus est quelqu'un d'hyper compétent...

Regarde les codes de ce fichier de Silkyroad

Si tu ne t'en sort pas, reviens pour d'éventuelles questions...
0
Duduleray
 
Salut pijaku,

Je te joint mon fichier remis au gout , j'ai essayer mais je n'arrive pas a faire varier aucun
de mes dégradés

j'ai suivi tes conseils en me bassant sur fichier du lien que tu m'a passer, mais ça colle pas.

Si tu a le temps svp de bien vouloir regarder, ou une idée, je t'en serai bien reconnaisant.

Merci d'avance, je vais encore essayer.

PS: j'ai re-baptiser les variables "dégradé"pour plus de lisibilité

Cdtl Raymond

Private Sub Userform_Initialize()
'*** DégradéRouge du bouton N°1 à N°50
X = 1
DégradéRouge = Array(46, 55, 64, 73, 82, 91, 100, 109, 118, 127, 137, 146, 155, 164, 173, 182, 191, 200, 209, 219, 228, 237, 246, 255, 592383, 1184511, _
       1776639, 2368767, 3026687, 3618815, 4210943, 4803071, 5395199, 5987327, 6579455, 7171583, 7763711, 8355839, 9013759, 9605887, 10198015, 10790143, _
       11382271, 11974399, 12566527, 13158655, 13750783, 14408703, 15000831, 15592959)

DégradéVert = Array(11776, 14080, 16384, 18688, 20992, 23296, 25600, 27904, 30208, 32512, 35072, 37376, 39680, 41984, 44288, 46592, 48896, 51200, 53504, 56064, 58368, _
       60672, 62976, 65280, 655113, 1244946, 1834779, 2424612, 3079982, 3669815, 4259648, 4849481, 5439314, 6029147, 6618980, 7208813, 7798646, 8388479, _
       9043849, 9633682, 10223515, 10813348, 11403181, 11993014, 12582847, 13172680, 13762513, 14417883, 15007716, 15597549)

If X = 1 Then Nom = DégradéRouge Else Nom = DégradéVert

Set NumBoxes = New Collection
On Error Resume Next

For Each S In Nom
Debug.Print S
Controls("CommandButton" & (X)).BackColor = S
Me("CommandButton" & (X)).BackColor = S
Set MyNumBox = New NumBox
Set MyNumBox.TargetBox = Me("CommandButton" & (X))
NumBoxes.Add MyNumBox
X = X + 1
Next S

'*** Paramètre ScrollBar1
With ScrollBar1
.Min = 0
.Max = 50          'Nombre de couleur
.LargeChange = 1
.SmallChange = 1
End With
End Sub

'*** Variation DégradéRouge dans Label17 avec ScrollBar1
Private Sub ScrollBar1_Change()

Label15.Caption = ScrollBar1.Value          'Compteur scrollbar1
End Sub
0
Duduleray
 
Non je n'ai pas de fichier excuse moi autant pour moi
juste le code de ce matin avec les modifs et a la fin le code
pour le scrollbar que je n'arrive pas
je n'ai jamais joint de fichier sur ce forum
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Duduleray
 
RE salut

Merci bien pour le lien, j'ai télécharger le fichier, je regarde si je peux m'inspirer de son code pour récupérer mes 50 valeurs.

je vais toujours essayer cette après midi, te tient au courant.

A plus tard

Cdtl Raymond
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Je te joint mon fichier remis au gout
édoukilé??? Douktami le fichier???
Cordialement,
Franck P
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Est ce que ceci te convient? Peut être + simple non?...
0
duduleray Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   1
 
Salut pijaku,

Bien reçu le fichier, ça fonctionne bien

"Simple me dit-tu", pourquoi aurai tu une idée derrière la tète, que tu me cacherai

dit moi tout svp moi je sèche sur ce coup la, mais si ça peut apporter un plus bien

je suis preneur, tu penses bien. LOL

Néanmoins je n'avais pas penser a coder de cette façon, je te remercie beaucoup

pour ton aide et ton savoir, c'est très très gentil de ta part.

Bonne soirée a toi

Cordialement Raymond
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Non, juste le code que je te donne est, pas plus simple, mais peut être plus clair que ce que je t'ai donné précédemment.
Bonne soirée également.
A+
Franck
0
Duduleray
 
Bonjour Franck,

Ok message bien recu, tout fonctionne très bien, j'ai appris bien des trucs grace a toi, je te remercie sincerement de ton aide ainsi que ta patience, ce n'ai toujours facile de ce faire comprendre.

Par contre ça j'ai bien compris "édoukilé??? Douktami le fichier???" c'est du langage
nouvelle version VBA extra terreste, en tout ça m'a bien fait rigoler. LOL

Bonne continuation a toi et surement a bientôt

Encore merci Franck bye bye Cordialement Raymond
0