valeur approchée dans un tableau

  • Initiateur de la discussion Initiateur de la discussion loic3869
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

loic3869

XLDnaute Occasionnel
Bonjour,

Je recherche dans une colonne la valeur exacte ou approchée de mon résultat si il n'y est pas présent. Et j'ai deux conditions : il faut que ce résultat soit égal à un nombre et inférieur au maximum.


Private Sub CommandButton3_Click()
Dim k As Long
Dim n1 As Integer
Dim plagerecherche As Range


Set plagerecherche = Range("O2:O10000")
n1 = Application.WorksheetFunction.Match(plagerecherche, Worksheets("Feuil1").Cells(31, 4), 0)
k = 0
For k = 1 To 10000

If (Worksheets("Feuil1").Cells(k, 14).Value = Worksheets("Feuil1").Cells(31, 4).Value) And (Worksheets("Feuil1").Cells(k, 14).Value) < Worksheets("Feuil1").Cells(24, 3).Value Then
Worksheets("Feuil1").Cells(31, 7).Value = Worksheets("Feuil1").Cells(k, 17).Value
Else
k = k + 1

End If

Next
End Sub
Cells(31, 4) est le résultat à avoir.
Cells(k, 14) est la case ou on est.
Cells(24, 3) est le maximum.
Cells(31, 7) est la cellule ou l'on veut qu'on affiche le résultat.

Ce programme ne fonctionne pas un message apparait "Impossible de lire la propriété Match de la classe WorksheetFunction".

Pourriez-vous m'aidez ?
Merci d'avance.
 
Re : valeur approchée dans un tableau

Bonjour Loic,

En fait tu as inversé 2 paramètres, il faut écrire:

Code:
n1 = Application.WorksheetFunction.Match(Cells(31, 4).Value, plagerecherche, 0)

Par ailleurs les "Worksheets("Feuil1")" ne sont pas utiles à partir du moment où tu travailles sur la feuille active.

Je ne comprends pas non plus l'utilité de la boucle sui fait le même travail que la fonction Match.

@+

Gael
 
Re : valeur approchée dans un tableau

Merci BOISGONTIER.Votre fonction marche très bien et m'a bien aidé mais le résultat ne s’affiche pas dans la case.

Voici un morceau de mon programme :

Set plagerecherche = Worksheets("Feuil1").Range("O2:O10000")

Rang = Application.Index([N2:N4003], Application.Match([D31], [N2:N4003], 1))

k = 0
For k = 1 To 10000

If (Worksheets("Feuil1").Cells(k, 14).Value = Rang) And (Worksheets("Feuil1").Cells(k, 14).Value) < Worksheets("Feuil1").Cells(24, 3).Value Then
Worksheets("Feuil1").Cells(k, 15).Value = Worksheets("Feuil1").Cells(31, 7).Value
Else
k = k + 1

End If

Next

D’ou viendrait l’erreur ?

Merci d’avance.

Loic
 
Re : valeur approchée dans un tableau

re,
l'erreur est la suivante
si par exemple ton k = 1 lors de ta premiere boucle, si le test n'est pas conclunant, tu dis k=k+1 soit k=2
ensuite tu dis next, et c'est excel qui incrémente la valeur de k pour refaire une autre boucle (pour k =3)
mais la boucle pour k=2 n'aura jamais été faite, donc des valeurs de cellules qui n'auront jamais été testées
 
Re : valeur approchée dans un tableau

Merci mutzik. L'erreur venait bien du k.
Maintenat j'ai l'adresse d'une case qui est contenue dans une autre case sous ce type de format "$N$3916" contenue dans C41.
J'ai testé cette ligne qui ne marche pas :
Rang = Application.Index([C41.Value:N4003], Application.Match([D30], [N2:N4003], 1))

D'ou peut venir l'erreur ?

Merci.
 
Notre forum d’entraide est 100 % gratuit et le restera.
Aucune formation payante, aucun fichier à acheter, rien à vendre. Mais comme tout site, nous devons couvrir nos frais pour continuer à vous accompagner.
Soutenez-nous en souscrivant à un compte membre : c’est rapide, vous choisissez simplement votre niveau de soutien et le tour est joué.

Je soutiens la communauté et j’accède à mon compte membre

Discussions similaires

Réponses
3
Affichages
436
Réponses
9
Affichages
830
Retour