Recherche valeur dans tableau excel

cassini

XLDnaute Nouveau
Bonjour voilà mon problème :

Côté classeur
j'ai dans une feuille un tableau de 4 colonnes classant des variateurs par ordre de puissance, une colonne donc pour la puissance, une colonne référence, prix et la dernière pour leurs intensités nominale de fonctionnement.
Dans une autre feuille nommée 'Devis' je voudrais voir apparaitre tous les prix et organes choisis par l'utilisateur dans le programme vba suivant, avec un total (mais ca j'y arriverai je crois !).

Côté Vba :

Mon programme est constitué de 10 feuilles d'USF, dans presque chacune d'entres elles l'utilisateur sélectionne ses options tarifées.



Pour revenir à mon problème :
Dans une feuille de l'USF l'utilisateur entre une intensité dans un textbox, c'est l'intensité du moteur associée au variateur.
Juste en rentrant cette intensité mon programme devrait choisir le variateur capable de supporter cette intensité et l'écrire dans la feuille "Devis'.
Comme le tableau de variateur est classé croissant il doit comparer en partant par le plus faible, si non il essaye le suivant etc...
J'ai essayé avec 15 boucles différentes et après des faux espoirs de réussite incalculables pour juste 3 lignes de code je me résous à chercher de l'aide avant de tout casser !
Voilà ma dernière boucle en date :


Private Sub inomin_Change()
'sélection du variateur en fonction de l'intensité nominale du moteur
Dim i As Integer
For i = 1 To 17
If inomin.Value < Worksheets("moteur").Cells(2 + i, 4) Then Exit For ' comparaison avec les valeurs d'intensité de variateur dans le tableau
Next i
Worksheets("devis").Range("D30") = Worksheets("moteur").Cells(2 + i, 3) 'référence
Worksheets("devis").Range("M30") = Worksheets("moteur").Cells(2 + i, 5) 'prix

End Sub


pourquoi elle ne fonctionne pas?? argh je la relis 15 fois mais je vois pas où elle bloque !


Merci d'avance !
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Recherche valeur dans tableau excel

Bonjour,
sans fichier, impossible de tester mais pourquoi
Private Sub inomin_Change()
?
Normalement, dans une sub événementielle, l'événement étant dépendant d'un classeur ou d'une feuille de calcul, la syntaxe serait plutôt (pour un événement change rattaché à une feuille de calcul) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
.
A+
 

cassini

XLDnaute Nouveau
Re : Recherche valeur dans tableau excel

Voilà j'ai mis en pièce jointe la partie correspondante au problème,
Inomin.change c'est le nom de la textbox de l'USF où on entre la valeur de l'intensité
 

Pièces jointes

  • devis.xls
    23.5 KB · Affichages: 110
  • devis.xls
    23.5 KB · Affichages: 117
  • devis.xls
    23.5 KB · Affichages: 129

david84

XLDnaute Barbatruc
Re : Recherche valeur dans tableau excel

Re
à tester :
Code:
Private Sub inomin_Change()
'sélection du variateur en fonction de l'intensité nominale du moteur
Dim i As Integer
For i = 1 To 17
If inomin.Value < CDbl(Worksheets("moteur").Cells(2 + i, 4).Value) Then Exit For
Next i
Worksheets("devis").Range("D12") = Worksheets("moteur").Cells(2 + i, 3)
Worksheets("devis").Range("E12") = Worksheets("moteur").Cells(2 + i, 5)
End Sub
Mais si jamais tu as une plage importante, plutôt qu'une boucle, mieux vaut passer par l'utilisation de application.WorksheetFunction.Match pour ramener le n° de ligne (plus rapide à mon avis).
A+
 
Dernière édition:

cassini

XLDnaute Nouveau
Re : Recherche valeur dans tableau excel

Merci beaucoup ! Je savais bien que ce n'étais pas grand chose, ça faisait une bonne semaine que j'essayais tout et rien, je voyais pas ce qui bloquait ! Je n'ai pas vraiment compris pourquoi le CDbl était nécessaire? Merci bien en tout cas !
 

Discussions similaires

Statistiques des forums

Discussions
312 685
Messages
2 090 938
Membres
104 703
dernier inscrit
romla937