Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème pour diviser avec VBA

  • Initiateur de la discussion Machiavel
  • Date de début
M

Machiavel

Guest
Bonjour le forum,

Je dois donner un grade (A,B,C,D et E) pour chaque étudiant.

Pour cela, j'indique en A1 dans un ordre décroissant la cotes de chaque étudiants (jusque A...) ... correspond au nombre d'étudiant.

Je met à coté de chaque cote un chiffre qui est 1 pour le premier, 2 pour le second...

Ensuite je veux diviser B1 (1) par B48 (si il y'a 48 étudiants), ensuite B2 par B48, ensutie B3 par B48.... jusque B48 par B48 qui me donne 1.

J'ai voulu automatiser tout cela mais quand j'arrive à la division, ça se plante.

Il me dit 'Erreur de syntaxe'

Voici mon code avec son explication :

Sub Grade()

Dim nbreetudiant As Integer

'je sélectionne B1
Range('b1').Select
'va Jusque la première cellule vide
Do Until ActiveCell.Value = ''
ActiveCell.Offset(1, 0).Select
Loop
'je remonte de 1 pour avoir la dernière cellule non vide
ActiveCell.Offset(-1, 0).Select
'je donne la valeur de la cellule active à la variable nbreetudiant
nbreetudiant = ActiveCell.Value
'je séléction C1
Range('c1').Select
'ensuite j'essaie de diviser B1 par B48 mlais là ça se plante !
Range('b1').Value * nbreetudiant
End Sub

Quelqu'un à t'il une idée ?

Si vous avez des suggestions pour améliorer mon code n'hésiter pas.

Merci beaucoup.

Machiavel
 

Creepy

XLDnaute Accro
Hello,

Plusieurs choses :

1 - Deja tu as mis * = multiplication, diviser c'est /

2 - Il faut mettre :
Range('b1').Value = Range('b1').Value / nbreetudiant, en bon francais ca donne la valeur de la cellule B1 est egale à sa valeur divisée par la valeur contenue dans la variable 'nbreetudiant'

3 - Sans vouloir jouer les rabats joies, ton code me parrait super lourd !

Peux tu mettre un petit exemple en PJ, que je puisse te montrer un macro plus 'propre'.

Par exemple pour trouver ta première cellule NON vide tu peux faire :
range('a1').end(xldown).row.

voila

++

Creepy
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Machiavel, dg82, le forum,

Si je ne me suis pas planté ce code simplifié devrait convenir :

Sub Grade()
Dim nb As Integer
nb = Range('A65536').End(xlUp).Row
For Each cel In Range('A1:A' & nb)
cel.Offset(0, 2).Value = cel.Offset(0, 1) / nb
Next cel
End Sub
 

ChTi160

XLDnaute Barbatruc
Bonjour 'Machiavel
bonjour le Fil
Bonjour le Forum
j'avais fait un petit fichier qui corresponds a ce que vous avez dit
code un peu lourd pour peu de choses
division et non pas Multiplication etc
en esperant avoir compris la question je vois que Robert travaille sur la colonne A moi sur la B enfin il devrait y arriver lol
bon je le post quand même
Amicalement
Jean Marie [file name=OperationV1.zip size=7934]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/OperationV1.zip[/file]
 
Dernière édition:

Hervé

XLDnaute Barbatruc
Bonjour tout le monde

C'est bien ici, le concours du code le plus court

Public Sub vv()
Range('c1').Value = Range('b1').Value / Range('b65536').End(xlUp).Rows
End Sub

Passez un bon après midi

Salut
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…