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
 

natorp

XLDnaute Accro
Bjr Athe rioveli et cathodique

remplace Celle par Cells sur la 4ème ligne en plus de la remarque de Cathodique et dis-nous quoi

Cordialement, Gérard
 

job75

XLDnaute Barbatruc
Bonjour ATHE RIOVELI, cathodique, natorp,

Pourquoi utiliser la variable I, elle n'est pas définie ?!

D'après ce que je crois comprendre (?) ceci fonctionne :
Code:
Private Sub Worksheet_Activate()
Dim J As Integer
For i = 13 To 124
Celle(J, 7) = IIf([G10] = "" Or Cells(J, 2) = "", "", [G10] + Cells(J, 5) - Application.Quotient(Cells(J, 5), 3))
Next
End Sub
A+
 

ATHE RIOVELI

XLDnaute Occasionnel
Bonsoir Job75, Bonsoir le forum.
Lorsque je met la macro dans la feuille concernée, il apparait ce message:
nom ambigu détecté détecte: Worksheet_Activate()
alors que cette macro, je pense qu'elle est effectivement ce que je recherche.
Pourquoi donc nom ambigu?
MERCI pour votre aide
A+
 

ATHE RIOVELI

XLDnaute Occasionnel
BONSOIR job75,
La variable est J, alors pourquoi donc for i=13 to 124?
n'est-ce pas cells(J,7) en lieu place de Celle(J,7)?
MERCI
A+
 

Staple1600

XLDnaute Barbatruc
Bonsoir à tous, job75

ATHE RIOVELI
Par hasard, il n'y aurait pas deux macros (ou plutôt deux procédures) nommées Sub Worksheet_Activate() dans le code de ta feuille ?

Si oui il doit y en avoir qu'une seule et unique.
 

ATHE RIOVELI

XLDnaute Occasionnel
Bonjour le forum, Bonjour staple 1600.
Effectivement il y a déja worksheet_active() dans dans la macro de la feuille.
je vais essayer d’insérer le code à l'intérieure.
 

ATHE RIOVELI

XLDnaute Occasionnel
Re bonjour le forum,
j'ai insérer cette partie de la macro de la macro
For I = 13 To 100
Cells(I, 7) = IIf([G10] = "" Or Cells(I, 2) = "", "", [G10] + Cells(I, 5) - Application.Quotient(Cells(I, 5), 3))
Next
le message que je reçoit est erreur d’incompatibilité.

Voici la macro qui initiale proposé par l'excellent job75:

Private Sub Worksheet_Activate()
Dim I%
[Date_debut] = [D2]: [Date_fin] = [F2] 'pour le calcul des heures d'absence
If Application.Sum([D13.F13].Resize(100)) Then
For I = 1 To 100
If Feuil1.Cells(I + 14, 2) <> Cells(I + 12, 2) Or [Date_debut].Offset(I + 3) <> Cells(I + 12, 3) Then _
If MsgBox("Attention la feuille source a été modifiée, faut-il vraiment mettre à jour le trimestre ?", 4) = 6 _
Then Exit For Else Exit Sub
Next
End If
[A13:B13].Resize(100) = Feuil1.[A15:B15].Resize(100).Value
[C13].Resize(100) = [Date_debut].Offset(4).Resize(100).Value
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
ATHE RIOVELY
Il n'existe pas d'évènement Active pour l'objet Worksheet.
Le nom d'évènement qui s'en rapproche le pluse c'est Activate
S'il s'agit d'une procédure interne que vous appelez vous même de quelque part d'autre, vous ne devriez pas l'appeler comme ça !
 

ATHE RIOVELI

XLDnaute Occasionnel
Bonjour le forum.
Je vous joint le classeur en question : mot de passe ADMIN.
il s(agit au niveau des feuilles 1er trim, 2ème Trim et 3ème trim de donner la note de conduite des élèves.
Lorsque dans la cellule G13 j'écrit ceci G13=G10+F13-QUOTIENT(D13;3),
pas de souci, on a lo note de conduite de l'élève.
Mon souci est que je souhaite pas tirer vers le bas pour incrémenter.
Je souhaite une macro pour gérer cette formule au niveau de trois trimestres.
Parceque avec les macros, les formules n'apparaissent pas dans la barre de formule.
MERCI
A+
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Pas très bien compris pourquoi vous ne voulez pas laisser simplement en G13, propagé sur 8 lignes :
Code:
=G$10+F13-QUOTIENT(D13;3)
 

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+
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas