Comparer des valeurs et renvoyer une fleche...

chrisclaret

XLDnaute Occasionnel
Bonjour,

J'ai realise un bulletin d'evaluation par competence pour le college.
Je bloque sur la fin...
En effet , je souhaiterais comparer les points de couleurs de T1 et T2 et suivant l'evolution afficher ds la colonne Q le resultat par une fleche.
Dans les colonnes T1,T2,T3 je fais la moyenne des compétences de la ligne consideree.
Je deplace la formule moy d'un trimestre à l'autre et je fais un copier coller valeur pour conserver la colonne de gauche et ainsi comparer les trimestres consécutifs.
J'ai une formule en Q que j'utilisais ailleurs et qui compare les valeurs en T1 et T2 mais comme un point de couleur correspond à un intervalle de reussite cela pause probleme.
Ex;
0<moy<25% alors rouge
25<moy<50% alors orange
50<moy<75% alors bleu
75<moy<100% alors vert.

Si l'eleve a eu orange et orange en T1 et T2 il me faudrait une fleche horizontale or comme chaque orange correspond a une valeur souvent differente compris dans un intervalle il compare les valeurs et me met une fleche verte.(Ex en Q13).
Il faudrait que suivant l'intervalle ds laquelle se situe la moy im me renvoie dans T1,T2... la valeur 0.25 ou 0.5 ou 0.75 pour pouvoir ensuite etre comparé mais je n'y arrive pas , à moins qu'une autre idee existe...
Voilà...
Chris
 

Pièces jointes

  • bulletin par competence A3 download.xlsx
    22.7 KB · Affichages: 263

Yaloo

XLDnaute Barbatruc
Re : Comparer des valeurs et renvoyer une fleche...

Re,

Voici un bout de ta macro modifiée :

VB:
        If IsError(Application.Match([S3], WsD.[A1:W1], 0)) Then 'Si le libellé est faux dans la feuille élève => message et pas de traitement
          MsgBox "Pas de libellé """ & [S3] & """ pour " & Nom
        Else 'Sinon, traitement
          Dest = Application.Match([S3], WsD.[A1:W1], 0)
          y = 1
          For i = 1 To UBound(Col)
            For j = 1 To Col(i)
              c = Dest + j - 1
              WsD.Cells(i + 1, c) = Cells(x, y + j)
              'S'il y a un commentaire dans la colonne y+j de la ligne 5, alors ...
              If Not (Cells(5, y + j).Comment Is Nothing) Then
                'Suppression d'un commentaire éventuel dans la cellule de destination
                WsD.Cells(i + 1, c).ClearComments
                'Ajout d'un commentaire
                WsD.Cells(i + 1, c).AddComment
                'Copie le commentaire de la cellule de la feuille Evaluation dans la cellule destinataire
                WsD.Cells(i + 1, c).Comment.Text Cells(5, y + j).Comment.Text
              End If
            Next
            y = y + Col(i)
          Next
        End If
      End If

A+

Martial
 

chrisclaret

XLDnaute Occasionnel
Re : Comparer des valeurs et renvoyer une fleche...

Bonjour Yaloo,le forum,

Ben j'ai fait la modif et pas de commentaire qui apparait...:confused:

Sub Test1() 'Voir module ModTest
Dim x As Variant
Dim y As Variant
Dim i As Integer
Dim j As Integer
Dim Dest
Verif = False
Application.Calculation = xlManual
For Each x In Sheets("Evaluation").Range("A8:A" & Sheets("Evaluation").Range("A43").End(xlUp).Row) 'Boucle sur la premiere colonne du fichier évaluation
i = 0
j = 0
If x.Value <> 0 And x.Value <> "" Then 'S'il y a un nom dans la cellule
For Each z In ThisWorkbook.Sheets 'Vérifie si l'onglet destination existe
If z.Name = x.Value Then Verif = True
Next
If IsError(Application.Match([S3], WsD.[A1:W1], 0)) Then 'Si le libellé est faux dans la feuille élève => message et pas de traitement
MsgBox "Pas de libellé """ & [S3] & """ pour " & Nom
Else 'Sinon, traitement
Dest = Application.Match([S3], WsD.[A1:W1], 0)
y = 1
For i = 1 To UBound(Col)
For j = 1 To Col(i)
c = Dest + j - 1
WsD.Cells(i + 1, c) = Cells(x, y + j)
'S'il y a un commentaire dans la colonne y+j de la ligne 5, alors ...
If Not (Cells(5, y + j).Comment Is Nothing) Then
'Suppression d'un commentaire éventuel dans la cellule de destination
WsD.Cells(i + 1, c).ClearComments
'Ajout d'un commentaire
WsD.Cells(i + 1, c).AddComment
'Copie le commentaire de la cellule de la feuille Evaluation dans la cellule destinataire
WsD.Cells(i + 1, c).Comment.Text Cells(5, y + j).Comment.Text
End If
Next
y = y + Col(i)
Next
End If
End If

Else
MsgBox "L'onglet destination n'existe pas pour : " & x.Value
End If
End If
Verif = False
Next
Application.Calculation = xlCalculationAutomatic
End Sub

A+
Chris
 

Yaloo

XLDnaute Barbatruc
Re : Comparer des valeurs et renvoyer une fleche...

Bonjour Chris,

J'ai modifié un peu la macro pour ne copier le commentaire que lorsque la cellule est remplie, mais chez moi la macro fonctionnait normalement.

J'ai rajouté une macro dans le module ModSupComment afin de supprimer les commentaires des feuilles élèves.

VB:
        Else 'Sinon, traitement
          Dest = Application.Match([S3], WsD.[A1:W1], 0)
          y = 1
          For i = 1 To UBound(Col)
            For j = 1 To Col(i)
              c = Dest + j - 1
              If Cells(x, y + j) <> "" Then
                WsD.Cells(i + 1, c) = Cells(x, y + j)
                'S'il y a un commentaire dans la colonne y+j de la ligne 5, alors ...
                If Not (Cells(5, y + j).Comment Is Nothing) Then
                  'Suppression d'un commentaire éventuel dans la cellule de destination
                  WsD.Cells(i + 1, c).ClearComments
                  'Ajout d'un commentaire
                  WsD.Cells(i + 1, c).AddComment
                  'Copie le commentaire de la cellule de la feuille Evaluation dans la cellule destinataire
                  WsD.Cells(i + 1, c).Comment.Text Cells(5, y + j).Comment.Text
                End If
              End If
            Next
            y = y + Col(i)
          Next
        End If

Je t'ai mis le fichier sur ton mail.

A+

Martial
 

chrisclaret

XLDnaute Occasionnel
Re : Comparer des valeurs et renvoyer une fleche...

Re ,
Toujours aussi efficace je vois....;)Tu devrais bosser pour microsoft!
J'ai pu le tester de 11h30 à 12h30.
Fonctionne parfaitement et bonne idée pour le dernier module.
Il y aurait une petite modif à apporter :
La police n'est pas respectée lorsque les commentaires passent de la page "Evaluation" à la page "Eleve" ce qui fait que c'est difficilement visible pour ceux au fond de la classe.

Dans la suite logique...
1/Est-ce possible de conserver ce systeme lorsque j'enregistre les evaluations(enregistrements avec commentaires et uniquement sur les cellules utilisées) ?(Macro Enregistrer)
2/Serait-ce possible via un 4 eme bouton sur le userform 5 de faire apparaitre les commentaire de la feuille "Evaluation" lorque je les survolent(ou autre systeme equivalent) ?
(En tp les eleves ne savent pas sur quoi ils vont etre evalué et donc lorsque je fais le bilan via le userform 5 à la fin de la seance , je pourrais leur montrer la question qui se rapportait au bouton lorsque je survole les resultats de l'eleve...)
A+:eek:
Chris
 

Yaloo

XLDnaute Barbatruc
Re : Comparer des valeurs et renvoyer une fleche...

Re,

Pour la première partie, comme ça :
VB:
          For i = 1 To UBound(Col)
            For j = 1 To Col(i)
              c = Dest + j - 1
              If Cells(x, y + j) <> "" Then
                WsD.Cells(i + 1, c) = Cells(x, y + j)
                'S'il y a un commentaire dans la colonne y+j de la ligne 5, alors ...
                If Not (Cells(5, y + j).Comment Is Nothing) Then
                  'Suppression d'un commentaire éventuel dans la cellule de destination
                  WsD.Cells(i + 1, c).ClearComments
                  'Ajout d'un commentaire
                  WsD.Cells(i + 1, c).AddComment
                  'Copie le commentaire de la cellule de la feuille Evaluation dans la cellule destinataire
                  WsD.Cells(i + 1, c).Comment.Text Trim(Cells(5, y + j).Comment.Text)
                  WsD.Cells(i + 1, c).Comment.Shape.DrawingObject.Font.Size = 11
                  WsD.Cells(i + 1, c).Comment.Shape.DrawingObject.Font.Bold = True
                  WsD.Cells(i + 1, c).Comment.Shape.DrawingObject.AutoSize = True
                End If
              End If
            Next
            y = y + Col(i)
          Next

A+
 

chrisclaret

XLDnaute Occasionnel
Re : Comparer des valeurs et renvoyer une fleche...

Re,
Pour le 1/ , celà revient à faire le meme travail qu'avec la macro "Transfert des competences vers les feuilles eleves" mais cette fois-ci sur la macro "Enregistrer".
Ainsi j'aurai les commentaires associés ds mon fichier Evaluation3F1trimestre2 en survolant chaque point.
A+
Chris
 

chrisclaret

XLDnaute Occasionnel
Re : Comparer des valeurs et renvoyer une fleche...

Bonjour Yaloo, le fil ,

Impressionnant le travail !:)

Juste une petite chose , j'ai transposé les nveaux modules sur un fichier classe de cet apres-midi et lorsqu'il y a trop de compétences il m'affiche ce message ds le module de classe CB5 :

If Not (Feuil3.Range(.Tag).Comment Is Nothing) Then (bug içi)

apres m'avoir mis au prealable :
Erreur d'execution 1004
La méthode Range de l'objet Worksheet a échoué..
Je t'envoie le fichier sur ton mail..
MERCI,
A+
Chris
 

Yaloo

XLDnaute Barbatruc
Re : Comparer des valeurs et renvoyer une fleche...

Bonsoir Chris, le forum,

Pour récupérer l'adresse de la cellule contenant le commentaire, je me sers des Tag(s) des boutons.
Mais comme il y a déjà des Tag(s) dans les boutons, je les avais mis au début, mais ne m'en sers plus, et si tu n'as pas de commentaire dans ta cellule, le Tag n'est pas modifié.
Par exemple, en cellule $T$5 pour l'évaluation C1 tu n'as pas de commentaire, donc le Tag restait avec la valeur initiale (qui est un chiffre) et non l'adresse de la cellule contenant le commentaire, d'où le plantage.

En début d'initialisation de l'UserForm5, il faut mettre ça :
VB:
Private Sub UserForm_Initialize()
Dim Groupes
j = 1
For i = 1 To 6
  For k = 1 To 4
    For c = 1 To 12
      NumCB = i * 1000 + k * 100 + c
  Set CB(j).CB = Controls("CB" & NumCB): Controls("CB" & NumCB).Tag = "": j = j + 1
Next: Next: Next
Cela permet de supprimer les Tag(s) de chaque bouton, les bons Tag seront mis plus tard dans la macro.

A+

Martial
 

Yaloo

XLDnaute Barbatruc
Re : Comparer des valeurs et renvoyer une fleche...

Re,

J'ai repris ta demande concernant l'enregistrement de la feuille Evaluation.
Avec ta macro, tu copies complètement ta feuille Evaluation dans le classeur, donc tes commentaires sont également copiés en ligne 5. Je ne vois pas trop l'intérêt de copier le commentaire sur chaque point car la question est toujours la même.

A moins que je ne me trompe ;)

A+

PS : bon techniquement c'est faisable donc si tu y tiens, ça peut se faire.
 

chrisclaret

XLDnaute Occasionnel
Re : Comparer des valeurs et renvoyer une fleche...

Bonjour Yaloo , le forum ,

Pour repondre à ton post precedent , le tableau de la page Evaluation n'apparait pas completement sur l'ecran ce qui m'oblige pour la fin de liste à remonter le curseur droite pour montrer les competences à chaque nouveau parent...
Voilà , c'etait juste du confort , à toi de voir si celà n'est pas trop long alors pourquoi pas, sinon on laisse tomber.

Pour la derniere version du userform5 , c'est génial mise à part une tte petite chose .
Lorsque je suis un peu trop loquace ds mes commentaires , ils sont coupés car tu as un cadre fixe.
N'y-a-t-il pas moyen que celui-ci s'adapte au contenu comme lorsque je transfert les competences vers les feuilles eleves ?
Si trop compliqué ou si ça risque de ralentir l'apparition du userform 5 , dans ce cas , juste l'agrandir un peu...;)

Cette nouvelle version du userform5 a rajouté environ 5 s à l'apparition du celui-ci pour un delai maintenant de 15 s environ.
En revanche , l'apparition du podium groupe a été considerablement augmenté(1 min) au lieu d'une dizaine de sec.
N'y-a-t-il pas moyen d'accelerer ce processus ...
Je te mets la derniere version en PJ ds ton mail.
A+:eek:
Chris
 

Yaloo

XLDnaute Barbatruc
Re : Comparer des valeurs et renvoyer une fleche...

Bonjour Chris, le fil,

Pour repondre à ton post precedent , le tableau de la page Evaluation n'apparait pas completement sur l'ecran ce qui m'oblige pour la fin de liste à remonter le curseur droite pour montrer les competences à chaque nouveau parent...
Voilà , c'etait juste du confort , à toi de voir si celà n'est pas trop long alors pourquoi pas, sinon on laisse tomber.

Pourquoi ne pas mettre des volets horizontaux et verticaux puis les figer, comme ça tu as tous tes élèves et toutes tes questions. Cela peut se faire par macro, dis-moi si OK.

Pour la derniere version du userform5 , c'est génial mise à part une tte petite chose .
Lorsque je suis un peu trop loquace ds mes commentaires , ils sont coupés car tu as un cadre fixe.
N'y-a-t-il pas moyen que celui-ci s'adapte au contenu comme lorsque je transfert les competences vers les feuilles eleves ?
Si trop compliqué ou si ça risque de ralentir l'apparition du userform 5 , dans ce cas , juste l'agrandir un peu...;)

J'avais essayé de les mettre en AutoSize mais cela mettait une forme plutôt verticale et non horizontale, on peut peut-être mettre 2 ou 3 formats en fonction du nombre de caractères dans ton commentaire. Dis-moi si OK.

Cette nouvelle version du userform5 a rajouté environ 5 s à l'apparition du celui-ci pour un delai maintenant de 15 s environ.
En revanche , l'apparition du podium groupe a été considerablement augmenté(1 min) au lieu d'une dizaine de sec.
N'y-a-t-il pas moyen d'accelerer ce processus ...

A force d'ajouter et d'ajouter des choses, ça alourdi l'ensemble, mais d'une dizaine de secondes à 1 minute, cela parait beaucoup, sachant que je n'ai pas touché aux podiums.

A te relire

Martial
 

Discussions similaires

Statistiques des forums

Discussions
312 347
Messages
2 087 504
Membres
103 565
dernier inscrit
Fabien78