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.
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
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 FunctionC'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 !
D'un autre côté si tu n'as pas réactivé le Calcul automatique, il est normal que rien ne bouge !
Cordialement.