Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

adkheir

XLDnaute Occasionnel
bonjour le forum
je vous demande de bien vouloir m'aider comment modifier la macro inclue dans le fichier joint

dans le classeur modif_macro je voudrais inserer une ligne dans feuil3 (comme l'exemple de la feuil3_1)
puis mettre un seul surveillant au lieu de deux et supprimer la matiere completement

la macro dans feuil3 s'execute normalement sauf que je veux mettre 4 sessions au lieu de 3 ,supprimer la matiere , et ne laisser qu'un seul surveillant par salle

merci pour votre precieuse aide
 

Pièces jointes

Dernière édition:
Re : modifier macro

bonjour le forum
je vous demande de bien vouloir m'aider comment modifier la macro inclue dans le fichier joint

dans le classeur modif_macro je voudrais inserer une ligne dans feuil3 (comme l'exemple de la feuil3_1)
puis mettre un seul surveillant au lieu de deux et supprimer la matiere completement

la macro dans feuil3 s'execute normalement sauf que je veux mettre 4 sessions au lieu de 3 ,supprimer la matiere , et ne laisser qu'un seul surveillant par salle

merci pour votre precieuse aide

bonjour
Merci votre aide aussi precieuse que votre dévouement au sein forum d'ENTRAIDE excel
 
Re : modifier macro

Salut,

en modifiant juste cette partie de code comme ceci

Code:
            c = d & vbLf & d(1, -1) 
            d(1, 0) = d(1, 0) + 1
            d(2, 0) = d(2, 0) + 1
            d(3, 0) = d(3, 0) + 1 ' à rajouter
            [filtre].AutoFilter Field:=3


ça t'irais ?

A+++
 
Re : modifier macro

Salut,

en modifiant juste cette partie de code comme ceci

Code:
            c = d & vbLf & d(1, -1) 
            d(1, 0) = d(1, 0) + 1
            d(2, 0) = d(2, 0) + 1
            d(3, 0) = d(3, 0) + 1 ' à rajouter
            [filtre].AutoFilter Field:=3


ça t'irais ?

A+++


merci pour votre réponse
j'ai modifié la macro seulement je veux aussi si c'est possible supprimer la matière , c'est de placer seulement les x1 , x2 ... x45

voici la macro après modification

# Sub remplitSalles()
Dim c As Range
Dim d As Range
Dim e As Range
MaxRow = [B65536].End(xlUp).Row 'colonne B,les créneaux
MaxCol = [IV2].End(xlToLeft).Column 'ligne2, les salles
Matière = 0
For Each c In Range([C3], Cells(MaxRow, MaxCol))
re: Matière = Matière + 1: If Matière > [Matières].Count Then Matière = 1
If c.Row > 3 Then
Sheets("Feuil3").Activate
Set e = Range(Cells(3, c.Column), c).Find(What:=Range("Matières").Cells(Matière).Value, LookIn:=xlFormulas, LookAt:=xlPart)
End If
If Not e Is Nothing Then GoTo re
[filtre].AutoFilter Field:=3, Criteria1:=[Matières].Cells(Matière)
Set d = [filtre].Offset(1, 0)
Do While d.EntireRow.Hidden = True
Set d = d(2, 1)
Loop
c = d & vbLf & d(1, -1) & "+" & vbLf & d(2, -1)
d(1, 0) = d(1, 0) + 1
d(2, 0) = d(2, 0) + 1
[filtre].AutoFilter Field:=3
c = d & vbLf & d(1, -1)
d(1, 0) = d(1, 0) + 1
d(2, 0) = d(2, 0) + 1
d(3, 0) = d(3, 0) + 1
[filtre].Sort Key1:=Sheets("Data").[C2], Order1:=xlAscending, Key2:=Sheets("Data").[B2], Order2:=xlAscending, Header:=xlGuess
Set e = Nothing
Next
Range([C3], Cells(MaxRow, MaxCol)).EntireColumn.AutoFit
End Sub
 

Pièces jointes

Dernière édition:
Re : modifier macro

Salut,

quand tu écris

Code:
c = d & vbLf & d(1, -1)

remplaces le par
Code:
c = d(1, -1)

n'aimerais tu pas améliorer la vitesse du code ?

A+++




très bien merci d'avoir répondu
effectivement j'aimerai augmenter la vitesse du code si vous voulez bien m'aider
excusez moi j'ai oublier de vous dire que j'ai changé le code comme vous m'avez indiquez mai la matière est aussi générée par le code!! ce que je veux c'est ne doit pas figurer dans la cellule

merci encore
 

Pièces jointes

Dernière édition:
Re : modifier macro

Salut,

OK pour accélerer le code et prendre en compte les changements:

J'essaie de comprendre ce que tu veux faire :

tu as 45 personnes divisés en 15 matiéres ,
si je prend Lundi 1ere session salle 1 je mets X1, salle 2 X4
donc en salle 16 X2, salle 17 X5,
donc en salle 10 2eme session X3t, salle 11 2eme session X6 et ainsi de suite ...

Ou est-ce un autre mode de fonctionnement ?
 
Re : modifier macro

Salut,

Tiens regardes testes ceci pour voir si j'ai bien compris ce que tu voulais.


J'ai redéfinis Nomprofs avec un decaler, ça évite les blancs ..

Je passe par un tableau VBA comme cela on écrit qu'une fois dans la feuille => c'est ça qui accélère le code.

J'explique peu le code ci dessous , regardes le KikideZon pour des explications sur les variables tableau

Code:
Const PlageProf$ = "NomsProfs" 'NOm de la liste définie
'J'ai redéfini avec =DECALER(data!$A$2;;;NBVAL(data!$A:$A)-1), comme cela tu peux ajouter
'ou supprimer des profs le nom défini contiendra que des noms
'Tu peux faire la même chose pour les matières ou les classes

Dim TabProf 'Tableau des Profs
Dim T 'tableau du Planning

Sub InitTab()
  
  With Feuil5 'ou sheets("planning"),+2 puisque cellule fusionnée en colonne B
    T = Range(.[C3], .Cells(.[B65536].End(xlUp).Row + 2, _
                                .[IV2].End(xlToLeft).Column)).Value
  End With
  
  TabProf = Range(PlageProf).Value 'ou range("NomsProfs").value
End Sub


Sub RempliSallesZon()
  Dim I&, J&, K&
  InitTab
  K = 1
  For I = LBound(T) To UBound(T) Step 3 'On parcourt les lignes de 3 en 3
    For J = LBound(T, 2) To UBound(T, 2) 'On parcourt les colonnes 1 à 1
      If T(I, J) <> "" And T(I + 1, J) <> "" Then 'a condition que les cellules  C3 et C4 ou D3 et  D4
         T(I + 2, J) = TabProf(K, 1)                ' jusqu'a W3 et W4 ne soient pas vides
         K = IIf(K = UBound(TabProf), 1, K + 1)
      End If
    Next J
  Next I

  With Feuil5
    .[C3].Resize(UBound(T), UBound(T, 2)) = T
  End With
End Sub

Si c'est ok pour toi, on attaquera ensuite l'autre partie que tu demandes dans le fichier, peut être quand te plongeant dans les tableaux VBA tu auras un début de piste à me donner si tu as envie de mettre les mains dans le camboui sinon je te le ferai à ma façon sans explication(ce qui n'est pas l'objectif du forum).

A+++


PS QQ1 sait où est passé le Wiki au fait ?
 

Pièces jointes

Re : modifier macro

Salut
Effectivement c'est ce que je veux de cette macro a part que un professeur ne peut être dans deux salle en même temps.
ca me range et ca me met en colère de ne pas connaitre le VBA ,pourrai-je vous demandé un lien ou on peut apprendre mais en multimédia!
merci de votre aide et de votre gentillesse .
 

Pièces jointes

Re : modifier macro

Salut,

Dans la feuille Data, je n'ai mis que 4 professeurs pour nomprofs, si tu mets au moins le même nb de profs que de salle y a rien à modifer ça fonctionne.


Dès que j'ai le temps, je te fais la 2 eme partie.


A+++
 
Re : modifier macro

Salut,

Je t'ai fait la 2 eme partie, j'en ai profité pour créer à la volée tous tes tableaux de présence avec le nom des profs définis en feuille data
Code:
Sub Princ()
  InitTab 'initialisation des données
  CopierColler 'à partir du tableau A1:E10 on crée chaque tableau de présence pour chaque prof
  RemplirNomprofesseur 'mets les noms de professeurs stockés en feuille data
 ' EffaceIndiv 'on efface les données dans tableau individuel, ne sert que si on sépare les procédures
  RempliSallesZon 'remplissage de la feuille planning
  RempliIndividuel 'remplissage de la feuille tableau indiduel
End Sub

Tu peux utiliser ces procédures indépendamment des unes des autres , par contre il faut penser à initiliaser les tableaux avec inittab en début de chacune d'elle.

J'ai pas modifié la proc associée au bouton GO.

Une piste, améliorer la saisie dans planning avec le clic droit par exemple que toutes ces listes de validation...Pratique mais pas forcémment du goût de certains utilisateurs.


A+++
 

Pièces jointes

Re : modifier macro

salut;
Super ! effectivement c'est ce que je voulais de cette macro seulement des fois j'ai des messages d'erreurs 13"For I = LBound(T) To UBound(T) Step 3 'On parcourt les lignes de 3 en 3" et quand je lance la macro avec le bouton Go tout ce que j'ai mis comme salle et matière s'efface !!! je ne comprends pas ce qui ce passe.
autre chose est qu'il serait possible de programmer des séances de surveillances pour un prof la matinée de 8h a 12 ou de 13h a17h.mais pas les deux c'est a dire qu'un prof X1 le mieux pour lui c'est de surveiller de 2 séances consécutives de 8a10 et de 10 a 12 et le soir il sera libre et l'autre par exemple X2 la matinée serait libre mais il surveille deux séances consécutives aussi de 13 a 15 et de 15 a17.

S'il y a une astuces c'est oui pour faciliter la saisie et milles merci de cette aide
 

Pièces jointes

Dernière édition:
Re : modifier macro

salut;
Super ! effectivement c'est ce que je voulais de cette macro seulement des fois j'ai des messages d'erreurs 13"For I = LBound(T) To UBound(T) Step 3 'On parcourt les lignes de 3 en 3" et quand je lance la macro avec le bouton Go tout ce que j'ai mis
S'il y a une astuces c'est oui pour faciliter la saisie et milles merci de cette aide

Dans mon dernier post je disais

Tu peux utiliser ces procédures indépendamment des unes des autres , par contre il faut penser à initiliaser les tableaux avec inittab en début de chacune d'elle.



salut;

autre chose est qu'il serait possible de programmer des séances de surveillances pour un prof la matinée de 8h a 12 ou de 13h a17h.mais pas les deux c'est a dire qu'un prof X1 le mieux pour lui c'est de surveiller de 2 séances consécutives de 8a10 et de 10 a 12 et le soir il sera libre et l'autre par exemple X2 la matinée serait libre mais il surveille deux séances consécutives aussi de 13 a 15 et de 15 a17.

S'il y a une astuces c'est oui pour faciliter la saisie et milles merci de cette aide


c'est possible ...laisse passer le Week ENd

A+++
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
643
Retour