Problème fichier de correction
Bonjour,
On m'a fourni un document contenant du VBA destiné à automatiser la saisie de documents de correction. Malheureusement, celui-ci ne fonctionne pas correctement.
Malgré le temps que j'y ai consacré et mes connaissances limitées en VBA, je n'ai pas réussi à trouver la solution.
Je vous remercie par avance pour votre aide.
Bonjour tsantsa
Malheureusement, celui-ci ne fonctionne pas correctement.
Alors, ne bouge pas, je vais sortir ma boule de cristal pour te dire ce qui ne va pas
Plus sérieusement, peux-tu nous décrire ce qui ne fonctionne pas ?
A+
Si je remplis un groupe d'élèves dans "base de données", normalement ce fichier doit me générer toutes les pages des différentes épreuves "EP1, EP2 et EP3" avec le nom des candidats, mais là ça ne fonctionne pas. Que dit ta boule de cristal ? Merci TuExcel2fr
Bonjour,
A moins que la "boule d cristal" de JExcel2Fr ai trouvé, cela n'est pas assez clair je pense. Quelques questions :
- Dans la feuille Base données, est-ce que vous remplissez aussi les colonnes C à F ou est-ce que l'on créé les 4 feuilles sur chaque nom mentionné en colonne A et B
- Les feuilles Epx actuelles sont bien des feuilles Modèle ?
- Quel est le bouton actuel sur la feuille auquel vous attribuez cette action ?
- Pouvez m'expliquer la raison pour laquelle vous mettez une valeur Faux ou Vrai en J9 ?
Autre point : la macro Sub RAZ_BDD() sert à quoi ? C'est identique à la macro Sub RAZ_FEUILLE()
Crdlt
Bonsoir, je ne peux pas répondre, ma connaissance est très limitée, mais je trouve ce principe de fichier pratique dans l'idée. Normalement on saisit la liste des élèves, puis le VBA génère les 4 feuilles par candidat (EP1, EP2 et EP3) qui servent à utiliser les barèmes par candidat et mettre une note. Normalement un report des notes se retrouve sur la page de garde dans les cellules C6/F7. Merci pour votre aide.
Hello,
c'est bizarre parce que chez moi en Excel 2021 cela à l'air de fonctionner .
J'ai rempli la feuille Base de données comme ceci :
J'ai cliqué sur le bouton Génération Feuille pour la classe. Il m'a bien généré 5 feuilles supplémentaires par candidat. Exemple :
Les macros sont-elles activées sur ton Excel ?
Ami calmant, J.P
Bonjour,
Pas simple de répondre efficacement sans savoir comment vous fonctionnez avec le fichier et par rapport à votre premier post on ne sait pas trop où vous avez essayé de modifier dans les codes de programmation.
Si on considère votre dernier post concernant la génération des feuilles, j'ai refait le code qui permet de générer les feuilles suivant le nom des élèves. Faites ceci dans votre fichier :
1. Allez dans l'éditeur VBA
2. Dans le module AB_Ajout_Eleve, remplacez toutes les lignes de code Sub Generation_Feuille_Eleve() par celles-ci :
Option Explicit
Sub Generation_Feuille_Eleve()
Dim feuille()
Dim Nom_Eleve As String, Prenom_Eleve As String, k As String, NomFeuille As String
Dim plg As Byte, dlg As Byte, i As Byte, j As Byte
feuille = Array("Page_de_garde", "EP1", "EP2_Centre", "EP2_Entreprise", "EP3")
plg = 6
dlg = Feuil4.Range("A" & Rows.Count).End(xlUp).Row
If dlg = 5 Then Exit Sub
If WorksheetFunction.CountA(Feuil4.Range("A6:A" & dlg)) <> WorksheetFunction.CountA(Feuil4.Range("B6:B" & dlg)) Then
MsgBox "Veuillez attribuer un prénom à chaque nom de la colonne NOM", vbCritical, "ALERTE"
Exit Sub
End If
On Error GoTo fin
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
For i = plg To Feuil4.Range("A" & Rows.Count).End(xlUp).Row
Nom_Eleve = Feuil4.Range("A" & i).Value
Prenom_Eleve = Feuil4.Range("B" & i).Value
For j = 0 To UBound(feuille)
Select Case j
Case Is = 0: k = "PdG"
Case Is = 1: k = "EP1"
Case Is = 2: k = "EP2C"
Case Is = 3: k = "EP2E"
Case Is = 4: k = "EP3"
End Select
NomFeuille = k & Nom_Eleve & "_" & Left$(Prenom_Eleve, 1)
If Not FeuilleExiste(NomFeuille) Then
Sheets(feuille(j)).Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = k & "_" & Nom_Eleve & "_" & Left$(Prenom_Eleve, 1)
End If
With ActiveSheet
Select Case k
Case "PdG": .Range("C10") = Nom_Eleve: .Range("C11") = Prenom_Eleve
Case "EP3": .Range("D12") = Nom_Eleve: .Range("D13") = Prenom_Eleve
Case Else: .Range("D7") = Nom_Eleve: .Range("D8") = Prenom_Eleve
End Select
End With
Next j
Next i
'Pas_MaJ2:
' Sheets("Base_de_Données").Select
' Call MaJ_Evaluation
' Range("J9") = True
' Application.ScreenUpdating = True
fin:
With Application
.EnableEvents = True
.ScreenUpdating = True
end with
End Sub
Function FeuilleExiste(NomFeuille As String) As Boolean 'verifier si la feuille créé n'existe pas
Dim x As Object
FeuilleExiste = False
On Error Resume Next
Set x = ThisWorkbook.Sheets(NomFeuille)
If Err = 0 Then FeuilleExiste = True Else FeuilleExiste = False
End Function3. Associez à ce code le bouton "Generation feuille pour la classe" qui se trouve sur la feuille Base de données
Faites un test.
SI ok je vous donnerai le code pour supprimer les feuilles que j'ai revu.
Crdlt
EDIT : @Jurassic Pork : Désolé je n'avais pas vu que vous aviez posté. Mais c'est vrai que le code original fonctionne aussi.