Tri sur cellules Excel avec VBA

Signaler
Messages postés
31
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
1 septembre 2002
-
Messages postés
36
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
4 avril 2003
-
THIERRYPP

Bonjour,

Comment procéder automatiquent à une élimination de cellule dans une colonne lorsque celle-ci à une valeur supérieure à 10% de la précédente et la remplacer par la moyenne de l'actuelle et la précédente?

Merci,

Bonne journée!

3 réponses

Messages postés
36
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
4 avril 2003

Salut,

en VB ça devrait donner quelque chose comme:

Sub Bouton_QuandClic()

Range("A1").Select
ActiveCell.End(xlDown).Select
'nb_lignes est le nombre de lignes de la colonne
nb_lignes = ActiveCell.Row

For i = 2 To nb_lignes
Range("A" & i).Select
'si la cellule de la ligne i est supérieur de 10% à la cellule de la ligne (i-1)
If Range("A" & i).Value > (Range("A" & i - 1).Value + 0.1 * Range("A" & i - 1).Value) Then
'la cellule prend la valeur de la moyenne de l'actuelle et la précédente
Range("A" & i).Value = (Range("A" & i).Value + Range("A" & i - 1)) / 2
End If
Next i

End Sub

Bye.
0
Messages postés
31
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
1 septembre 2002

Bonjour,

Merci, cela marche parfaitement!

avec une modification : commencer à une ligne plus bas ( testé)

et nb=ActiveCell.Row bloque????

Merci, il s'agit donc du lissage d'une courbe.

Je travaille en milieu médical, donc très lent à me former mais il y a beaucoup de choses pour améliorer les diagnostiques.

Pour la suite, j'ai réussi à utiliser le solveur d'excel pour paramétrer la courbe de température de recouvrement d'un organe après anesthésie. Manuellement je précise car de la à faire une macro pour traiter des fichiers en format *.dat vers excel et activer une macro par un simple click......

En tous cas, savchez qu'en m'aidant vous participez activement à un plus médical, que notre budget ne nous permet pas d'effectuer par sous-traitance externe.

Merci beaucoup et surtout pour les blésés en soins intensifs.

Thierry Philippe

THIERRYPP
0
Messages postés
36
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
4 avril 2003

Salut,

Dans la boucle For, l'indice i représente le numéro de ligne,
dans le code, il commence à la ligne n°2 (For i=2 to ...), donc pour faire commencer une ligne plus bas, il suffit de mettre For i=3 To nb_lignes.

ActiveCell.End(xldown).Select sélectionne la dernière cellule active,

ActiveCell.Row donne le numéro de ligne de la cellule active, de quelle façon ça bloque? (quel est le message qui apparaît??)

@+
Tout le plaisir est pour moi.
0