XL 2010 Dresser un tableau à partir d'un dictionnaire et d'un autre tableau

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Bpnsoir,

J'ai un dictionnaire, nommé "dico", qui recueille les éléments d'une liste.
J'ai un tableau, nommé tab1, qui contient certains éléments du dictionnaire.
Je veux créer un second tableau (tab2) qui contienne les éléments du dictionnaire dont on a soustrait ceux du premier tableau.
Supposons que le 1er tableau contienne 5 éléments. Comment m'y prendre ?
 
Bonjour Magic_Doctor,

Vous pourriez procéder comme suit,

dans "dico", générer un numéro de ligne pour les items absents (dicoligne) de tab1

Code:
=SI(ESTNUM(EQUIV(tab1A1;dicotexte;0));"";LIGNE())

puis dans tab2 récupérer les valeurs

Code:
=INDIRECT(dicotexte&PETITE.VALEUR(dicoligne;LIGNE());1)

vous aurez compris que
"dicotexte" correspond à la colonne de "dico" dans laquelle on retrouve les termes recherchés
"dicoligne" correspond à la ligne de "dico" dans laquelle on ne retrouve pas les termes recherchés dans tab1

😉
 
Bonjour @Magic_Doctor 😉,

Bien taquin tu es ce matin (du moins en France) 😵. Aucun fichier, nada, rien à se mettre sous la dent 🙁. Les répondeurs n'ont qu'à utiliser leur boule de cristal.

Pour rester dans des généralités oiseuses :
  • le dico possède des clefs,
  • je suppose que le tableau tb1 possède aussi une quelque part sur chaque ligne un terme correspondant à quelque chose qui ressemble à une clef
  • parcourir le tb1 et ôter les éléments du dico qui ont pour clefs celles du tb1 ne me semble pas insurmontable
 
Dernière édition:
Bonjour mapomme,

Il est vrai que n'utilisant que le VBA dans Excel, j'oublie de le mentionner.
Le fichier est trop volumineux, ou plutôt a trop de procédures, voilà pourquoi je ne l'ai pas uplodé.
J'avais tenté un truc du genre :
VB:
    For i = 1 To 5  '5 éléments dans le tableau "tab1"
        dico.Remove tab1(i)  '28 éléments dans le dictionnaire "dico" | on y retire les 5 items contenus dans le tableau "tab1()"
    Next
  
    ReDim tab2(1 To 23)  'il y aura fatalement dans le tableau dynamique "tab2()" 23 éléments, soit 28 - 5 éléments
  
    For i = 0 To 22  'Base 0 (22 = 23 - 1)
        tab2(i + 1) = dico.Keys(i)
    Next
Fracaso (lamentable échec).
 
Dernière édition:
Bonjour Magic_Doctor, njhub, mapomme,

J'y vais de ma solution :
VB:
Sub Calcul()
Dim liste, tab1, d As Object, e, tab2
liste = Array("A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10")
tab1 = Array("A2", "A4", "A6", "A8", "A10")
Set d = CreateObject("Scripting.Dictionary")
For Each e In liste
    d(e) = ""
Next
For Each e In tab1
    If d.exists(e) Then d.Remove e
Next
'---restitution (pour tester)---
Application.ScreenUpdating = False
Range("A2:C" & Rows.Count).ClearContents 'RAZ
[A2].Resize(UBound(liste) + 1) = Application.Transpose(liste)
[B2].Resize(UBound(tab1) + 1) = Application.Transpose(tab1)
If d.Count = 0 Then Exit Sub
tab2 = d.keys
[C2].Resize(UBound(tab2) + 1) = Application.Transpose(tab2)
End Sub
A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
696
Retour