Aide VBA

Bonjour à tous,

Je cherche à réaliser un formulaire qui permet d'afficher les dernière dates de sorties des produits à partir de la feuille 1.

Pour les produits n'ayant pas de date le commentaire "Pas de date" sera affiché.

Le formulaire (userform) contient une liste déroulante qui permet de choisir le produit, cette liste sera alimenté par la colone A de la feuille2 qui peut changer.

Ci-joint un exemple avec l'userform.

Merci d'avance...

14classeur1.xlsm (13.43 Ko)

Bonjour Emma, bonjour le forum,

emma_38 a écrit :

Je cherche à réaliser un formulaire qui permet d'afficher

d'afficher où ?!...

emma_38 a écrit :

les dernières dates

On remonte jusqu'à quand ?!...

Bonjour ThauThème,

Pour l'affichage sa sera dans la textbox de mon Userform, que j'ai déjà réalisé.

Les dernières dates, seront cherché dans la feuil1. Par exemple pour le produit 5 on a 3 dates, la plus récente sera affiché.

Merci.

Re,

Alors c'est LA dernière date !...

Re,

Une porposition de code pour l'UserForm :

Private TC As Variant 'déclare la variable TC (Tableau de Cellules)
Private NL As Integer 'déclare la variable NL (Nombre de Lignes)

Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Dim O1 As Worksheet 'déclare la variable O1 (Onglet 1)
Dim O2 As Worksheet 'déclare la variable O2 (Onglet 2)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)

Set O1 = Sheets("Feuil1") 'définit l'onglet O1
Set O2 = Sheets("Feuil2") 'définit l'onglet O2
DL = O2.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet O2
TC = O1.Range("A1").CurrentRegion 'définit le tableau de cellules TC
NL = UBound(TC, 1) 'définit le nombre de ligne NL du tableau de cellule TC
Me.ComboBox1.List = O2.Range("A2:A" & DL).Value 'alimente dynamiquement la ComboBox1
End Sub

Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
Dim I As Integer 'déclare la variable I (Incrément)
Dim D As Date 'déclare la variable D (Date)
Dim DM As Date 'déclare la variable DM (Date Max)

For I = 2 To NL 'boucle sur toutes les ligne I du tableau de cellule TC (en partant de la seconde)
    'condition : si la valeur (convertie en texte) ligne I colonne 1 de TC est égale à la valeur de la ComboBox1
    If CStr(TC(I, 1)) = Me.ComboBox1.Value Then
        D = DateSerial(Year(TC(I, 2)), Month(TC(I, 2)), Day(TC(I, 2))) 'définit la date D de la valeur ligne I colonne 2 de TC
        If D > DM Then DM = D 'si D est supérieur à DM alors Dm devient D
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
Me.TextBox1.Value = IIf(D = 0, "Pas de date", DM) 'définit la valeur de la TetxBox1
End Sub

Re,

Merci bcp, ça marche bien, j'essaye d'adapter le code à mon fichier sauf que j'ai l'erreur: l'indice n'appartient pas à la sélection.

Je me demande si c'est par rapport des noms des feuils? mes infos se trouvent en feuil8, le code se bloque à ce niveau.

Merci encore

Re,

Non, c'est peut-être :

• par rapport aux nom des onglets que tu dois adapter car ils doivent être différents de ceux de l'exemple que tu as fourni...

• Le tableau des données (Produit + Date) ne commence pas en A1 ?

Les code étant commentés il est normalement aisé de les adapter sinon, je ne comprends pas pourquoi tu proposes un exemple qui ne correspond pas exactement à la structure de ton fichier original....

ArF !... Tu as modifié ton post entre temps...

Donc oui il te faut adapter le nom des onglets...

Rechercher des sujets similaires à "aide vba"