Soucis de variables

Résolu
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

  1. Modérateur
    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
    1. 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
      1. 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
        1. Modérateur
          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
          1. 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
          2. 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
        2. 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
          1. Modérateur
            Je te joint mon fichier remis au gout
            édoukilé??? Douktami le fichier???
            Cordialement,
            Franck P
            0
            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
              1. Modérateur
                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
            2. 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