Regroupement de donnée, macro qui plante
Résolu
Julien
-
Julien -
Julien -
Bonjour à tous!
Je suis plutot un débutant sur excel et surtout sur les macros..
je me suis fait aidé ici meme pour la création de la macro "créer bulletin trimestre" que vous trouverez sur le fichier "1er trimestre".
voila le travail que nous avions fait:
http://www.cjoint.com/c/EKckeTePqZ3
Je ne l'ai pas touché depuis un petit moment et je ne comprend pas pourquoi d'un coup elle ne fonctionne plus... quelqu'un peut m'aider?
Je change à chaque fois le chemin d'accès correctement donc cela ne vient pas de la...
Pour rappel, la macro doit:
- regrouper les données des fichiers excel se trouvant dans le dossier matière
- prendre les données du 1er trimestre si le fichier s'appel 1er trimestre, 2ème si 2ème etc...
- copier coller chaque matière au bon endroit dans chaque onglet (français vers français)
- evidemment, copier coller les onglets respectifs (nicolas vers nicolas, etc...)
J'espère que c'est simple à comprendre...
Merci d'avance, j'espère qu'il n'y a pas tout à reprendre... :/
Julien
Je suis plutot un débutant sur excel et surtout sur les macros..
je me suis fait aidé ici meme pour la création de la macro "créer bulletin trimestre" que vous trouverez sur le fichier "1er trimestre".
voila le travail que nous avions fait:
http://www.cjoint.com/c/EKckeTePqZ3
Je ne l'ai pas touché depuis un petit moment et je ne comprend pas pourquoi d'un coup elle ne fonctionne plus... quelqu'un peut m'aider?
Je change à chaque fois le chemin d'accès correctement donc cela ne vient pas de la...
Pour rappel, la macro doit:
- regrouper les données des fichiers excel se trouvant dans le dossier matière
- prendre les données du 1er trimestre si le fichier s'appel 1er trimestre, 2ème si 2ème etc...
- copier coller chaque matière au bon endroit dans chaque onglet (français vers français)
- evidemment, copier coller les onglets respectifs (nicolas vers nicolas, etc...)
J'espère que c'est simple à comprendre...
Merci d'avance, j'espère qu'il n'y a pas tout à reprendre... :/
Julien
1 réponse
-
Bonjour,
La premiere chose qui devrait vous interpeler c'est "trimestre 1" en nom d'onglet pour les fichiers matieres et 1er trimestre qui est une partie du nom de fichier appelant que vous utilisez pour recuperer les donnees des fichiers matieres-
-
-
Si seulement je le savais ;)
Moi lorsque je lance le debogage, il me met en jaune " With Sheets(Trimestre)"
C'est tout ce que je peux te dire... je ne comprend meme pas entièrement le code lol
Voila le code pour ceux qui veulent y jeter un oeil:
Option Explicit
Option Base 1
'variables globales
Dim T_eleves, Trimestre As String
'constantes
Const Chemin As String = "F:\sans note\T1\P1\matieres\" 'emplacement des classeurs matières" A ADAPTER
Sub Créer_bulletin_trimestre()
Dim Nbre_elev As Byte, Cptr As Byte
Dim Fich As String
Application.ScreenUpdating = False 'fige le défilement de l'écran:confort & rapidité
'----crée variable globale liste des élèves
With Sheets("liste")
Nbre_elev = .Columns("A").Find(what:="", after:=Range("A1")).Row - 3
ReDim T_eleves(Nbre_elev)
For Cptr = 1 To Nbre_elev
T_eleves(Cptr) = .Cells(Cptr + 2, "A")
Next
End With
'---mémorise le trimestre en cours
Trimestre = Split(ThisWorkbook.Name, ".")(0) 'suffixe du nom de fichier enlevé
' répertorie les matières enseignées
ChDir Chemin
Fich = Dir("*.*")
While Fich <> ""
apprecier Fich 'boucle sur toutes les matières
Fich = Dir
Wend
End Sub
Sub apprecier(Classeur)
Dim Nom As String, Cptr As Byte, Ligne As Byte
Dim T_competant, T_libelle
Workbooks.Open Filename:=Classeur
Nom = Split(Classeur, ".")(0) 'suffixe du nom de fichier enlevé
For Cptr = 1 To UBound(T_eleves)
'------collecte
With Sheets(Trimestre)
' mémorisation des appréciations
Ligne = .Columns("A").Find(T_eleves(Cptr), .Range("A1"), xlValues).Row 'ligne élève
T_competant = .Range(.Cells(Ligne, "B"), .Cells(Ligne, "E"))
End With
With Sheets("Compétence")
'mémorisation des thèmes d'évaluation
Ligne = .Columns("A").Find(what:=Trimestre, searchdirection:=xlPrevious).Row + 2
T_libelle = .Range(.Cells(Ligne, "A"), .Cells(Ligne + 2, "A"))
End With
'-------'restitution
With Workbooks(Trimestre & ".xlsm").Sheets(T_eleves(Cptr))
Ligne = .Columns("A").Find(what:=Nom, searchdirection:=xlPrevious).Row 'entete
.Cells(Ligne + 8, "B") = T_competant(1, 1) 'remarque
.Cells(Ligne + 2, "N") = T_competant(1, 2) 'niveau1
.Cells(Ligne + 4, "N") = T_competant(1, 3) 'niveau2
.Cells(Ligne + 6, "N") = T_competant(1, 4) 'niveau3
.Cells(Ligne + 2, "A") = T_libelle(1, 1) 'theme 1
.Cells(Ligne + 4, "A") = T_libelle(2, 1) 'theme 2
.Cells(Ligne + 6, "A") = T_libelle(3, 1) 'theme 3
End With
Next
'fermeture du classeur matière sans enregistrement
With ActiveWorkbook
.Saved = True
.Close
End With
End Sub -
-
-