Recherche dans plusieurs onglet

@Saboh,

Je reviens vers toi car j'ai regardé le code que tu proposes à Benetop, et je me heurte à une erreur également
Impossible de créer l'objet "System.Collections.ArrayList", j'obtiens l'erreur suivante :

image

J'en déduis que dans le projet il manque une références mais laquelle ?
De plus, comme tu le dis, son projet contient un trop grand nombre d'Objets, et en particulier les Objets inutiles (ceux que tu as encadrés), je n'arrive pas à les supprimer
Enfin, je pense comme toi qu'il doit y avoir une corruption dans son fichier

J'ai fais un fichier simple car je ne sais pas d'ou viennent tous ces onglets.

La colonne "I" ne pas a prendre en compte. Uniquement la colonne.

En PJ le fichier sans tous les onglets.

G.

J'en déduis que dans le projet il manque une références mais laquelle ?

C'est pas une reference à proprement parler, il faut que tu installes une librairie Windows :

Installez .NET Framework 3.5 sur Windows 11, 10, 8.1, 8 - .NET Framework | Microsoft Learn

Elle est installée la plupart du temps, notamment sur les ordis pro car beaucoup de programmes l'utilisent, mais pas toujours sur les ordis perso.

Ca te "débloqueras" de nouveaux objets de programmation, dont les ArrayList (qui sont des sortes de tableaux beaucoup plus pratiques), pour les détails techniques, je te renvoie ici.

Mais tout d'abord, installe le .NET Framework 3.5 (et peut-être redémarre le PC/la session).

J'ai installé la version 3.5 que j'avais déjà et le problème persiste.

Je désespère.

J'ai installé la version 3.5 que j'avais déjà et le problème persiste.

Je désespère.

Je vais voir un autre code.

Juste avant, pouvez-vous dans un nouveau classeur/feuille, ajouter cette macro et la lancer. Avez-vous une erreur ?

Sub test()
  Dim arr As Variant
  ReDim arr(0 To 9, 0 To 4)
  Dim i As Long, j As Long
  For i = LBound(arr, 1) To UBound(arr, 1)
    For j = LBound(arr, 2) To UBound(arr, 2)
    arr(i, j) = i * j
    Next j
  Next i

  Range("A1").Resize(UBound(arr, 1), UBound(arr, 2)).Value2 = arr
End Sub

J'ai des chiffres dans les colonnes A B C D et sur les lignes 1 à 9

Saboh, dernière intervention de ma part en ce qui concerne ce post

Après avoir suivi tes conseils pour pouvoir créer "System.Collections.Arraylist", j'ai essayé ton code et tout fonctionne correctement

A+

Re,

Ci-joint le code revu sans transposition ni ArrayList

8test-pta.xlsm (157.83 Ko)

Salut @BsAlv,

Effectivement en mettant le "numéro de ligne"/count comme clé on est bon…

Ce que je ne connaissais pas c'est ce Application.Index(Dict.items, 0, 0) … Ce serait pas plutôt worksheetfunction.index ? Qui est évalué comme une ArrayFormula pour tous les items du dictionnaire et te renvoie tout d'un coup… Stacké en vertical en plus… Franchement c'est pas mal du tout, je ne l'avais jamais vu. Super efficace et très concis.

J'essaierai de voir si ça s'applique de la même manière aux ArrayList/Collections, car à ce compte-là , le dictionnaire en réalité n'est utilisé que pour ses propriétés de liste/collection justement.

re

pour le sport ,,,une seconde version (plus digeste)

6benetop2.xlsx (28.66 Ko)

re,

???, je n'ai pas encore réfléchi là-dessus.

* La chose la plus importante, c'est que tous les items dans le dictionaire ont le même dimension, comme ici 1 array 1D avec 6 éléments.

* Puis, on lit tous ces items en 1 fois dans un array pour avoir un array 2D, mais si le dictionaire ne contient qu'un clé, le résultat de cette lecture est un array 1D. C'est pourquoi qu'on ajoute un dummy qui est un copie du premier clé et comme ça, en lisant les items du dictionaire, on a un array 2D, mais on copie seulement la première ligne vers le tableau.

Rechercher des sujets similaires à "recherche onglet"