Bonjour à toutes et à tous,
Novice en VBA, j’espère ne pas commettre d’impair en posant mes questions sur un sujet qui a déjà été traité, mais pour lequel je ne parviens pas à trouver de réponse.
Je suis enseignant et j’ai créé, pour mes collègues et moi-même, un fichier Excel (EVAMATHS.xls, classeur Excel 97-2003) pour la saisie de notes d’une évaluation commune (voir capture d’écran en fichier joint).
Une fois les notes saisies dans les feuilles précédentes, des graphiques de résultats globaux et un bilan (comprenant les moyennes et le niveau) sont générés automatiquement. Pour obtenir chaque bilan, le numéro de l’élève est tapé en A1 en blanc sur fond blanc pour être invisible à l’impression (ex : l’élève BRIDOU est l’élève n° 2) : le nom, le prénom, les notes et le niveau de l’élève sont générés grâce à la formule :
=INDEX(Générales!B1:B13;EQUIV($A$1;Générales!$A:$A;0))&" "&INDEX(Générales!C1:C13;EQUIV($A$1;Générales!$A:$A;0))
où « Générales » est l’onglet qui rassemble dans un tableau, l’intégralité des résultats de tous les élèves, la colonne B donne le nom de l’élève et la colonne C son prénom.
J’aurais pu m’arrêter là, mais pour automatiser un maximum de procédures, j’ai souhaité créer des macros pour permettre la prévisualisation, l’enregistrement ou l’impression du bilan de chaque élève.
Vu mon niveau de « quiche » en VBA (j’étais bon en BASIC, mais c’était à l’époque de l’Oric Atmos et du Commodore 64 dans les années 80 !!!), j’ai fait des recherches et réussi à créer des macros pour chacune de ces actions, du moins je le croyais puisqu’en faisant F5, les macros semblaient fonctionner.
Après avoir fermé Excel puis y être retourné, je me suis aperçu que, non seulement les boutons n’étaient plus actifs, mais en plus, le même code s’était copié sur les 4 macros, supprimant ainsi le code tapé pour chacune des procédures. Voici le code « survivant » correspondant à l’enregistrement du fichier en pdf (au passage, j’ignore pourquoi et comment les lignes 10 et 11 sont apparues alors que je ne les avais pas tapées !).
1.Sub Enreg_Pdf()
2.Dim LeRep As String
3.LeRep = ThisWorkbook.Path
4.ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
5. LeRep & "_" & ".pdf", Quality:= _
6. xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
7. From:=1, To:=1, OpenAfterPublish:=True
8.End Sub
9.
10.Private Sub CommandButton1_Click()
11.End Sub
Avant de totalement abandonner, parce que vous êtes ma dernière chance (!), j’ai revu mes souhaits « à la baisse » et voilà ce que je voudrais pouvoir faire à présent :
- pouvoir enregistrer chaque bilan (le top serait de pouvoir les enregistrer tous en même temps, mais bon…) en pdf en lui donnant le nom de l’élève situé dans la cellule B2 (ex : enregistrer le fichier en BRIDOU.pdf) ;
- pouvoir donner à l’utilisateur la possibilité d’enregistrer les pdf ainsi générés au même endroit que le fichier principal EVAMATHS.xls (ou à tout autre endroit de leur choix) puisque le fichier sera transmis à mes collègues pour leurs propres élèves et que certains travailleront à partir du fichier copié sur leur ordi, quand d’autres le laisseront sur une clé USB ;
- pouvoir imprimer le bilan pdf sur papier individuellement ou en les regroupant tous.
Tous les exemples trouvés sur les forums me donnaient jusqu’à présent la solution pour chacun de ces souhaits, mais jamais les trois en même temps et aucune de mes tentatives n’a été fructueuse.
Bien entendu, il reste toujours la possibilité de n’utiliser aucune macro et de tout faire « manuellement » en passant par la commande « Fichier », mais ce serait dommage puisque je suis certain que la solution est quelque part dans l’un de vos cerveaux aguerris !
Enfin, pour information, ma version d’Excel est celle d’Office 2019.
Dernière question, me conseillez-vous d’enregistrer mon fichier EVAMATHS au format « Classeur Excel (prenant en charge les macros) » ?
Merci à toutes et à tous de m’avoir lu jusqu’au bout, puisque je reconnais que mon message est fort long ! J’attends vos éventuelles solutions à mon problème.
Bon courage à vous et bonnes vacances pour les concernés (-ées) !
Novice en VBA, j’espère ne pas commettre d’impair en posant mes questions sur un sujet qui a déjà été traité, mais pour lequel je ne parviens pas à trouver de réponse.
Je suis enseignant et j’ai créé, pour mes collègues et moi-même, un fichier Excel (EVAMATHS.xls, classeur Excel 97-2003) pour la saisie de notes d’une évaluation commune (voir capture d’écran en fichier joint).
Une fois les notes saisies dans les feuilles précédentes, des graphiques de résultats globaux et un bilan (comprenant les moyennes et le niveau) sont générés automatiquement. Pour obtenir chaque bilan, le numéro de l’élève est tapé en A1 en blanc sur fond blanc pour être invisible à l’impression (ex : l’élève BRIDOU est l’élève n° 2) : le nom, le prénom, les notes et le niveau de l’élève sont générés grâce à la formule :
=INDEX(Générales!B1:B13;EQUIV($A$1;Générales!$A:$A;0))&" "&INDEX(Générales!C1:C13;EQUIV($A$1;Générales!$A:$A;0))
où « Générales » est l’onglet qui rassemble dans un tableau, l’intégralité des résultats de tous les élèves, la colonne B donne le nom de l’élève et la colonne C son prénom.
J’aurais pu m’arrêter là, mais pour automatiser un maximum de procédures, j’ai souhaité créer des macros pour permettre la prévisualisation, l’enregistrement ou l’impression du bilan de chaque élève.
Vu mon niveau de « quiche » en VBA (j’étais bon en BASIC, mais c’était à l’époque de l’Oric Atmos et du Commodore 64 dans les années 80 !!!), j’ai fait des recherches et réussi à créer des macros pour chacune de ces actions, du moins je le croyais puisqu’en faisant F5, les macros semblaient fonctionner.
Après avoir fermé Excel puis y être retourné, je me suis aperçu que, non seulement les boutons n’étaient plus actifs, mais en plus, le même code s’était copié sur les 4 macros, supprimant ainsi le code tapé pour chacune des procédures. Voici le code « survivant » correspondant à l’enregistrement du fichier en pdf (au passage, j’ignore pourquoi et comment les lignes 10 et 11 sont apparues alors que je ne les avais pas tapées !).
1.Sub Enreg_Pdf()
2.Dim LeRep As String
3.LeRep = ThisWorkbook.Path
4.ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
5. LeRep & "_" & ".pdf", Quality:= _
6. xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
7. From:=1, To:=1, OpenAfterPublish:=True
8.End Sub
9.
10.Private Sub CommandButton1_Click()
11.End Sub
Avant de totalement abandonner, parce que vous êtes ma dernière chance (!), j’ai revu mes souhaits « à la baisse » et voilà ce que je voudrais pouvoir faire à présent :
- pouvoir enregistrer chaque bilan (le top serait de pouvoir les enregistrer tous en même temps, mais bon…) en pdf en lui donnant le nom de l’élève situé dans la cellule B2 (ex : enregistrer le fichier en BRIDOU.pdf) ;
- pouvoir donner à l’utilisateur la possibilité d’enregistrer les pdf ainsi générés au même endroit que le fichier principal EVAMATHS.xls (ou à tout autre endroit de leur choix) puisque le fichier sera transmis à mes collègues pour leurs propres élèves et que certains travailleront à partir du fichier copié sur leur ordi, quand d’autres le laisseront sur une clé USB ;
- pouvoir imprimer le bilan pdf sur papier individuellement ou en les regroupant tous.
Tous les exemples trouvés sur les forums me donnaient jusqu’à présent la solution pour chacun de ces souhaits, mais jamais les trois en même temps et aucune de mes tentatives n’a été fructueuse.
Bien entendu, il reste toujours la possibilité de n’utiliser aucune macro et de tout faire « manuellement » en passant par la commande « Fichier », mais ce serait dommage puisque je suis certain que la solution est quelque part dans l’un de vos cerveaux aguerris !
Enfin, pour information, ma version d’Excel est celle d’Office 2019.
Dernière question, me conseillez-vous d’enregistrer mon fichier EVAMATHS au format « Classeur Excel (prenant en charge les macros) » ?
Merci à toutes et à tous de m’avoir lu jusqu’au bout, puisque je reconnais que mon message est fort long ! J’attends vos éventuelles solutions à mon problème.
Bon courage à vous et bonnes vacances pour les concernés (-ées) !