Méthode find dans un TCD

  • Initiateur de la discussion Initiateur de la discussion Galaktus
  • Date de début Date de début

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 !

Galaktus

XLDnaute Nouveau
Bonsoir le forum 🙂

Je viens à vous car je n'arrive pas à extraire des données d'un tcd, je m'explique :

Je travaille sur un fichier ou j'utilise un TCD pour la synthèse d'un tableau structuré, jusqu'à la pas de problème, dans ce TCD j'aurais donc la liste complète de référence diamant et plusieurs totale de valeur qui seront associés à chaque référence.

Dans un soucis de transparence j'ai crée un userform ou l'utilisateur pourra sélectionner une référence diamant et visualiser la valeur "nombre de diamantage" présente dans le TCD qui lui sera associé.

Je joint un fichier test pour que ca soit plus clair, pour info j'y ai enlevé pas mal de données mais le fichier définitif aura énormément d'onglet et de données à traiter c'est pour ca que je voulais utiliser la méthode de l'userform pour faciliter la vie de l'utilisateur.

Dans le fichier test l'userform se lance dans l'onglet "gestion", dans la combobox machine peut importe la selection les 2 fonctionnes, dans "suivi diamant" se trouve le tableau structuré d'ou j'extrais les données du TCD présent dans l'onglet "synthèse outillage".

Je poste aussi la ligne de code qui coince.

Private Sub Combobox_selection_reference_Change()

'# Donnée attribuée à la variable [ReferenceSelectionne]
ReferenceSelectionnee = Userform_usure_actuelle_diamant.Combobox_selection_reference.Value

'Exécution de la macro en cache
Application.ScreenUpdating = False

'Début de méthode {With} pour un ensemble de modifications sur l'objet "Userform_usure_actuelle_diamant"
With Userform_usure_actuelle_diamant

'C'est ici
.Label_usure_nombre_diamantage.Caption = Sheets("Synthèse outillage").ListObjects("TCD_diamant").ListColumns(1).DataBodyRange.Find(ReferenceSelectionnee, LookIn:=xlValues, lookat:=xlWhole, SearchOrder:=xlByRows).Offset(0, 4)

'Fin de méthode {With}
End With

'Annulation de l'exécution macro en cache
Application.ScreenUpdating = True

End Sub

D'avance je remercie tout celles ou ceux qui pourront m'aider.

En attendant de vous relire bonne soirée à vous.
 

Pièces jointes

Dernière édition:
Bonjour

Si tu peux enlever Module et N°de passage dans ton TCD afin qu'il corresponde aux champs de ton userform
utilise plutot PivotTable.GetPivotData que Find
Code:
Dim Resultat As Range

    Set Resultat = Worksheets("Synthèse outillage").Cells(4, 4). _
        PivotTable.GetPivotData("Nombre de diamantage ", "Référence diamant", ReferenceSelectionnee, "Fabriquant", NumeroKapp)
If Not Resultat Is Nothing Then....
 
Bonsoir Chris et merci de ta réponse.

Je ne peux pas vraiment modifier la structure du TCD, la personne en charge du suivi diamant devra avoir accés à toutes ses valeurs :/, que veut tu dire par "afin qu'il corresponde aux champs de ton userform"?

Je ne pourrais tester le code que demain.

Bonne nuit à toi
 
Re

Ton userform cherche sur la référence et le fabricant mais si tu as d'autres données dans le TCD, le chiffre correspond à un module et un N°.

Dans ton exemple tu n'as qu'un seul module et un seul N° par modèle diamant et machine mais si cela n'est pas le cas dans une base plus importante tu ne peux pas trouver la bonne ligne sans les deux autres infos...

Si tu tiens malgré tout au find pas très logique dans un TCD
Code:
    Dim Resultat As Range
 
    Set Resultat = Worksheets("Synthèse outillage").PivotTables("TCD_diamant").PivotFields("Référence diamant").DataRange.Find(What:=ReferenceSelectionnee, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
    If Not Resultat Is Nothing Then .Label_usure_nombre_diamantage.Caption = Resultat.Offset(0, 4).Value
 
Bonjour 🙂

Oui effectivement "Module", "N° de passage" et même "Fabriquant sont des valeurs qui vont changer.

La méthode .Find elle fonctionne à merveille du coup, j'avoue que je dois rendre se fichier assez rapidement et du coup je prend sans avoir le temps d'explorer plus en profondeur l'autre option.

Je te remercie en tout cas pour ton temps et d'avoir pris le temps de m'expliquer, super forum vraiment.

Bonne continuation et bonne journée à toi. 🙂
 
- 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
16
Affichages
745
Retour