Incorporer recherchev après selecetion mois dans userform

Bonjour, bonsoir à tous,

Je suis actuellement en train de créer un logiciel de gestion "intelligent", qui pour l'instant est très loin de l'être .

Pour qu'il le devienne un peut plus, je sollicite votre aide afin de :

  • Pouvoir intégrer le code mis dans le "Module 1" résultant d'un enregistrement, dans la partie de l'userform qu'il convient (vous pouvez modifier ce code)
  • Faire cette Recherchev après la sélection dans l'userform du mois voulu et l'étendre dans la colonne z

Je pense avoir donner toute les infos mais si besoins n'hésitez pas à me demander

le fichier :

Bonjour et bienvenue sur le forum

S-excelement_parlant a écrit :

- Pouvoir intégrer le code mis dans le "Module 1"

Ce module se réduit à une seule instruction :

ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[-22],'Moyenne Mens'!R2C2:R129C50,5,FALSE)"

Mais tu ne dis pas quelle cellule doit être active pour que tu obtiennes le résultat.

Et tu ne dis même pas ce que tu veux rechercher...

Alors, comment t'aider ?

Bye !

Bonjour,

pardonne moi pour le manque de précision j'ai poster sa rapidement hier sans prendre le temps de me relire ...

Donc plus clairement :

je souhaite en fait effectuer une RECHERCHEV des libellés article de la feuille "donnée" vers la feuille "moyenne mens" et obtenir le résultat du mois de Janvier dans la colonne Z de la feuille "donnée" face a sa désignation.

Après je souhaite automatiser cette action pour les 12 mois de la feuille "moyenne mens" avec l'userform déjà créé en sélectionnant le mois concerné de la liste déroulante.

Suis-je assez clair ?

Merci de votre aide

Bonjour,

pardonne moi pour le manque de précision j'ai poster sa rapidement hier sans prendre le temps de me relire ...

Donc plus clairement :

je souhaite en fait effectuer une RECHERCHEV des libellés article de la feuille "donnée" vers la feuille "moyenne mens" et obtenir le résultat du mois de Janvier dans la colonne Z de la feuille "donnée" face a sa désignation.

Après je souhaite automatiser cette action pour les 12 mois de la feuille "moyenne mens" avec l'userform déjà créé en sélectionnant le mois concerné de la liste déroulante.

Suis-je assez clair ?

Merci de votre aide

up

Un essai à tester. Te convient-il ?

Bye !

C'est exactement ce qu'il me fallait !! merci infiniment

Juste afin de comprendre le fonctionnement, serait il possible d'avoir une explication du code ? Si tu ne peut pas j'essaierai de décrypter seul

Dernière chose, est ce que je peut le rendre "plus rapide" en désactivant le screenupdate

Edit : je souhaiterai aussi ranger les valeurs obtenu avec "Valider" de la plus grande a la plus petite, ou dois-je placer le code ?

Sub Macro1()
'
' Macro1 Macro
'

'
    ActiveWorkbook.Worksheets("Données").ListObjects("Tableau1").Sort.SortFields. _
        Clear
    ActiveWorkbook.Worksheets("Données").ListObjects("Tableau1").Sort.SortFields. _
        Add Key:=Range("Tableau1[[#Headers],[#Data],[Moyenne de Décembre]]"), SortOn _
        :=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Données").ListObjects("Tableau1").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

je sent qu'il y a du faux car je vois "Moyenne de décembre" dedans du coup je sais pas comment le placer et le simplifier

Merci encore a toi !!

S-excelement_parlant a écrit :

serait il possible d'avoir une explication du code ?

Le même fichier avec la macro commentée :

est ce que je peut le rendre "plus rapide" en désactivant le screenupdate

Tu peux.

Mais tu ne gagneras pas grand chose. Pour accélérer la macro il faut passer par les variables tableaux :

je souhaiterai aussi ranger les valeurs obtenu avec "Valider" de la plus grande a la plus petite, ou dois-je placer le code ?

Ton code est bien long et ressemble à un enregistrement.

Il se simplifie beaucoup : voir la v3 ci-jointe

OK ?

Bye !

Rien a dire si ce n'est que merci infiniment pour ton aide ! c'est exactement ce dont j'avais besoin et tu me sort de la galère !

Merci encore !!!

En fait j'ai quelque chose a dire

J'ai un petit soucis, j'ai éplucher tout le code mais ne trouve pas de quoi cela viens, J'ai continuer d'avancer sur mon projet mais le soucis c'est que quand je selectionne un nouveau mois, il me vire tout mes en-tête ... et donc fiche un sacré bazar

Etant novice et en voyant ce code complexe, je me dit que seul un Dieu VBA peut m'aider et je crois que ce Dieux et bien c'est toi

Merci d'avance pour ton aide et même à ceux qui voudrait participer à la résoudre

Je suis loin d'être un dieu, bien au contraire. Je suis un grand pécheur devant l'Eternel !...

Mais je n'ai pas ce problème sur mon PC

Alors, soit tu as fait une manip qu'il ne fallait pas, soit je ne comprends pas ce qui peut bien se passer sur ton PC.

Désolé !

Bye !

J'ai dû insérer des cellules afin de compléter mon tableau, j'ai remplacer tout ce qui était renseigner en colonne "Z" par "AC" mais y aurait il des références à "Z" cachée ou que je n’aurai pas vu ?

J'ai aussi renomé la feuille "Données" par "Gestion"

désolé de t'embéter avec cela, je débute dans le VBA et c'est pas simple de s'auto-corriger avec du langage de ce niveau

Option Explicit

Dim dd, mois, fd, fmm, tabloD, cell, i, tabloMM, tabloV, tabloR(), ln
Private Sub ComboBox_mois_Change()

    'On désactive la mise à jour de l'écran
    UserForm_Selection.Hide

    'On initialise la zone de résultats
    fd.Range("AC3:AC" & fd.Range("AC" & Rows.Count).End(xlUp).Row).ClearContents

    'On désactive la mise à jour de l'écran
    'Application.ScreenUpdating = False

    'On met les données de la colonne B de la feuille "Gestion" dans une variable tableau
    tabloD = fd.Range("D3:D" & fd.Range("D" & Rows.Count).End(xlUp).Row)

    'On met les données de la colonne B de la feuille "Gestion" dans une variable tableau
    tabloMM = fmm.Range("B2:B" & fmm.Range("B" & Rows.Count).End(xlUp).Row)

    ReDim tabloR(UBound(tabloD, 1), 1)

    'On met les valeur du mois dans une variable tableau
    tabloV = fmm.Range(fmm.Cells(2, ComboBox_mois.ListIndex * 4 + 6), _
                fmm.Cells(Cells(Rows.Count, 1).End(xlUp).Row, ComboBox_mois.ListIndex * 4 + 6))

    'On va passer toutes les cellules de tabloD et voir si  le même libellé existe
    'dans le tabloMM
    For i = 1 To UBound(tabloD, 1)
        For ln = 1 To UBound(tabloMM, 1)
            If tabloD(i, 1) = tabloMM(ln, 1) Then
                tabloR(i - 1, 0) = tabloV(ln, 1)
            End If
        Next ln
    Next i  'On retourne au début de la boucle pour prendre une nouvelle cellule

    'On écrit le tabloR à partir de AC3 sur la feuille "Données"
    fd.Range("AC3").Resize(UBound(tabloD, 1), 1) = tabloR

    'On met en titre de la colonne AC le nom du mois qu'on a choisi
    fd.Range("AC2") = "Moyenne de " & ComboBox_mois

    'On classe les moyennes par ordre décroissant
    fd.Range("AC3:AC" & fd.Range("D" & Rows.Count).End(xlUp).Row).Sort key1:=fd.Range("AC3"), order1:=xlDescending

End Sub

Private Sub CommandButton_annuler_Click()
    Unload Me
End Sub

Private Sub CommandButton_valider_Click()

    If ComboBox_mois.ListIndex = -1 Then

        dd = MsgBox("Merci de renseigner le mois désiré")

    Else 'Si OK

    Unload Me

    End If

End Sub

Private Sub UserForm_Initialize()

    Set fd = Sheets("Gestion")
    Set fmm = Sheets("Moyenne Mens")

    mois = Array("Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")

    For i = 0 To UBound(mois)
        ComboBox_mois.AddItem mois(i)
    Next

End Sub

https://www.cjoint.com/c/FEqrsYsqJy4

Merci encore !

Bonjour

J’ai noté plusieurs modifications dans ton nouveau fichier :

• Dans l’instruction finale du classement, tu as modifié la plage du tableau à trier :

fd.Range("AC3:AC" & fd.Range("D" & Rows.Count).End(xlUp).Row).Sort key1:=fd.Range("AC3"), order1:=xlDescending

alors qu’il faut :

fd.Range("A3:AC" & fd.Range("D" & Rows.Count).End(xlUp).Row).Sort key1:=fd.Range("AC3"), order1:=xlDescending

• Il y a des lignes masquées, ce qui contrarie la macro : c’est là le plus facile à corriger en disant la macro de commencer par les démasquer. Mais elle ne pourra pas les remasquer en fin de travail.

• Il y a des formules dans des colonnes qui initialement étaient masquées (colonnes S, T, AE) : ça, c’est gênant car en faisant le classement final, la macro perd les liaisons avec les cellules impliquées si elles ne sont pas sur la même ligne que ces formules.

Donc, tu as le choix : soit tu renonces au classement final, soit tu demandes à la macro de commencer par remplacer les formules par la valeur des cellules, mais dans ce cas, les formules seront définitivement perdues.

Que choisis-tu ?

Bye !

Merci de ta réponse, je vais essayer de me décider avec différentes formules et codes ... Mais encore une fois, merci à toi !

Rechercher des sujets similaires à "incorporer recherchev selecetion mois userform"