Regroupement de donnée, macro qui plante

Résolu
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

1 réponse

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    1. Julien
       
      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
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Julien
       
      Re,

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

      Parce que moi, y en a pas
      0
    3. Julien
       
      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
    4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Julien
       
      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
    5. Julien
       
      Trimestre= "1er trimestre"

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

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