Copie conditionnelle de cellule

salbingu

XLDnaute Nouveau
Bonjour à tous.
Je publie pour la première fois et j'ose espérer d'être au bon endroit.
Mon problème est le suivant :
J'ai un classeur qui contient les emplois du temps par classes.
Les cellules contiennent la matière suivie du nom de l'enseignant.
Dans un autre classeur j'ai des onglets qui sont les noms des enseignants.
Je voudrais récupérer dans les cellules de ces onglets les classes où le nom de l'enseignant apparait pour en faire un emploisv du temps individuel.
Merci d'avance pour votre aide.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Salbingu,
Désolé, je jette l'éponge.
Nous ne sommes plus dans une aide mais dans un développement complet qui va demander beaucoup de temps, plus que j'en ai de disponible.
D'autant que les deux bases ne sont pas strictement identiques, par exemple vous avez TAKOUGANG née FOTSING Matuekam d'un coté et TAKOUGANG née FOTSING de l'autre, et je pense qu'il y en a d'autres. Ce qui obligera à gérer les différences, ce sera long, compliqué et chronophage.
De plus les plannings classes vont de 7:30 à 12:00, les plannings enseignants de 7:30 à 17:00, ce qui veut dire qu'après ce développement en arrivera d'autres avec d'autres fichiers.

En espérant qu'une bonne âme disponible pourra vous aider. ;)
 

salbingu

XLDnaute Nouveau
Bonjour Salbingu,
Désolé, je jette l'éponge.
Nous ne sommes plus dans une aide mais dans un développement complet qui va demander beaucoup de temps, plus que j'en ai de disponible.
D'autant que les deux bases ne sont pas strictement identiques, par exemple vous avez TAKOUGANG née FOTSING Matuekam d'un coté et TAKOUGANG née FOTSING de l'autre, et je pense qu'il y en a d'autres. Ce qui obligera à gérer les différences, ce sera long, compliqué et chronophage.
De plus les plannings classes vont de 7:30 à 12:00, les plannings enseignants de 7:30 à 17:00, ce qui veut dire qu'après ce développement en arrivera d'autres avec d'autres fichiers.

En espérant qu'une bonne âme disponible pourra vous aider. ;)
Bonsoir. Je reviens vers vous avec des fichiers allégés.
Je suis assez bon autodidacte et je sais que ce qui marche pour une cellule peut être implémenté dans une autre.
Alors mon souci :
L'onglet ABDOUL née SAMIRAH GARBA est le nom de l'enseignant de His-Geo-ECM de la 1ère D4 par exemple.
Ce que je veux.
1- lire le nom de l'onglet (ABDOUL nee Samirah) dans emplois enseignants ;
2- rechercher toutes les cellules qui contiennent ce nom dans emplois du temps classes.
3- Écrire le nom de la classe dans les cellules correspondants aux même horaires dans l'emploi du temps personnel de samirah.
Merci de bien vouloir eayer encore.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Bonsoir. Je reviens vers vous avec des fichiers allégés.
Il n'y a pas de fichiers attachés donc j'ai travaillé avec les précédents.

En PJ un premier essai. Avec :
VB:
Sub Calcul()
' figeage de l'écran pour accélération. ICI mis en commentaire pour la mise au point de la macro.
'Application.ScreenUpdating = False
' Dernière ligne de la liste des profs
Derlig = Sheets("Liste").Range("A1000").End(xlUp).Row
' Effacement des flags de suivi en colonne E
Range("E2:E500").ClearContents
' Pour tous les profs
For N = 2 To Derlig
    ' Récupérer le nom du prof dans NomProf
    NomProf = Sheets("Liste").Cells(N, 1)
    ' X dans la liste pour se reperer en cas de soucis
    Sheets("Liste").Cells(N, "E") = "X"
    ' Activer la feuille du prof
    Sheets(NomProf).Activate
    ' Ecriture suivi dans Statusbar
    Application.StatusBar = " ( " & N & "/" & Derlig & " )  " & "Traitement de la feuille " & NomProf
    ' Pour toutes les feuilles des plannings
    For Each Sh In Workbooks("EMPLOIS DU TEMPS  DEFINITIFSFMATIN.FINAL.xlsm").Sheets
        ' On mémorise dans quelle classe on est ( récupération du nom de l'onglet )
        NomClasse = Sh.Name
        ' Pour toutes les lignes du planning de la classe
        For L = 5 To 10
            ' Pour toutes les colonnes du planning de la classe
            For C = 2 To 6
                ' Si la cellule contient le nom du prof.
                If Sh.Cells(L, C) Like "*" & NomProf & "*" Then
                    ' On récupère le créneau horaire en colonne A
                    CréneauHoraire = Sh.Cells(L, 1)
                    ' Le planning prof commence en B7, celui des classes en B5, donc Offset 2
                    ' On écrit la classe dans le bon créneau horaire du bon jour.
                    Sheets(NomProf).Cells(L + 2, C) = NomClasse
                End If
            Next C
        Next L
    Next Sh
Next N
Application.StatusBar = ""
End Sub
La macro se lance avec un bouton dans la page Liste.
J'ai détecté quelques problèmes de pages, que j'ai résolu en créant des feuilles vierges pour que la macro aille jusqu'au bout.
Je n'ai rien contrôlé au niveau des plannings profs.
... Bon courage.
 

Pièces jointes

  • EMPLOIS_ENSEIGNANTS (5).xlsm
    960 KB · Affichages: 32

salbingu

XLDnaute Nouveau
Bonsoir,
Il n'y a pas de fichiers attachés donc j'ai travaillé avec les précédents.

En PJ un premier essai. Avec :
VB:
Sub Calcul()
' figeage de l'écran pour accélération. ICI mis en commentaire pour la mise au point de la macro.
'Application.ScreenUpdating = False
' Dernière ligne de la liste des profs
Derlig = Sheets("Liste").Range("A1000").End(xlUp).Row
' Effacement des flags de suivi en colonne E
Range("E2:E500").ClearContents
' Pour tous les profs
For N = 2 To Derlig
    ' Récupérer le nom du prof dans NomProf
    NomProf = Sheets("Liste").Cells(N, 1)
    ' X dans la liste pour se reperer en cas de soucis
    Sheets("Liste").Cells(N, "E") = "X"
    ' Activer la feuille du prof
    Sheets(NomProf).Activate
    ' Ecriture suivi dans Statusbar
    Application.StatusBar = " ( " & N & "/" & Derlig & " )  " & "Traitement de la feuille " & NomProf
    ' Pour toutes les feuilles des plannings
    For Each Sh In Workbooks("EMPLOIS DU TEMPS  DEFINITIFSFMATIN.FINAL.xlsm").Sheets
        ' On mémorise dans quelle classe on est ( récupération du nom de l'onglet )
        NomClasse = Sh.Name
        ' Pour toutes les lignes du planning de la classe
        For L = 5 To 10
            ' Pour toutes les colonnes du planning de la classe
            For C = 2 To 6
                ' Si la cellule contient le nom du prof.
                If Sh.Cells(L, C) Like "*" & NomProf & "*" Then
                    ' On récupère le créneau horaire en colonne A
                    CréneauHoraire = Sh.Cells(L, 1)
                    ' Le planning prof commence en B7, celui des classes en B5, donc Offset 2
                    ' On écrit la classe dans le bon créneau horaire du bon jour.
                    Sheets(NomProf).Cells(L + 2, C) = NomClasse
                End If
            Next C
        Next L
    Next Sh
Next N
Application.StatusBar = ""
End Sub
La macro se lance avec un bouton dans la page Liste.
J'ai détecté quelques problèmes de pages, que j'ai résolu en créant des feuilles vierges pour que la macro aille jusqu'au bout.
Je n'ai rien contrôlé au niveau des plannings profs.
... Bon courage.
Waouhhhh ! Vous avez parfaitement cerné et résolu mon problème malgré mes incohérences !
Merci infiniment.
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Salbingu,
Comme je n'ai ni à faire la mise au point, ni surtout la vérification, je peux m'amuser. :)
J'ai rajouté dans le fichier une feuille Classes.
Un appui sur le bouton rapatrie tous les noms des classes.
Un appui sur le nom d'une classe rapatrie le planning de cette classe. Rapide et efficace.
Je pense que cela peut vous être utile pour voir un planning sans fouiller dans toutes les feuilles.
( évidemment on ne peut pas modifier un planning à partir de cette page, c'est juste de la visualisation. )
 

Pièces jointes

  • EMPLOIS_ENSEIGNANTS (6).xlsm
    970.4 KB · Affichages: 15

salbingu

XLDnaute Nouveau
Bonjour Salbingu,
Comme je n'ai ni à faire la mise au point, ni surtout la vérification, je peux m'amuser. :)
J'ai rajouté dans le fichier une feuille Classes.
Un appui sur le bouton rapatrie tous les noms des classes.
Un appui sur le nom d'une classe rapatrie le planning de cette classe. Rapide et efficace.
Je pense que cela peut vous être utile pour voir un planning sans fouiller dans toutes les feuilles.
( évidemment on ne peut pas modifier un planning à partir de cette page, c'est juste de la visualisation. )
Bonsoir sylvanu. C'est toujours un plaisir de vous lire. Votre idée est géniale et me sera effectivement d'une grande aide.
Votre message arrive alors que je travaille sur un changement conditionnel de la couleur de l'onglet.
Merci à vous
 

Discussions similaires

Réponses
4
Affichages
304