[Résolu] Remplir une plage dynamique à partir d'un dictionnaire

Psycolab

XLDnaute Nouveau
Bonjour a tous,

Merci à tous ceux qui prennent le temps de répondre car ce forum ça m'a très souvent aidé ! Aujourd'hui c'est à mon tour de poster car je ne vois plus du tout comment m'en sortir pour résoudre mon problème.
En vrac:
Je suis débutant en VBA, je travail sous exel 2010.

Voici la macro que j'ai réalisé :
c'est une feuille qui permet de calculer des dates par ex si on doit faire une action répéter tous les 2 jours et ce 3 fois. Cela nous donnera :
ex J0 -> 10/11/12
J2 -> 12/11/12
J4 -> 14/11/12
J6 -> 16/11/12

Mon problème concerne l'affichage des résultats, car cette macro me donne les objets sur la ligne 19 et les clés sur la ligne 20. Si il y a peu de point ce n'est pas gênant mais si il y a 100 points par ex ça devient illisible. Du coup j'aimerais qu'il m'affiche le résultat sous forme d'un tableau avec par ex les 5 premiers points sur les lignes 19 et 20 les 5 suivants sur 21 et 22 etc. Ce tableau doit être dynamique et s'ajuster au nombre de points qui est une variable. J'ai essayé plein de truc mais ça ne marche pas.

En vous remerciant par avance,
Cordialement,
Nico

voici la macro :

Sub Test()

Dim dico As Variant
Dim d As Variant

Set dico = CreateObject("Scripting.Dictionary")


dateJ0 = Range("C16").Value
jours = Range("E16").Value
Points = Range("I16").Value 'Nombre de répétitions

For m = 0 To Points

If jours = Empty Then
MsgBox "Remplir le nombre de jours"
End
Else
dico.Add (dateJ0 + (m * jours)), ("J " & (jours) * m)
End If
Next m



x = 1
For Each e In dico.items
Range("B19").Select
ActiveCell.Offset(0, x) = e
ActiveCell.Offset(0, x).Select
ActiveCell.Interior.ColorIndex = 48
x = x + 1
Next e

x = 1
For Each e In dico.keys
Range("B20").Select
ActiveCell.Offset(0, x) = e
x = x + 1
Next e

End Sub
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Remplir une plage dynamique à partir d'un dictionnaire

Bonsoir Psycolab
Je ne sais pas si je pourrais t"aider, mais en tous cas, je pense que personne ne le pourra sans un fichier exemple et quelques indications supplémentaires.Pour la gestion des dictionnaires tu peux aller voir sur le site de J.B ici
Cordialement
 

Efgé

XLDnaute Barbatruc
Re : Remplir une plage dynamique à partir d'un dictionnaire

Re
Bon... ...allez...
Une proposition avec le dico
VB:
Sub Test2()
Dim dico As Variant
Set dico = CreateObject("Scripting.Dictionary")
dateJ0 = Range("C16").Value
jours = Range("E16").Value
If jours = Empty Then
    MsgBox "Remplir le nombre de jours"
    Exit Sub
Else
    For M = 0 To Range("I16").Value 'Nombre de répétitions
        dico(dateJ0 + (M * jours)) = ("J " & (jours) * M)
    Next M
End If
For Each e In dico.keys
    x = x + 1
    If x = 6 Then
        T = T + 2
        x = 1
    End If
    With Range("B19")
        .Offset(T, x) = dico(e)
        .Offset(T + 1, x) = e
        .Offset(T, x).Interior.ColorIndex = 48
    End With
Next e
End Sub

Mais je ne vois pas l'interet d'utiliser un dico, donc, une autre proposition, plus simple

VB:
Sub Test3()
dateJ0 = Range("C16").Value
jours = Range("E16").Value
For M = 0 To Range("I16").Value 'Nombre de répétitions
    If jours = Empty Then
        MsgBox "Remplir le nombre de jours"
        Exit Sub
    Else
        x = x + 1
        If x = 6 Then
            T = T + 2
            x = 1
        End If
        With Range("B19")
            .Offset(T, x) = "J " & (jours) * M
            .Offset(T + 1, x) = dateJ0 + (M * jours)
            .Offset(T, x).Interior.ColorIndex = 48
        End With
    End If
Next M
End Sub

Cordialement
 

Psycolab

XLDnaute Nouveau
Re : Remplir une plage dynamique à partir d'un dictionnaire

Bonsoir Efgé,

J'ai juste survolé ton site mais il a l'air sympas, car déjà il répond à une question que je me posais et ça devrais m'aider. Tu as raison également pour le fichier alors je mets en pièce jointe une feuille exel avec ma macro enregistrer dedans et un exemple du résultat souhaité, avis à ceux qui ont des idées.

Encore merci Efgé.

Amicalement,

Nico
pièce jointe : Regarde la pièce jointe test.xlsm
 

Pièces jointes

  • test.xlsm
    11.5 KB · Affichages: 48
  • test.xlsm
    11.5 KB · Affichages: 50

Psycolab

XLDnaute Nouveau
Re : Remplir une plage dynamique à partir d'un dictionnaire

Re,

Je viens de voir ton post et c'est exactement ce que je cherchais, je dois t'avouer que c'est assez déprimant d'avoir une réponse aussi rapide vu le nombre d'heure que je galère sur ce truc !
Je te remercie et je te souhaite une bonne fin de soirée,

amicalement,

Nico
 

Statistiques des forums

Discussions
312 493
Messages
2 088 955
Membres
103 989
dernier inscrit
jralonso