Manque une condition (VBA) sur duo de chiffres

Bonjour et merci d'avance pour les personnes qui pourront m'aider.

Ayant des difficultés avec une feuille de calcul, j'ai demandé l'aide d'une personne qui a bien voulu m'aider.

Cette personne m'a établit un module (VBA) dont je n'y connais pas grand chose.

Le petit soucis est que sa formule ne fonctionne que dans un sens (je vais m'expliquer après). Cette personne ne peut rien faire pour moi car elle ne voit pas comment m'aider.(c'est déjà pas mal ce qu'elle a fait)

  • En colonne U, le résultat du calcul des 2 conditions S et T.
  • En cellule S3 et T3, 2 chiffres non équivalents. Je dois retrouver ces 2 chiffres dans une même ligne. Si c'est le cas, soustraire la valeur en colonne A (correspondante à la ligne trouvée) à la cellule A1.
Même si il y a le 2 chiffres recherchés ailleur dans le tableau, ne prendre que le plus recent.

Et ainsi de suite en S6 et T6....

LLE PROBLEME : Si je ne touche plus aux colonne S et T (donc que je laisse toujours les mêmes valeurs) mais que je ne change que les valeurs du tableau (C à O), par les données en feuil2. Le calcul ne se fait pas même en appuyant sur F9.

Merci d'avance

Fichier ci-joint

16franck-valeurr.xlsm (24.44 Ko)

Bonjour,

Sous réserve d'une xla manquante que tu as omis de signaler et d'indiquer en quoi elle intervenait sur ce classeur...

[ce qui m'a planté Excel...]

il faut commencer par activer l'option Calcul automatique... !

Cordialement.

Re,

Pour me réveiller, je t'ai reconstruit une autre fonction...

Function RDUO(n1 As Integer, n2 As Integer, Plg As Range, cor As Integer)
    Dim i%, j%, k%, ln%, n(1) As Integer
    Application.Volatile
    If n1 < n2 Then
        n(0) = n1: n(1) = n2
    Else
        n(0) = n2: n(1) = n1
    End If
    With Plg
        For i = 1 To .Rows.Count
            For j = 1 To .Columns.Count
                Select Case .Cells(i, j)
                    Case n(0)
                        For k = j + 1 To .Columns.Count
                            Select Case .Cells(i, k)
                                Case n(1)
                                    ln = i: Exit For
                                Case Is > n(1)
                                    Exit For
                            End Select
                        Next k
                    Case Is > n(0)
                        Exit For
                End Select
            Next j
            If ln > 0 Then Exit For
        Next i
    End With
    If ln > 0 Then
        RDUO = ln + cor
    Else
        RDUO = CVErr(xlErrNA)
    End If
End Function

C'est un peu plus propre, car les variables sont déclarées, le caractère volatil (se recalcule) est défini explicitement, et le code est indenté (ça c'est mieux pour le lecteur !).

En outre, si la recherche est infructueuse, elle renverra #N/A.

Egalement, outre les deux valeurs à tester, le tableau C3:... lui est passé en argument, ce qui rend la fonction non tributaire d'une position sur la feuille, ni d'un nombre prédéfini de lignes ou de colonnes ; le correctif en A1 lui est également passé en argument.

La colonne A est indifférente, elle ne fait que lister les lignes du tableau... On peut donc s'en passer.

Par ailleurs, elle n'utilise pas de fonction Excel pour calculer mais uniquement des instructions VBA (boucles sur le tableau).

Cordialement.

Merci !!!

Si je comprends bien, je remplace mes anciens code VBA par ceux que vous avez publié ?

Tu peux ! Les résultats seront les mêmes, et cela devrait te donner plus de souplesse...

Par exemple plus besoin de recopier un nouveau tableau sur l'ancien, tu places dans la formule la référence du nouveau tableau...

Un point à souligner toutefois, cette fonction présuppose que sur chaque ligne du tableau les valeurs sont classées en ordre croissant (ce qui était le cas sur tous tes tableaux), de façon à accélérer le calcul.

Si ce n'était pas le cas, elle ne fournirait pas toujours le bon résultat... Il faudrait alors que je revois le code pour en tenir compte.

Cordialement.

Désolé mais pour ma part, rien ne fonctionne... Si je change des valeurs au tableau, rien ne bouge

Mais merci quand même...

Ah ! Je constate que ta fonction initiale est récalcitrante lorsqu'on change des valeurs dans le tableau (sans doute l'absence de la commande autorisant le recalcul...) mais celle que j'ai fourni se met à jour à chaque changement !

D'un autre côté si tu n'as pas réactivé le Calcul automatique, il est normal que rien ne bouge !

Cordialement.

Rechercher des sujets similaires à "manque condition vba duo chiffres"