IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Un scripting.dictionary paranormal ? [XL-2007]


Sujet :

Macros et VBA Excel

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Par défaut Un scripting.dictionary paranormal ?
    Bonjour tout le monde,

    Alors voilà, je dispose dans mon application d'un scripting.dictionary possédé.

    Je m'explique,

    Je crée et initialise mon dictionary comme ceci :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim iCoef
    Set iCoef = CreateObject("Scripting.dictionary")
    For i = 1 To nbCoef
            iCoef.Add .Cells(3, i), i
    Next

    J'affiche ensuite, afin de vérifier le contenu de mon dictionary le contenu de ce dernier :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Keys = iCoef.Keys
    Debug.Print "clé"
    'Loop through Keys array
    For i = 0 To UBound(Keys)
    Debug.Print "Key", i, Keys(i)
    Next
     
    Dim Items()
     
    'Get dictionary Items
    Items = iCoef.Items
    Debug.Print "Item"
    'Loop through Items array
    For i = 0 To UBound(Items)
    Debug.Print "Item", i, Items(i)
    Next
    Et j'obtiens bien le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    clé
    Key            0             1,5 
    Key            1             1,25 
    Key            2             1 
    Key            3             2 
    Item
    Item           0             1 
    Item           1             2 
    Item           2             3 
    Item           3             4
    Par contre, lorsque je tente d'afficher le résultat directement en passant par un index, je n'ai rien :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print "iCoef(2)", iCoef("2")
    Et j'ai beau essayer toutes les variantes qui me sont venues à l'esprit :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Debug.Print "iCoef(2)", iCoef(2)
    Debug.Print "iCoef(2)", iCoef.Item("2")
    Debug.Print "iCoef(2)", iCoef.Item(2)
    Je n'obtiens rien du tout.

    Quelqu'un pourrait-il me dire ce que je ne comprend pas ?

    Je souhaite en fait utiliser mon dictionary dans la portion de code suivante :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    For cptouvrier = 4 To nbligne
        For cptcolonne = 6 To nbcolonne
            ' Nous sommes un samedi ou dimanche
            If IsEmpty(.Cells(3, cptcolonne).Value) Then
                ' Nous sommes samedi
                If Left(.Cells(2, cptcolonne).Value, 4) = "same" Then
                    coefficient = dCoef.Item("samedi")
                    nbreHeures = .Cells(cptouvrier, cptcolonne).Value * coefficient
                    heures(cptouvrier - 4, iCoef.Item(CStr(coefficient))) = nbreHeures
                ' Nous sommes dimanche
                ElseIf Left(.Cells(2, cptcolonne).Value, 4) = "dima" Then
                    coefficient = dCoef.Item("dimanche")
                    nbreHeures = .Cells(cptouvrier, cptcolonne).Value * coefficient
                    heures(cptouvrier - 4, iCoef.Item(CStr(coefficient))) = nbreHeures
                End If
            ' Nous sommes un jour férié
            ElseIf .Cells(3, cptcolonne).Value = "férié" Then
                coefficient = dCoef.Item("férié")
                nbreHeures = .Cells(cptouvrier, cptcolonne).Value * coefficient
                heures(cptouvrier - 4, iCoef.Item(CStr(coefficient))) = nbreHeures
            'Nous sommes un jour normal
            Else
                coefficient = dCoef.Item(.Cells(3, cptcolonne))
                nbreHeures = .Cells(cptouvrier, cptcolonne).Value * coefficient
                heures(cptouvrier - 4, iCoef.Item(CStr(coefficient))) = nbreHeures
            End If
        Next
        ' il faut écrire le résultat dans les cellules de début
        For i = 1 To nbCoef
            .Cells(cptouvrier, i).Value = heures(cptouvrier - 4, i)
        Next
    Next

    Pour plus de faciliter, je vous joint le fichier xls en question.
    Petite explications :
    La macro en question se trouve dans le Module1 et porte le nom "Calcul_Heure"
    Il faudra par la suite, que je lie la macro au fait de pousser sur le bouton Calcul se trouvant dans chaque feuille <Mois> <Année>.
    Pour lancer la macro, placer vous dans une feuille de calcul de ce type, (novembre par exemple).

    Pour toutes informations complémentaires, n'hésitez pas à me bombarder de question, je tâcherai d'y répondre le plus rapidement possible.

    En vous remerciant pour toutes l'aide qu'il vous sera possible de me fournir, je vous souhaite à tous de passer une superbe journée.
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Trier un Classeur - Scripting.Dictionary ou Collection.
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/02/2013, 03h57
  2. [Toutes versions] Scripting Dictionary avec plusieurs descendants
    Par seba_stien dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/10/2009, 11h41
  3. Erreur avec "Scripting.Dictionary"
    Par jubourbon dans le forum VBScript
    Réponses: 3
    Dernier message: 10/04/2009, 14h34
  4. Réponses: 4
    Dernier message: 27/10/2008, 07h27
  5. Pb sur CreateObject (Scripting.Dictionary)
    Par Elwe31 dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/10/2007, 22h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo