Avis aux "aventuriers"

Bonjour,

Désolé encore une fois pour le titre...

Je me rattrape avec le fichier joint et la demande qui est incluse :

17test-fish.xlsx (11.03 Ko)

J'ai essayé de mon coté, mais je n'y arrive pas.

Ici sans le fichier c'est dur d'expliquer, c'est pour cela que tout est dans le fichier.

Il doit y avoir une formule matricielle avec de l'INDEX et du EQUIV, valeur max ou autre, mais je n'y arrive pas...

Serait-ce possible sans VBA ? Mais si VBA il faut alors pourquoi pas... Mais peut être y arriverais je dans ce cas...

Merci par avance.

@ bientôt

LouReeD

Bonjour LouReeD,

je ne comprend pas,

si tu as déjà 190 réserve pourquoi le niveau actuel est à 3, il devrait être à 9 ?

@+

Bonsoir,

le niveau est de 3, mais par soucis de "tactique" on attend que la réserve de cet indice augmente pour faire "un bond" en passant d'un coup au niveau max... Le truc c'est d'avoir une vision sur le niveau max que l'on peut atteindre et une vision de ce qui manque en réserve pour "attendre" encore un peu pour le niveau juste au dessus...

Après l'info comme quoi il n'y a plus de progression est utile également pour ne pas stocker de la réserve pour rien.

Pour dire la vérité, c'est pour une gestion de jeu "Clash of Fish" ou un truc comme cela, donc il y a des adversaires et eux ne voient pas les réserves ils ne voient que le niveau actuel atteint, donc c'est pour pouvoir gérer un effet de surprise.

Voilà en espérant avoir été plus clair.

@ bientôt

LouReeD

re,

j'ai réussi à le faire en ajoutant une ligne,

une autre possibilité serait d'utiliser une fonction perso

es tu d'accord de la faire par vba ?

bonsoir,

une solution via des fonctions personnalisées

Function niveaumax(indice, nv, reserve, tableau)
    ind = Application.Match(indice, tableau.Columns(1), 0)
    colnv = Application.Match("N" & nv, tableau.Rows(1), 0)
    For i = colnv + 1 To tableau.Columns.Count
        If tableau.Cells(ind, i) > 0 Then
            reserve = reserve - tableau.Cells(ind, i)
            If reserve < 0 Then niveaumax = tableau.Cells(1, i - 1): Exit Function
        Else
            niveaumax = tableau.Cells(1, i - 1): Exit Function
        End If
    Next i
    niveaumax = tableau.Cells(1, tableau.Columns.Count)
End Function
Function reservemaxplus1(indice, nv, reserve, tableau)
    ind = Application.Match(indice, tableau.Columns(1), 0)
    colnv = Application.Match("N" & nv, tableau.Rows(1), 0)
    For i = colnv + 1 To tableau.Columns.Count
        If tableau.Cells(ind, i) > 0 Then
            reserve = reserve - tableau.Cells(ind, i)
            If reserve < 0 Then reservemaxplus1 = -reserve: Exit Function
        Else
            reservemaxplus1 = "niveau max atteint":Exit Function
        End If
    Next i
    reservemaxplus1 = "niveau max atteint"
End Function
21test-fish.xlsm (17.67 Ko)

C'est un bon (très bon) début !

Cette nouvelle ligne ne peut-elle pas être créée dans la formule avec un matricielle ou autre ?

La traduction c'est : Equiv va chercher la valeur "190" égale ou immédiatement inférieur, dans la ligne 3 et retourne le numéro de colonne, du coup Address retourne celle se trouvant en ligne 1 même colonne.

Je vais travailler dessus.

@ bientôt

LouReeD

oups ! j'avais oublié de valider mon message, du coup il arrive un peu tard !

Bonsoir acide ! Pourquoi pas le VBA... Mais le fichier n'est "hélas" pas pour moi, alors au niveau maintenance, maintenant je n'ai pas encore regardé le code de près, car le fichier est lui même amené à évoluer...

Merci @ vous deux pour vos proposition, et i20100 vous pouvez toujours proposer votre code

@ bientôt

LouReeD

Bonjour

J'attends la validation du fichier...

Mais pas de soucis, j'ai donc choisi les fonctions personnelles en VBA.

Merci @vous deux pour les propositions.

Je clos le sujet.

@ bientôt

LouReeD

Rechercher des sujets similaires à "avis aventuriers"