Appel à un dictionnaire - erreur

Bonjour,

Je me permets de poser une petite question sur ce forum si utile :)

J'ai un problème avec un fichier : je souhaite remplir plusieurs tableaux (un d'échéances et un autre de charges, avec les onglets du même nom) qui font référence à un tableau de paramètres (onglet "Paramètres") rempli de noms, avec pour chaque personne un trigramme et un numéro de référence associé.

J'ai un formulaire qui permet de remplir des charges dans un des tableaux et je souhaite faire appel au dictionnaire que j'ai créé (et que l'on peut modifier via l'onglet "Paramètres"). Néanmoins, quand j'exécute la macro, je tombe sur l'erreur suivante :

"Type défini par l'utilisateur non défini"

Voici mon code :

Public DicoPEP As New Dictionary
Sub Dictionnaire()

'Construction du dictionnaire "Dico" avec les informations suivantes, pour chaque membre de l'équipe Nom, Trigramme, Numéro de référence

Toutes ces informations sont modifiables dans l'onglet "Paramètres".

Dim pep As Object

Set Dico= CreateObject("scripting.dictionary")


For Each pep In Range("Tab_Paramètres[Nom]")
Dico.Add pep.Value, Array(pep.Offset(0, 1).Value, pep.Offset(0, 2).Value, pep.Offset(0, 3).Value)
Next act

Dkeys= Dico.Keys 'Création d'une variable intermédiaire pour dictionnaire, ce qui permet de le gérer
DItems = Dico.Items 'Idem pour les items


End Sub

Je ne comprends pas où est le problème car j'ai tout bien défini ...

Quelqu'un aurait une idée s'il vous plaît ?

J'aimeris joindre un fichier, mais je n'y parviens pas ("service indisponible").

Merci beaucoup par avance!

Bonjour,

Essaie :

Sub Dictionnaire()
Dim LR As Range, TData As ListObject, iR&, Arr
Dim Dico As Object
Set TData = Range("Tdata").ListObject
Set Dico = CreateObject("scripting.dictionary")
Arr = TData.DataBodyRange.Value
      For iR = 1 To UBound(Arr)
         'en supposant que Range("Tab_Paramètres[Nom]") se trouve colonne A
         Dico.Add Arr(iR, 1), Array(Arr(iR, 2), Arr(iR, 3), Arr(iR, 4))
      Next
[J2] = Application.Transpose(Dico.keys) '=> Test
End Sub

Edit : Apparemment la fonctionnalité joindre un fichier semble à nouveau fonctionnelle...

A+

Bonjour,

Merci beaucoup pour votre réponse galopin01. C'est super utile, et ça m'aide bien. Lorsque j'exécute votre code, je tombe uniquement sur le première clef.

En fait, je souhiate utiliser le dictionnaire comme ceci : En balayant un tableau avec beaucoup de données dans l'onglet planning, je souhaite, pour chaque nom (donc clef), trouver, grâce au dictionnaire, le numéro de référence associé.

Pour cela, j'ai introduit 2 tableaux a et b mais je bloque :

Option Explicit

Sub Dictionnaire()
Dim LR As Range, TData As ListObject, iR&, Arr
Dim Dico As Object
Dim a As String, b As Integer
Set TData = Range("Tab_Paramètres").ListObject
Set Dico = CreateObject("scripting.dictionary")
Arr = TData.DataBodyRange.Value
      For iR = 1 To UBound(Arr)
         'en supposant que Range("Tab_Paramètres[Nom]") se trouve colonne A
         Dico.Add Arr(iR, 1), Array(Arr(iR, 2), Arr(iR, 3), Arr(iR, 4))
      Next
[J2] = Application.Transpose(Dico.keys) '=> Test qui donne juste la première clef

'Je veux faire l'inverse. Je balaye mon tableau annexe (exemple dans onglet planning), je tombe sur un nom, donc une clef (exemple: Nom2) et je souhaite le numéro de référence associé.

a=Ubound(i=0 To Dico.Count-1)->création de tableaux qui ne fonctionnent pas !
b=Ubound(i=0 To Dico.Count-1)

a = Dico.keys     ' dans un tableau a(0 To d.Count-1)
b = Dico.items    ' dans un tableau b(0 To d.Count-1)
  MsgBox a(2) & ":" & b(3) 'exemple pour Nom2, où je souhaite le numéro de référence

End Sub

J'ai une bête erreur de syntaxe sur la déclaration des tableau a et b (qui permettent de gérer les clefs et les items associés). J'ai beau chercher sur Internet, je ne trouve pas de bone déclaration. souvent, c'est déclaré avec des boucles for, mais moi j'aimerais une déclaration toute simple, puisque je déclare au début un tableau vide.

Je ne sais pas si je suis claire.

Dans un autre module, j'ai donc un code qui permet de lire le tableau dans l'onglet "planning" et qui recherche le trigramme dans le dictionnaire :

Sub lecture_tab_planning()
'Ici, on lit le tableau Planning et à chaque ligne, lorsque l'on lit les colonnes C et D (les trigrammes de noms), on cherche le numéro de référence associé grâce au dictionnaire.
Dim LO As ListObject
Dim derLig As Integer
Dim TriR As String, TriC As String

Set LO = Sheets("Planning").ListObject("Tab_Planning")

derLig = Cells(Rows.Count, 1).End(x1Up).Row
With LO
    For i = 1 To derLig
        .Range(i, 3).Value = TriR 'Trigramme du nom pour la colonne 3
        'On cherche ce trigramme dans le dictionnaire associé pour avoir le numéro de ref
        Call Dictionnaire
        a (TriR) 'On entre le trigramme dans le dictionnaire
        b (3) 'Je voudrais la 3ème valeur des items, cad le numéro de ref

        .Range(i, 4).Value = TriC 'Trigramme du nom pour la colonne 4 -> IDEM mais mon code précédent en fonctionne pas ..
    Next i

End Sub

Mais comme ça bloque au module précédent, ça bloque ici aussi...Auriez-vous une idée s'il vous plaît ?

Merci beaucoup par avance !

10test.xlsm (39.89 Ko)

Pff... Ça fait beaucoup de question !

T'em... (quiquine pas !) mets :

Dim a, b

Pour avoir tout le trousseau (de clef !) c'est :

[J2].Resize(Dico.Count) = Application.Transpose(Dico.keys)

Comme tu le dis toi-même : dans un tableau a(0 To d.Count-1), pour avoir le deuxième nom c'est a(1)

Comme tu le dis toi-même : dans un tableau b(0 To d.Count-1), pour avoir la troisième colonne (Age !) c'est 2 et :

MsgBox a(1) & ":" & b(2)(2) 

En résumé :

Sub Dictionnaire()
Dim LR As Range, TData As ListObject, iR&, Arr
Dim Dico As Object
Dim a, b
Set TData = Range("Tab_Paramètres").ListObject
Set Dico = CreateObject("scripting.dictionary")
Arr = TData.DataBodyRange.Value
      For iR = 1 To UBound(Arr)
         'en supposant que Range("Tab_Paramètres[Nom]") se trouve colonne A
         Dico.Add Arr(iR, 1), Array(Arr(iR, 2), Arr(iR, 3), Arr(iR, 4))
      Next
[J2].Resize(dDico.Count) = Application.Transpose(Dico.keys)
a = Dico.keys     ' dans un tableau a(0 To d.Count-1)
b = Dico.items    ' dans un tableau b(0 To d.Count-1)
  MsgBox a(1) & ":" & b(2)(2)  'exemple pour Nom2, où je souhaite l'age (colonne 3) pas le numéro de référence ???
End Sub

A+

Bonjour galopin01!

Merci beaucoup pour votre réponse, qui m'aide beaucoup. J'ai avancé le code (cf fichier ci-joint) , et je suis bloquée sur un truc improbable, où le message suivant "Propriété ou méthode non gérée par cet objet" apparaît. Cette ligne est surlignée :

Set LO_planning = Sheets("Planning").ListObject("Tab_Planning")

C'est sûrement un truc bête, mais je suis restée bloquée dessus très longtemps. J'ai bien vérifié les noms, et tout est correct...Auriez-vous une idée ?

Vous trouverez ci-joint le doc associé.

Je vous rem

10test.xlsm (45.84 Ko)

ercie par avance et vous souhaite une très bonne journée.

Bonjour,

Mettez :

Set LO_planning = Sheets("Planning").Range("Tab_Planning").ListObject
A+

Je vous remercie vivement pour votre réponse, qui m'a grandement aidée.

Mais j'ai encore du mal à débuguer le code. J'ai basculé le dictionnaire dans le même module, car j'ai du mal avec les variables publiques, et j'ai modifié 2-3 choses. Néanmoins, je me retrouve avec une autre erreur que je ne comprends pas. Lorsque j'exécute la macro, j'obtiens une MessageBox vide (qui est sensée être TriR , c'est à dire le trigramme), puis un message d'erreur : "Variable objet ou de bloc with non définie". J'ai l'impression que l'ordinateur ne lit pas le bon tableau (je l'ai pourtant défini en début de module, sur la bonne page..) car pour lui, la dernière ligne derLig vaut 5. Or, dans le tableau de l'onglet "Planning", il y a 3 lignes au total.

Je vous remercie par avance pour vos lumières.

Excellente journée,

5test.xlsm (44.05 Ko)

Ça à l'air un peu "fumeux ton truc... Vu que je ne vois aucun lien en la Sub dictionnaire et lecture_tab_planning

Je ne vois pas ce qui t'autorise à écrire ça :

Set Dico = CreateObject("scripting.dictionary")
a = Dico.keys
b = Dico.items

T'a pas l'impression d'avoir loupé une marche là :?

Vu que je vois pas ou tu veux en venir je ne peux pas trop t'aider :

Il y a une espèce de mayonnaise entre la feuille planning et la feuille Paramètres ainsi qu'entre les 2 macros...

En fait je ne voit pas bien à quoi servent ces 2 macros.

A défaut de définir clairement ta problématique je ne vois pas ce que je peux faire pour toi.

Essai de ne pas trop virtualiser ton trop truc : Evite les xxx Nom1, Nom2 et autres et autres TriX et fait dans le concret..

Encore une fois "Ce qui se conçoit bien s'énonce clairement et les mots pour le dire viennent aisément !"

Au lieu de chercher l'erreur dans des macros dont on se demande à quoi elles servent :

Explique nous quel est le problème initial et on verra si on peut le résoudre autrement que par des macros fumeuses.

Bonjour,

Je vous remercie pour votre réponse. Si je n'ai pas été claire, voici des explications.

Mon but est de remplir in fine le tableau final cumul des charges pour chaque personne concernée (onglet "Cumul_charges"), pour différentes activités. Néanmoins, ces charges sont comptées en fonction d'échéances (au mois). Donc, j'ai besoin en amont de remplir le tableau brut de l'onglet "Charges" grâce aux dates d'échéances "Planning".

Comme les charges sont personnalisées pour chaque personne, il faut, pour savoir quel tableau de l'onglet "Cumul_Charges" remplir, les informations dans cet ordre :

1-Numéro de référence de la personne (cf tableau dans l'onglet "Paramètres") -> Nous dit dans quel tableau on met la charge.

2-La date d'échéance, en premier : l'année -> nous dit quelle ligne (cf tableau dans l'onglet "Paramètres") est concernée

2bis - La date d'échéance , en deuxième le mois ->nous dit quelle colonne (cf tableau dans l'onglet "Paramètres") est concernée

3-Enfin, la charge en elle-même, où les données brutes sont dans le tableau "Charges".

J'ai indiqué un exemple dans le fichier ci-joint (écrit en rouge) , que je décris ici :

On veut insérer la charge de Martin Dupont pour l'activité 3, dont l'échéance est le 01/08/2020. Les données brutes sont déjà rentrées dans le document, et il faut juste remplir le tableau de cumul des charges (onglet "Cumul_Charges").

Donc dans le code :

0-On balaye le tableau de l'onglet "Planning" (dans le but de faire le cumul des charges pour chaque activité.), dans la colonne TrigrammeR, puis TriC (2 rôles différents, donc 2 personnes différentes, nommées personne1 et personne2, pour une même activité).

1-Dès qu'on tombe sur un nouveau trigramme, On se réfère au dictionnaire, donc dans le tableau de l'onglet "Paramètres" pour avoir le numéro de référence de Martin Dupont. C'est le numéro 1. Donc, on va remplir le tableau 1 (en haut à gauche) de la feuille "Cumul_Charges".

2-On regarde ensuite l'année de l'échéance de l'activité 3 (01/08/2020), dans l'onglet "Planning" : c'est l'année 2020 donc on va aller dans la ligne 7 du tableau final.

3-On regarde le mois de l'échéance de l'activité 3: qui est le mois d'août ; on va donc remplir le tableau en colonne 8. On a trouvé la case (à fond jaune dans le tableau final de l'onglet "Cumul_Charges").

4-On remplit à la fin la charge en question, qui se trouve dans l'onglet "Charges", dans la colonne "Charge activité 3 personne 1". Elle vaut 5. Donc on reporte cette charge dans la case à fond jaune.

5-Après, on passe à la case suivante dans le tableau "Planning", on tombe sur un autre trigramme, et ainsi de suite. Si une autre charge tombe en août 2020, on l'additionnera dans le tableau final.

J'espère avoir été claire dans mes explications. Je ne souhaitais pas vous embêter dès le début avec tout ce système compliqué. Je souhaitais juste savoir faire appel à un dictionnaire pour démarrer.

Je vous remercie,

Excellente journée,

10test.xlsm (43.13 Ko)

Malheureusement tu n'as pas échappé à l'écueil de m'en faire tout un roman !
Ce qui me conforte dans l'idée que même dans ton esprit c'est pas clair sinon tu le dirais plus simplement :
Pour l'instant ce que je vois c'est que tu moulines un tas de truc pour finalement terminer par une boucle For... Next qui n'en finit pas.

Et quand c'est fini tu as quel résultat ? Rien.

Quel est la problématique ? Faire la liste des N° de référence ?

Tu n'as pas besoin de dico pour ça, pas besoin de ListObject :

2 array suffisent T_Param.Value et T_Plan.Value
Avec ça tu peux tout savoir.

Le classeur joint résume la situation (Bon j'ai simplifié hein... parce que les les T_aRallonge !

A+

4arr-ananas.xlsm (39.52 Ko)

Merci beaucoup pour votre aide! Ca fonctionne bien :)

J'ai étoffé le code, en m'appuyant sur le votre. J'ai tout détaillé, étape par étape. C'est beaucoup plus clair maintenant.

Néanmoins, je tombe sur une erreur d'incompatibilité de type ; je ne comprends pas pourquoi. j'ai l'impression que l'ordinateur ne passe pas par les étapes 3 et 4 car les MsgBox associées ne s'affichent pas. On tombe directement sur l'erreur surlignée :

For n = 1 To UBound(CharR1) 'On parcourt le tableau Red1

Quand on passe la souris sur Ubound(Arr) dans la ligne suivante:

For j = 5 To UBound(Arr) Step 2

On se rend compte que c'est égal à 2. La date ne correspond pas non plus (elle vaut 00:00:00 ..). Auriez-vous une idée ?

Vous comprendrez mieux avec le fichier joint. Mille mercis en tout cas pour votre aide.

Excellente journée,

4arr-ananas.xlsm (39.41 Ko)

il n'y a pas de plage "Tchar" mais une plage "TChar"

il n'y a pas de plage "Red1" mais une plage "TRed1"

Ligne après "-3"

Ubound(Arr) = 2 donc juste après :

For j = 5 To UBound(Arr) Step 2 ça peut pas être bon...

J'ai corrigé jusqu'à "-4" mais après comme je ne sais toujours pas ni d’où tu pars, ni ou tu vas après je ne pourrai pas t'aider plus...

J'ai encore clarifié un peu tes déclarations et tes variables parce que ton truc c'est un peu comme dans la chambre de ma fille... hein !

4arr-ananas-v1.xlsm (42.53 Ko)

A+

Bonjour galopin01,

Mille mercis pour votre réponse. En effet, je maîtrise mal votre écriture concernant les tableaux. Pour vous répondre, voici le processus détaillé par étapes (pour bien voir d'où je pars et où je vais):

*Principe: En balayant le tableau planning, on fait appel à plusieurs tableaux (T_Param, T_char) dans le but de remplir le tableau de cumul des charges. Le but est de connaître les charges de chaque personne, chaque mois, selon chaque activité.

1-Etape1 : On balaye le tableau planning par colonnes pour noter le trigramme de la personne1 (puis au second tour de boucle, le second, etc..) .

2-Etape 2: On fait appel au tableau T_Param pour connaître le numéro de référence de cette personne.

3-Etape3: On continue à balayer le tableau planning (cette fois ci par colonnes, sur la même ligne que le trigramme) et on note la première échéance (puis au second tour, la seconde échéance, etc..)

4-Etape4: On fait appel, pour chaque échéance, au tableau des charges, où sont rentrées les charges associées à chaque échéance. On vérifie au préalable qu'on a bien le bon nom de dossier (la bonne ligne).

5-Etape 4bis : On note du coup cette fois la charge associée en question dans le tableau des charges.

6-Etape5 : On note cette charge dans le tableau de cumul des charges, selon l'emplacement donné par les informations précédente : le numéro de référence indique le numéro de tableau, l'année donne la ligne, le mois donne la colonne.

J'ai modifié le code selon vos conseils ; c'est-à-dire que j'ai enlevé :

For j = 5 To UBound(Arr) Step 2 

En remplaçant par :

For j = 5 To UBound(Arr) 
         code ...
         j=j+1
Next j

Comme ça on a le pas de 2, sans avoir "Step".

C'est une bonne idée d'avoir renommé les plages en "Arr".

Concernant, le fait qu'il manque un flag (j'ai lu ça dans vos commentaires) ; je me suis renseignée (je ne connais pas du tout ce concept), et il me semble que ça peut être utile pour éviter les boucles infinies. C'est certainement une très bonne idée. Néanmoins je ne maîtrise pas du tout et j'ai tanté une boucle qui est vraiment inutile (je me suis aidée de plusieurs forums, mais je pense qu'il y a un problème !). Ce serait vraiment utile, car lorsque je teste le code, au début ça démarre bien (j'ai placé des MsgBox à chaque étape, c'est bien détaillé), mais au bout de l'étape 4, la boucle revient au début alors que ce n'est pas du tout ce qu'il faut faire dans l'instruction suivante !

C'est ici que ça plante :

'4 - On cherche ensuite la charge ArrC associée dans ArrC
            For m = 1 To UBound(ArrC)
                    If ArrC(m, 2) = Doss Then 'Si on trouve le même nom de dossier, on reste sur cette ligne
                        MsgBox ("Etape4: On vérifie qu'on aie bien le bon nom de dossier associé dans le tableau des charges :" & Doss)

                        'If flag = True Then ************************-> En fait cette boucle ne sert à rien ...
                            For q = 5 To UBound(ArrC) ***************BLOCAGE ICI*****************
                                Char = ArrC(m, q) 'On regarde le même numéro de colonne que celle du tableau Planning
                                MsgBox ("Etape 4bis : On regarde la charge associée ArrC :" & Char)
                                q = q + 1 'On saute une colonne sur 2

                                '5-Ensuite, on place cette ArrC dans le tableau de l'onglet "Cumul", selon le numéro de référence
                                PlacerCharge
                            Next q
                        'Else: flag = False
                        'End If
                    End If

L'ordinateur revient directement à l'étape 1 au lieu d'aller à l'étape 4bis...auriez-vous une idée s'il vous plaît ?

NB: J'ai placé la dernière étape dans un module séparé, afin d'éviter de surcharger les boucles imbriquées. De toute manière l'ordinateur n'arrive même pas à cette étape ....

Merci pour vos lumières. Excellente journée :)

Le service est de nouveau "non disponible" pour joindre des fichiers. J'essaye dans un prochain post...

4arr-ananas-v2.xlsm (40.19 Ko)

Je n'ai pas encore regardé ton dernier fichier. Je ferai cela après.

Pour le flag je ne suis pas certain. Comme je n'ai toujours pas compris la finalité tu peux mettre ce point en suspens.

par contre pour le "3-" Je t'avais fait une correction que tu n'as pas suivi.

Je pense être certain de ma correction à ce niveau :

         For j = 5 To UBound(Arr, 2) Step 2 'les échéances démarrent à la colonne 5, et pour R c'est une colonne sur 2
            EchR = Arr(i, j)  'on reste à la ligne i, qui correspond au trigramme ; colonne j
            MsgBox ("EchR : " & EchR) 'Pour essai
            Année = Right(EchR, 4) 'Année dont on va se servir dans le tableau des ArrCs
            Mois = Mid(EchR, 4, 2) 'Mois dont on va se servir dans le tableau des ArrCs

C'est bien meilleur que ton bricolage car le (Arr,2) travaille effectivement sur les colonne et le Step 2 va bien jusqu'à 13...

Bon pour le "-4' Je vais tester le Doliprane mais je ne te garanti rien !

A+

Merci beaucoup pour votre réponse, mais je ne vois pas le changement avec ce que j'avais proposé en premier lieu! Vous m'aviez d'ailleurs répondu à cela :

Ligne après "-3"

Ubound(Arr) = 2 donc juste après :

For j = 5 To UBound(Arr) Step 2 ça peut pas être bon...

d'où mon changement.

Je viens de modifier. Vous pouvez prendre en compte désormais le fichier ci-joint. Il ne fonctionne que jusqu'à l'étape 4 (avec une boucle qui se répète ...)

8arr-ananas-v2.xlsm (40.32 Ko)

Merci à vous

Très bonne journée

La différence c'est que UBound(Arr, 2) = 13 là on teste la deuxième dimension de ton Arr.

Je ne suis pas disponible en ce moment.

Bon ben... je pense que je vais laisser tomber.

Difficile de jouer à VBA les yeux bandés !

Si quelqu'un à compris je lui passe volontiers la main !

Désolé.

A+

Bonjour Galopin01!

Merci beaucoup pour votre indication "on teste la deuxième dimension de ton Arr.", ça m'a bien aidé :) J'ai beaucoup avancé (grâce à vous, mille mercis !) et j'ai presque résolu mon problème. Je suis navrée que vous ne compreniez toujours pas le but de ce fichier .. il me semblait pourtant avoir expliqué de manière assez détaillée. En fait, le dernier problème est à mon avis pas grand chose. Je l'ai réduit à un autre fichier excel, où juste ma dernière fonction apparaît.. Si vous êtes d'accord pour regarder, ce serait super chouette. Sinon, ce n'est pas grave, je comprendrais tout à fait.

Le fonction finale consiste à remplir le tableau avec des informations qu'on lui fournit.On regarde d'abord les lignes, puis les colonnes. Et je suis bloquée au moment de chercher la colonne. L'ordinateur de la trouve pas, je ne comprends pas pourquoi. Voici le morceau de code qui pose problème :

For n = 1 To UBound(ArrR1, 1) 'On parcourt le tableau Red1 par ligne, donc la première dimension
            MsgBox ("On regarde les lignes et n = " & n)
                If ArrR1(n, 1) = Année Then 'On a trouvé l'année dans les lignes
                MsgBox ("On a trouvé l'année !")

                    For p = 1 To UBound(ArrR1, 2) 'On parcourt ensuite les colonnes, donc la seconde dimension
                    MsgBox ("On regarde les colonnes et p= " & p)
                        If ArrR1(1, p) = Mois Then 'On a trouvé le mois, donc la colonne -> **************************************LE PROBLEME EST ICI
                        MsgBox ("On a trouvé le mois !")
                            ArrR1(n, p).Value = ArrR1(n, p).Value + Char 'On cumule la ArrC à la précédente
                            MsgBox ("Etape 5: on additionne la charge dans le tableau cumul des charges, numéro " & RefR & " en ligne " & n & "et colonne" & p) 
                        End If
                    Next p
                End If
            Next n

Je vous remercie vivement par avance pour vos lumières.

Excellente journée, et encore bravo et merci :)

6essai.xlsm (20.00 Ko)

Enfin une question bien posée ! Tu as pas eu besoin de blabla :

C'est la Sub Moduleprincipal() qui pose le problème. Parfait.

Ça c'est pas possible !

If ArrR1(1, p) = Mois 'ArrR1 ne couvre pas la ligne 3 mais uniquement les lignes 4 à 12

Tu devrais savoir que la colonne que tu cherches est p = mois +1 pas besoin de parcourir tout le tableau pour comprendre que janvier est la colonne 2 de ton Arr...

Donc :

ValeurCherchée =ArrR1(n, Mois+1)

Sub placerInfo(RefR As Integer, Année As Integer, Mois As Integer, Char As Integer)
'Procédure qui sert à ranger une information dans le tableau.
    Dim ArrR1
    Dim n%, p%
    ArrR1 = [TRed1].Value
    For n = 1 To UBound(ArrR1, 1) 'On parcourt le tableau Red1 par ligne, donc la première dimension
                If ArrR1(n, 1) = Année Then 'On a trouvé l'année dans les lignes
                MsgBox ArrR1(n, Mois + 1) + Char
                End If
    Next n
End Sub

Les boucles coûtent cher en terme de temps d'exécution donc à chque fois que tu peux en éviter une...

C'est compris ?

A+

Rechercher des sujets similaires à "appel dictionnaire erreur"