Amélioration de Fichier Grace au VBA Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
galopin01
Passionné d'Excel
Passionné d'Excel
Messages : 6'398
Appréciations reçues : 163
Inscrit le : 18 septembre 2008
Version d'Excel : 2016
Téléchargements : Mes applications

Message par galopin01 » 24 avril 2018, 14:03

Tu as tout compris ! Je te fais ça " aux ptits oignons ! "
C'est pas sorcier mais je prends mon temps pour bien vérifier et éviter d'avoir tout à recommencer dans 8 jours...
A+
Question portant sur VBA : Je ne répond pas si la question ne comporte pas le classeur KIVABIEN avec.
Avatar du membre
Sebyg
Membre fidèle
Membre fidèle
Messages : 428
Appréciations reçues : 3
Inscrit le : 14 février 2018
Version d'Excel : 2013

Message par Sebyg » 24 avril 2018, 14:17

Ne t'inquiète pas, il n'y a aucun soucis ce n'est pas pressant.
Et comme on dit lentement mais surement c'est mieux que rapidement mais insuffisant..

Après je sent que je vais passer des heures carré à comprendre à 100% le VBA que tu as fait. Mais c'est cool c'est comme ça que l'on apprend ! :D
Avatar du membre
galopin01
Passionné d'Excel
Passionné d'Excel
Messages : 6'398
Appréciations reçues : 163
Inscrit le : 18 septembre 2008
Version d'Excel : 2016
Téléchargements : Mes applications

Message par galopin01 » 24 avril 2018, 17:34

Bon finalement, je n'ai fait que quelques tests : Évidemment moi je fais pas trop de c... je connais trop bien le truc !
Essaie un peu de jouer avec pour voir s'il y a des failles grossières qui m'ont échappé...
Parmi les modification :
Renommage de tous les boutons.
Masquage du bouton RAZ en mode trimestre
Masquage du bouton Imprimer en mode pas de trimestre...
Déprotection des colonnes A > B en mode pas de trimestre
Déprotection et affichage de la feuille Param en mode pas de trimestre
Reprotection de cette feuille à la perte du Focus
Débugage de la fonction affichage de la liste des élèves en fonction des trimestres
Insertion/suppression de lignes quand Suppression ou insertion d'items.
Diverses corrections mineures
Parmi celles-ci léger décalages des trimestres :
Le trimestre 1 va de la ligne 2 à 100
Le trimestre 2 va de la ligne 102 à 200
Le trimestre 3 va de la ligne 202 à 300
Les lignes 101 et 201 (à ne pas supprimer ni modifier !) servent juste de point de repère pour le début de chaque trimestre.
En Mode RAZ inutile de formater les colonnes A et B et même éviter le Copier/Coller éventuel ! Préférer le Collage Spécial Valeur le cas échéant. J'ai prévu une mise en forme automatique de la police, Type+Taille hauteur de ligne et Wrap mais je n'ai pas du tout testé si on fait des mise en forme parasite... :k'res:

Sorry ! J'ai vu à la dernière minute que tu avais fais de liens sur la feuille param pour la classe... C'est très bien. Donc tu te débrouilleras sans problème pour recommencer :sifflote:
Moi je pense que tu peux sans problème laisser libre l'accès à la feuille Param pour les paramétrages de début d'année : Ça t'évitera des userform foireux et des boutons dans tous les coins... pour la liste des élèves.

Tu me diras les pb rencontrés.

Pour la compréhension du VBA tu demandes : J'ai essayé de commenter un peu, mébon, c'est pas que je sois radin mais quand c'est trop évident j'évite les commentaires inutiles... Mais en cas de nécessité je t'expliquerai.

A+
Bilans Sebyg V8Beta.xlsm
(147.33 Kio) Téléchargé 5 fois
Question portant sur VBA : Je ne répond pas si la question ne comporte pas le classeur KIVABIEN avec.
Avatar du membre
Sebyg
Membre fidèle
Membre fidèle
Messages : 428
Appréciations reçues : 3
Inscrit le : 14 février 2018
Version d'Excel : 2013

Message par Sebyg » 24 avril 2018, 22:35

J'ai fait quelque test:

- Le bouton "Imprimer" que ce soit sur la feuille CE2 ou CM1 imprime toujours le Bilan CM1 ^^
Lorsque je passe sur Trimestre 2 il prend bien les noms d'élèves du Trimestre 2 mais pas les notes.. Je crois que les boutons imprimer ne suivent pas.
- Il n'est pas possible d'insérer une ligne en mode "Gris"
- Je ne m'attendais pas que le bouton "RAZ" supprime tout. Serte c'est top mais il faut bien réécrire la compétence en colonne A et sous compétence en colonne B en commençant non pas en face la compétence mais en dessous.. Sinon c'est fichu. Laisser un exemple aurait été Top non ?

Tkt pour les liens Feuilles et les liens enseignent, année etc je le referai ;)
Si je peux servir à ça au moins ^^

Sinon la suppression et insertion de ligne en mode "Trimestre" fonctionne très bien.
Je ne vois rien d'autre comme ça, j'essaierai de le parcourir plus demain.
Enfin déjà quand je revient au tout premier que moi j'avais fait ahah la bonne blague..!!
Je pensais pas que tout ceci était possible grâce au VBA mais que ça donne envie de plonger dedans tête la première !!!!
Avatar du membre
galopin01
Passionné d'Excel
Passionné d'Excel
Messages : 6'398
Appréciations reçues : 163
Inscrit le : 18 septembre 2008
Version d'Excel : 2016
Téléchargements : Mes applications

Message par galopin01 » 25 avril 2018, 02:43

Les procédures étant identiques il y a forcément quelques erreurs de copier /coller
pour CE2 dans la Private Sub cbImp_Click de Ws1
Changer Ligne 8 :
With Ws1                     'Ws1 est le CodeName de la Worksheet "CE2" (cf VBAProject)
pour CM1 dans le module Ws3 au lieu de Private Sub cbRAZ3_Click()
Mettre :
Private Sub cbRAZ_Click()
Dans le Module Util
Pour la Sub ResetWs1() changer :
Sub ResetWs1()
Dim i%
    With Ws1
        .[B1] = ""
        .[C1:AF400].ClearContents           'Efface tout
        .[A101] = "TRIMESTRE 2"
        .[A201] = "TRIMESTRE 3"
    End With
'Le reste sans changement...
Pour la Sub ResetWs3() changer :
Sub ResetWs3()
Dim i%
    With Ws3
        .[B1] = ""
        .[C1:AF400].ClearContents           'Efface tout
        .[A101] = "TRIMESTRE 2"
        .[A201] = "TRIMESTRE 3"
    End With
'Le reste sans changement...
Dans le Module Main Supprimer les lignes 8 et 29...
Sub InsRow()
      Dim WsA As Worksheet
      Dim i%, iR%, iC%, iLR%, iT%, sLib$
1     Set WsA = ActiveSheet
2     iR = ActiveCell.Row
3     iC = ActiveCell.Column
4     sLib = ActiveCell.Value
5     If iR > 1 And iC < 3 And sLib <> "" Then
6         If MsgBox("Cette procédure insère une ligne après la ligne active", 273, "Etes vous sûr(e) ?") = vbOK Then
7             With WsA
8                 If .[A1] <> "" And .[B1] <> "" And .[C1] <> "" Then   'A SUPPRIMER

9                             usfSaisie.Show              'Saisie du libellé
                              
10                    If Not Saisie = "" Then

'...

27                        Next
28                    End If
29                End If    'A SUPPRIMER
30            End With
31        End If
32    Else
33        MsgBox Space(18) & "Erreur non gérée :" & Chr(13) & _
                 "Sélectionnez un item Colonne 1 ou 2"
34    End If
End Sub
Bonne journée.
A+
Question portant sur VBA : Je ne répond pas si la question ne comporte pas le classeur KIVABIEN avec.
Avatar du membre
Sebyg
Membre fidèle
Membre fidèle
Messages : 428
Appréciations reçues : 3
Inscrit le : 14 février 2018
Version d'Excel : 2013

Message par Sebyg » 25 avril 2018, 09:41

Bonjour,

J'ai fait les modifs ci-dessus.

Dans Trimestre 2 ou 3 par exemple trimestre 3, quand j'insère une ligne nommé "seb" elle ne se met pas automatiquement je doit aller dans trimestre 1 ou 2 puis revenir dans trimestre 3.. et là il m'affiche le Trimestre 1. A chaque fois je dois recliquer sur trimestre 3 pour qu'il m'affiche réellement le Trimestre 3..

En Mode "Gris", insérer une ligne dans trimestre 1 et 2 ne pose pas de soucis mais dans Trimestre 3 j'ai un soucis (deboguage) qui fait carrément planter le excel:
Sub InsRow()
Dim WsA As Worksheet
Dim i%, iR%, iC%, iLR%, iT%, sLib$
Set WsA = ActiveSheet
iR = ActiveCell.Row
iC = ActiveCell.Column
sLib = ActiveCell.Value
If iR > 1 And iC < 3 And sLib <> "" Then
    If MsgBox("Cette procédure insère une ligne après la ligne active", 273, "Etes vous sûr(e) ?") = vbOK Then
        With WsA
                        usfSaisie.Show              'Saisie du libellé
                        
                If Not Saisie = "" Then
                Application.ScreenUpdating = False
                    Select Case iR
                    Case Is < 100: Rows(100).Delete
                    Case Is < 200: Rows(200).Delete
                    End Select
                    .Rows(iR).Copy
                    [color=#FFFF00].Rows(iR + 1).Insert Shift:=xlDown  'Duplication et mise enforme[/color]
                    .Cells(iR + 1, iC).Value = Saisie
                    If iC = 1 Then
                        .Rows(iC).RowHeight = 21
                    Else
                        .Range("B2:B300").WrapText = True
                        .Range("B2:B300").Rows.AutoFit
                    End If
                    .Range("A2:AF300").Interior.ColorIndex = xlNone
                    For i = 2 To 300 Step 2
                        .Range(.Cells(i, 1), .Cells(i, 32)).Interior.ColorIndex = 15
                    Next
                End If
        End With
    End If
Else
    MsgBox Space(18) & "Erreur non gérée :" & Chr(13) & _
           "Sélectionnez un item Colonne 1 ou 2"
End If
End Sub

Pour le bouton "Imprimer" c'est bon, ils imprime chacun les bon élèves néanmoins si je passe en trimestre 2 il n'imprime pas les notes du trimestre 2 il reste sur les note du trimestre 1.

J'ai imprimé une feuille pour voir ce que ça donnais. Ça sort au pti oignon pour le Trimestre 1 ! ;)
Le Bouton RAZ est parfait maintenant ! Ça supprime juste toute les notes du coup ça laisse de bon exemple voir même les compétences pour l'année d'après si toute fois..
Bilans Sebyg V8Beta (Sebyg).xlsm
(146.95 Kio) Téléchargé 3 fois
J'ai mis les liaisons entre les feuilles Bilan et Param.
J'ai également mis les liaisons pour le changement automatique des noms des Feuilles en fonction des Cellules C6 et C7 de Param.
Mais je ne sais pas comment faire pour le nom des Feuilles Bilans. Une idée ?
Avatar du membre
galopin01
Passionné d'Excel
Passionné d'Excel
Messages : 6'398
Appréciations reçues : 163
Inscrit le : 18 septembre 2008
Version d'Excel : 2016
Téléchargements : Mes applications

Message par galopin01 » 25 avril 2018, 16:33

Bon ! Du coup j'ai encore refondu TOUSSA... Mais pour l'essentiel c'est toujours un peu la même chose. En mieux... Oeuf Corse !

A tester sous tous les angles...

J'ai bidonné un peu plus les feuilles parce que avec des classes trop minimalistes, je ne me rends pas bien compte.
Seul les 3èmes trimestres de chaque classe ont des commentaires sinon pertinents du moins qui permettent réellement de jauger un peu le travail.
J'espère que ça progresse un peu.
Pour les noms des feuilles je t'ai déjà expliqué qu'ils sont sans importance, "pomme, poire banane, cerise, tortue ou papillon" ça n'a aucune importance : Les macros n'utilisent que les CodeName. Relire à ce sujet mes explications précédentes...

Attention à la manière d'utiliser le fichier.
Excel à cette particularité que plus tu supprimes des choses (lignes...) plus le classeur devient volumineux.
Donc ça ne sert à rien d'utiliser le même classeur tous les ans en faisant un RAZ de l'année en cours.
Il est préférable d'utiliser un classeur Modèle et de l'Enregistrer sous... "un autre nom" chaque année !

Tu me diras...

A+
Bilans Sebyg V10.xlsm
(139.64 Kio) Téléchargé 4 fois
Question portant sur VBA : Je ne répond pas si la question ne comporte pas le classeur KIVABIEN avec.
Avatar du membre
Sebyg
Membre fidèle
Membre fidèle
Messages : 428
Appréciations reçues : 3
Inscrit le : 14 février 2018
Version d'Excel : 2013

Message par Sebyg » 25 avril 2018, 17:03

Le changement de trimestre dans la case B1 ne s'effectue plus...
Je met Trimestre 1 il reste au Trimestre 3. La couleur également ne change plus du coup.
Il n'y a plus de mode "Gris" et donc plus d'accès à la Feuille Param.

Oui oui pour les noms des feuilles je sais que l'on s'en fiche car tu utilise WS1 etc.. Je voulais faire quelque chose mais ce n'est pas grave on s'en fiche on oublie car je ne sais comment l'expliquer. ^^
galopin01 a écrit :
25 avril 2018, 16:33
Excel à cette particularité que plus tu supprimes des choses (lignes...) plus le classeur devient volumineux.
Ah ouais !? Je ne savais pas ça. Du coup effectivement il est plus Valable d'avoir un Classeur Modèle. Très bien !
Avatar du membre
galopin01
Passionné d'Excel
Passionné d'Excel
Messages : 6'398
Appréciations reçues : 163
Inscrit le : 18 septembre 2008
Version d'Excel : 2016
Téléchargements : Mes applications

Message par galopin01 » 25 avril 2018, 17:11

C'est quoi ce Binz ?
:mrgreen:
Sorry, J'ai fait une dernière petite modif de dernière minute et j'ai oublié de remettre en place.
Dans les deux classes modifier la macro :
Private Sub xWorksheet_Change(ByVal Target As Range)
(Enlever le" x" ! )
A+
Question portant sur VBA : Je ne répond pas si la question ne comporte pas le classeur KIVABIEN avec.
Avatar du membre
Sebyg
Membre fidèle
Membre fidèle
Messages : 428
Appréciations reçues : 3
Inscrit le : 14 février 2018
Version d'Excel : 2013

Message par Sebyg » 25 avril 2018, 17:35

C'est bon ça fonctionne ! ;)
Mais quand on "insère une ligne" tout saute et du coup les cellules ne sont plus masquer comme si on est en zone "Gris" c'est normal ?
Il faut reselectionner le Trimestre pour que les lignes ce cache...
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message