XL 2013 problème au niveau de ma macro

ATHE RIOVELI

XLDnaute Occasionnel
Bonsoir le forum.
Je souhaite créer cette macro pour ma feuille excel, mais elle ne fonctionne pas.
je souhaite avoir des notes G13, G14, G15, ........ en fonction des valeurs des autres cellules.
Alors voici un peu cette macro que excel le me laisse même pas finir.

Private worksheet_Active ( )
Dim J as integer
For J= 13 to 124
if [G10]="" Then Celle (J,7)=""
if Cells(J,2)="" Then Cells(J,7)=""
elses
Cells (I,7)=[G10]+Cells(J,5)-(QUOTIENT(cells(I,5);3))
End if
End if

MERCI A VOUS
 

job75

XLDnaute Barbatruc
Bonjour ATHE RIOVELI, salut Jean-Marie et Bernard,

La bonne formule en G13 des feuilles trimestres, à tirer vers le bas :
Code:
=SI(B13="";"";G$10+F13-QUOTIENT(D13;3))
Maintenant si vous êtes allergique (???) aux formules complétez cette macro :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [D2,F2]) Is Nothing Then Worksheet_Activate
Application.EnableEvents = False
With [G13].Resize(100)
  .FormulaR1C1 = "=IF(RC2="""","""",R10C7+RC6-QUOTIENT(RC4,3))"
  .Value = .Value 'supprime les formules
End With
Application.EnableEvents = True
End Sub
A+
 

ATHE RIOVELI

XLDnaute Occasionnel
Bonjour job75, Bonjour le forum
Mon souci avec les formules est qu'un utilisateur par inattention peut les effacer et ne perturber le fichier.
Et puisque les noms sont décaler automatiquement vers le bas, alors je ne souhaite pas tirer vers le bas.
Je souhaiterai que cela se fasse automatiquement.
job75, je suis convaincu au fond de moi que vous avez toutes les solutions à mes préoccupations.
Seulement vous préférez me donner la canne à pêche que de me donner le poisson.
Je prie tous les marabouts d'Afrique pour visitez votre cœur afin de mettre fin définitivement à mon projet.
MERCI
A+
 

ATHE RIOVELI

XLDnaute Occasionnel
Re,
J'ai utilisé la formule =SI(B13="";"";G$10+F13-QUOTIENT(D13;3))
Mais je crois que c'est plutôt =SI(B13="";"";G$10+F13-QUOTIENT(E13;3))
Car je veut la partie entière du quotient E13 par 3. (Car E13 représente le nombre d'heures non justifié).
mais le problème, lorsque l'élève à zéro heurs d'absence, c'est à dire lorsque E13 est vide,
je veux G13 =G$10+F13
MERCI
A+
 

job75

XLDnaute Barbatruc
Re,

Classique : quand on veut protéger les formules on protège la feuille...

mais le problème, lorsque l'élève à zéro heurs d'absence, c'est à dire lorsque E13 est vide,
je veux G13 =G$10+F13
Pourquoi un problème ? Si E13 est vide (0) QUOTIENT renvoie 0, pas besoin de modifier la formule !!!

Il faudrait tester un peu au lieu de raconter n'importe quoi !!!

Et avec la colonne E à la place de D :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [D2,F2]) Is Nothing Then Worksheet_Activate
Application.EnableEvents = False
With [G13].Resize(100)
  .FormulaR1C1 = "=IF(RC2="""","""",R10C7+RC6-QUOTIENT(RC5,3))"
  .Value = .Value 'supprime les formules
End With
Application.EnableEvents = True
End Sub
A+
 

ATHE RIOVELI

XLDnaute Occasionnel
BONSOIR job75, bonsoir le forum.
Je viens mettre la macro de job75.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [D2,F2]) Is Nothing Then Worksheet_Activate
Application.EnableEvents = False
With [G13].Resize(100)
.FormulaR1C1 = "=IF(RC2="""","""",R10C7+RC6-QUOTIENT(RC5,3))"
.Value = .Value 'supprime les formules
End With
Application.EnableEvents = True
End Sub

elle fonctionne. Sauf que:
En G14 et G15 le resultat est VALEUR!!!!
Je crois que cela est due au fait que le nombre d'heures d'absence est 0.
il n'y a aucun problème pour les autres cellules.

MERCI A+
 

job75

XLDnaute Barbatruc
Bonjour ATHE RIOVELI,

Oui, c'est la colonne C qu'il faut tester au lieu de la colonne B.

Et dans la foulée traitons aussi la colonne E :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [D2,F2]) Is Nothing Then Worksheet_Activate
Application.EnableEvents = False
With [E13].Resize(100)
  .FormulaR1C1 = "=IF(RC3=0,"""",RC3-RC4)"
  .Value = .Value 'supprime les formules
End With
With [G13].Resize(100)
  .FormulaR1C1 = "=IF(RC3=0,"""",R10C7+RC6-QUOTIENT(RC5,3))"
  .Value = .Value 'supprime les formules
End With
Application.EnableEvents = True
End Sub
A+
 

ATHE RIOVELI

XLDnaute Occasionnel
BONSOIR job75, BONSOIR LE FORUM.
Cette fois avec la dernière macro de job75, les cellules G14 et G15 sont vides. elle devrait pourtant contenir la note 17 qui est la moyenne.
VOICI ICI joint le résultat.
j'ai peut être mal inséré la macro, essayer de voir.
MERCI
A+
 

Pièces jointes

  • RESULTAT DE LA MACRO.xlsm
    19.5 KB · Affichages: 46

job75

XLDnaute Barbatruc
Re,

Il faut finalement tester la colonne B pour les 2 formules.

Et il faut compliquer la 1ère formule :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [D2,F2]) Is Nothing Then Worksheet_Activate
Application.EnableEvents = False
With [E13].Resize(100)
  .FormulaR1C1 = "=IF(ISTEXT(RC2)*ISNUMBER(1/MAX(RC3-N(RC4),)),MAX(RC3-N(RC4),),"""")"
  .Value = .Value 'supprime les formules
End With
With [G13].Resize(100)
  .FormulaR1C1 = "=IF(ISTEXT(RC2),R10C7+RC6-QUOTIENT(RC5,3),"""")"
  .Value = .Value 'supprime les formules
End With
Application.EnableEvents = True
End Sub
Pour mieux comprendre, neutralisez la suppression des formules.

Bonne fin de soirée.
 

Discussions similaires

Réponses
17
Affichages
760

Statistiques des forums

Discussions
311 720
Messages
2 081 900
Membres
101 834
dernier inscrit
Jeremy06510