Help pour petit programme

Y

YoDa

Guest
Bonjour,

Je suis amené dans l'intérêt de mon stage a créer un petit programme Visual Basic, mais je n'en ai jamais fais, forcement ça aide pas.
J'éspère que quelqu'un pourra m'aider car l'on m'a diriger ici pour la qualité technique et humaine de ce forum.

Voila mon problème: dans un tableau excel, j'ai dans une colonne des températures (H2-H152) et des viscosités associé dans la colonne à côté(I2-I152). Ces viscosité vont de 20 à 50. Je dois comparer ces viscosités à une valeur type qui est 30 et programmer un petit quelque chose pour que Excel donne (dans la case D9) la valeur limite de la température pour laquelle la viscosité ne dépasse pas 30. Je précise évidemment que le tout n'est pas fixe mais dynamique et rafraichi en permanence car excel est connecté à un serveur de données industriels, les viscosité change donc toute les minutes, donc cette température aussi.

J'avais pensé à un petit programme con transcrit en français de la manière suivant:

Si la case I2 à une viscosité <30
passe à la case I3
Si la case I3 à une viscosité <30
passe à la case I4
etc..

Si la case I52 (par exemple) à une viscosité >30, donne la température associé H52 dans la case D9

Je pense que c'est clair lol

Merci de votre, moi je buche aussi de mon côté, mais je pars de zéro, alors...

Bien cordialement
YoDa/Julien
 

Celeda

XLDnaute Barbatruc
Bonjour,


d'abord on veut des noms!!!!!! :)

qui sont les coupables!!


cela doit être un coup de Robert qui nous a dénoncés !! :woohoo:

en second, pour aider les macro................tistes de ce forum, monte ton propre fichier et zip le avec winzip, moins de 50 Ko, sans accents ni espaces


en final, il va falloir que tu plonges dans le domaine des macros si tu veux pouvoir t'en sortir car il faut que tu saches debugger, alors t'es sur que tu veux cela en macro ?


Celeda
 
Y

YoDa

Guest
Bah, je sais coder un petit peu de fortran et en C, mais je ne connais pas les commandes visual basic.
J'aimerais juste connaitre quelque trucs pour ce programme:

Comment pointer une cellule ou prendre une valeur d'une cellule?
comment incrémenter de façon à lui faire augmenter le numéro de la ligne?
comment à la fin faire un return d'une valeur dans une cellule?

L'architecture du programme, je peux je pense arriver à le coder.
 

titcoeur

XLDnaute Occasionnel
Bonjour,


Voici un début pour démarrer.
tu me diras si ça convient et ce qu'il faudrait améliorer.

1) tu nommes le range H2:I152 sous le nom 'table'

(insérer/nom/...)

2) macro

Code:
Sub visco_temp()
    tempmax = -1000
    For i = 1 To 152
        If Range('table').Cells(i, 2) > 30 And Range('table').Cells(i, 1) > tempmax Then
            tempmax = Range('table').Cells(i, 1)
        End If
    Next
    Range('d9').Value = tempmax
End Sub

Courage
 
Y

YoDa

Guest
Un grand merci à Titcoeur. Je suis parti de ton ptit programme, le temps de comprendre ce à quoi tout correspondais, j'ai pu adapté ton code à ce dont j'avais besoin et ça tourne niquel. Je suis resté coinçé pendant un quart d'heure sur un truc à la con, j'avais pas câlé que ton programme fonctionnerait à condition que les température soit en ordre croissant, alors que les mienne décroissait. En ayant rentré les bonnes colonnes et Cie, ça marche impect.
J'ai donc inversé la condition sur tempmax et placé une valeur initiale à 100. Dans le range, j'ai placé le tableau correct et inversé la condition sur les visco qui était fausse :)

grand merci :)

Yoda
 

titcoeur

XLDnaute Occasionnel
Contente d'avoir pu t'aider Yoda.

et :eek: pour la condition de travers.j'ai lu un peu trop vite.
mais c'était pour voir si t'avais compris :p .


Blague à part :

mais je ne pense pas que tu doive trier tes données. il faut juste initialiser correctement la t° de départ. (dans le cas corrigé, tempmin=1000 par exemple).


petit truc supplémentaire : si tu veux que ta macro tourne automatiquement dès que ton range 'table' subit une modif, tu peux placer cette macro dans le module 'feuille1' (si 'table' se trouve dans feuille1)

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Not Application.Intersect(Target, Range('table')) Is Nothing Then
        Call visco_temp
    End If
End Sub

Message édité par: titcoeur, à: 10/08/2005 15:47
 

Discussions similaires

  • Résolu(e)
XL pour MAC VBA Excel
Réponses
3
Affichages
270
Réponses
7
Affichages
592
Réponses
5
Affichages
568

Statistiques des forums

Discussions
312 584
Messages
2 089 982
Membres
104 325
dernier inscrit
Jujuleader