Question dictionnaire ?

Bonjour tout le monde,

Le code cidessous fonctionne parfaitement si les items sont des nombres et comme moi j'aurais aimé du texte il m'envoie bouler.

Est ce que quelqu'un saurait ce que je dois rajouter pour qu'il accepte du texte ?

Merci d'avance

PS : pour les clefs il me prend les 2 (texte et/ou numérique)

ublic Sub Dictio_USM()
'La bibliothèque Microsoft Scripting Runtime
' doit être coché dans Outils\Références...
Dim Data As New Dictionary
Dim tablo
Dim I&

Sheets("Feuil1").Select
    tablo = Range("A2:B" & Range("A65536").End(xlUp).Row)
For I = 1 To UBound(tablo)
    Data.Item(tablo(I, 1)) = Data.Item(tablo(I, 1)) + tablo(I, 2)
Next I
Rem retranscrire le dictionnaire dans une feuille vierge
Sheets("Feuil2").Select
    Range("A1", Cells(Data.Count, "A")) = Application.Transpose(Data.Keys)
    Range("B1", Cells(Data.Count, "B")) = Application.Transpose(Data.Items)

End Sub

Peux tu essayer en modifiant cette partie :

For I = 1 To UBound(tablo)
    Data.Item(tablo(I, 1)) = Data.Item(tablo(I, 1)) & tablo(I, 2)
Next I

Bonjour Figuedi, bonjour le forum,

Ton code est censé renvoyer quoi dans la colonne B ?...

pareil : Message d'erreur 13 incompatibilité de type

Bonjour,

cette ligne ne va pas chez moi:

Dim Data As New Dictionary

mais celle ci oui

Set Data = CreateObject("Scripting.Dictionary")

ps: le plus simple est TOUJOURS d'envoyer une copie anonymisée de quelques lignes

P.

merci ça marche comme ça !!!!

Public Sub Dictio_USM()
'La bibliothèque Microsoft Scripting Runtime
' doit être coché dans Outils\Références...
Dim Data As New Dictionary
Dim tablo
Dim I&

Sheets("Feuil1").Select
    tablo = Range("A2:B" & Range("A65536").End(xlUp).Row)
For I = 1 To UBound(tablo)
    Data.Item(tablo(I, 1)) = tablo(I, 2)
Next I
Rem retranscrire le dictionnaire dans une feuille vierge
Sheets("Feuil2").Select
     Range("A1", Cells(Data.Count, "A")) = Application.Transpose(Data.Keys)
     Range("B1", Cells(Data.Count, "B")) = Application.Transpose(Data.Items)

End Sub

Colonne A j'ai la réference de toutes les pièces détachées consommées l'année dernière (chiffre et lettre mélangées)

Colonne B j'ai la désignation de ces pièces ( du texte)

je vous fait un fichier car j'aimerai comprendre ce dictionnaire, je lis le site de boisgontier, mais déjà que je n'y entrave pas grand chose dans ce forum alors le sien je plane à 10 000 Km,

c'est bon Problème réglé

J'ai même pu mettre plusieurs colonnes dans mon dico et les séparer à la fin,

Merci à vous !!!!!!!!

Public Sub Dictio_USM()
'La bibliothèque Microsoft Scripting Runtime
' doit être coché dans Outils\Références...
Dim Data As New Dictionary
Dim tablo
Dim Mavariable
Dim i&, j&, dl&
Dim dateInf As Date, dateSup As Date
    On Error Resume Next
    dateInf = CDate("12/31/2015")
    dateSup = CDate("01/01/2017")
    With Sheets("Feuil1").Select
        tablo = Range("A1:AG" & Range("A65536").End(xlUp).Row)
        For i = 1 To UBound(tablo)
            If CDate(Cells(i, 5)) > dateInf And Cells(i, 6) < dateSup Then
                Data.Item(tablo(i, 3)) = tablo(i, 2) & "\" & tablo(i, 5) & "\" & tablo(i, 6) & "\" & tablo(i, 8) & "\" & tablo(i, 12)
            End If
        Next i
    End With
    With Sheets("Feuil2").Select
        Range("A1", Cells(Data.Count, "A")) = Application.Transpose(Data.Keys)
        Range("B1", Cells(Data.Count, "B")) = Application.Transpose(Data.Items)
        dl = Range("b" & Rows.Count).End(xlUp).Row
        For j = 1 To dl
            Mavariable = Split(Cells(j, 2).Value, "\")
            Cells(j, 2) = Mavariable(0)
            Cells(j, 3) = Mavariable(1)
            Cells(j, 4) = Mavariable(2)
            Cells(j, 5) = Mavariable(3)
            Cells(j, 6) = Mavariable(4)
        Next
    End With
 End Sub

Bonjour Figuedi.

Tu pourrais optimiser ton code sur cette partie :

            Mavariable = Split(Cells(j, 2).Value, "\")
            Cells(j, 2) = Mavariable(0)
            Cells(j, 3) = Mavariable(1)
            Cells(j, 4) = Mavariable(2)
            Cells(j, 5) = Mavariable(3)
            Cells(j, 6) = Mavariable(4)

En remplaçant par :

Cells(j, 2).Resize(,5).Value = Split(Cells(j, 2).Value, "\")

Merci super je me suis toujours demandé à quoi servait le resize, mais je n'ai jamais pris le temps de regarder (chercher par moi meme).

Merci beaucoup

Rechercher des sujets similaires à "question dictionnaire"