Besoin D'aide

Bonjour et bonne année à tous

Je débute sous excel et je suis face à un dilemme depuis bientot 2 jours, c'est pourquoi

je m'adresse aux experts de ce forum s'ils peuvent m'aider

D'avance merci.

Voici à quoi ressemble mon tableau

A Date B N° C

1 01/01/2015 1 34%

2 01/01/2015 2 25%

3 02/01/2015 3 12%

4 02/01/2015 4 45%

5 02/01/2015 5 37%

J'ai un autre Tableau qui s'appuie sur le précédent

A Date D

1 01/01/2015

2 02/01/2015

Pour chaque date j'aimerais obtenir en D le % C du premier tableau correspondant à la date fixe dont le numéro B est le plus grand

Ex en D1 j'aimerais obtenir 25% en D2 37%

Merci pour votre aide

Cordialement

Bonsoir Opalhills, bonsoir le forum,

Une proposition VBA avec le code commenté ci-dessous. Le second tableau est créé par la macro :

Sub Macro1()
Dim O1 As Object 'déclare la variable O1 (Onglet 1)
Dim O2 As Object 'déclare la variable O2 (Onglet 2)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim TT As Variant 'déclare la variable TT (Tableau Temporaire)
Dim J As Integer 'déclare la variable J (incrément)
Dim VM As Integer 'déclare la variable VM (Valeur Maximale)
Dim PVM As Variant 'déclare la variable PVM (Pourcentage de la Valeur Maximale)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set O1 = Sheets("Feuil1") 'définit l'onglet O1 (à adapter)
Set O2 = Sheets("Feuil2") 'définit l'onglet O2 (à adapter)
TC = O1.Range("A1").CurrentRegion 'définit le tableau de cellules TC (à adapter)
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 1 To UBound(TC, 1) 'boucle sur toutes les lignes du tableau TC
    D(TC(I, 1)) = "" 'alimente le dictionnaire D avec les valeurs en colonne 1 du tableau TC
Next I 'prochaine ligne de la boucle
TT = D.keys 'récupère dans le tableau temporaire TT les éléments du dictionnaire D sans doublon
'transpose la liste des éléments uniques dans la cellule A1 de l'onglet O2
O2.Range("A1").Resize(UBound(TT) + 1, 1) = Application.Transpose(TT)
For J = 0 To UBound(TT) 'boucle 1 : sur tous les éléments uniques du tableau TT
    For I = 1 To UBound(TC, 1) 'boucle 2 : sur toutes les lignes du tableau TC
        VM = 0 'initialise la valeur maximale VM
        'condition : si la valeur en colonne 1 du tableau TC est égale à l'élément unique du tagbleau TT
        If TC(I, 1) = TT(J) Then
            'compare la valeur en colonne 2 du tableau TC à la valeur maximale VM
            'si elle est supérieure, alors VM devient cette valeur et PVM devient la valeur en colonne 3 du tableau TC
            If TC(I, 2) > VM Then VM = TC(I, 2): PVM = TC(I, 3)
        End If 'fin de la condition
    Next I 'prochaine ligne de la boucle 2
    'définit la cellule de destination DEST (D1 si D1 est vide, sinon la première cellule vide de la colonne D de l'onglet O2)
    Set DEST = IIf(O2.Range("D1").Value = "", O2.Range("D1"), O2.Cells(Application.Rows.Count, 4).End(xlUp).Offset(1, 0))
    DEST.Value = PVM 'place dans DEST le poucentage de la valeur maximale PVM
    DEST.NumberFormat = "0%" 'formate la pourcentage
Next J 'prochain élément unique de la boucle 1
End Sub

bonjour

meilleur voeux

15ophallis.xlsm (8.79 Ko)

cordialement

Bonsoir Messieurs,

Je souhaitais vous remercier d'avoir pris de votre temps libre pour résoudre mon problème

de façon assez rapide et de 2 façon différentes de surcroit, en prenant le soin de détailler

au maximum les explications pour la Macro et en créant un fichier pour la reponse ne faisant

pas intervenir la Macro.

Cordialement

Rechercher des sujets similaires à "besoin aide"