Regroupement de donnée, macro qui plante

Résolu/Fermé
Julien - 2 nov. 2015 à 11:13
 Julien - 3 nov. 2015 à 17:11
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


A voir également:

1 réponse

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
2 nov. 2015 à 13:46
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
0
merci pour la réponse,

en fait à la base "trimestre 1" s'appel aussi "1er trimestre"... je l'avais changé pour tester mais sans effet... le renommer "1er trimestre" ne change rien a priori...
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709 > Julien
Modifié par f894009 le 2/11/2015 à 15:13
Re,

Dites au moins a quelle ligne il y a erreur !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Parce que moi, y en a pas
0
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
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709 > Julien
2 nov. 2015 à 16:16
Re,

lancer votre programme, quand il y a l'erreur, clic sur debugage et passez le curseur souris sur
Trimestre
pour voir son contenu
0
Trimestre= "1er trimestre"

Sheets(Trimestre)= l'indice n'appartient pas à la selection

Est ce que ce sont les infos que tu voulais?
0