XL 2013 problème au niveau de ma macro

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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+
 
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+
 
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+
 
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+
 
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+
 
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+
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
467
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
169
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
649
Réponses
10
Affichages
799
Retour