Option Explicit
'NumProf : Numéro d'un Prof (exemple : 91, 93, ou 113)
' NS...
Option Explicit
'NumProf : Numéro d'un Prof (exemple : 91, 93, ou 113)
' NS : numéro salle : 1 à 20 ; pas plus, car en Feuil1,
' de A3 à A22, ça va de 01 à 20 ; dessous, il manque
' 21 à 25, et y'a pas de place sous la ligne 22 !
' JR : jour = 1 à 5 pour lundi à vendredi ; c'est en J2
' MS : matin ou soir (c'est la donnée qui est en J3)
' NP : n° du prof ou surveillant (1 à 3)
Function NumProf(NS As Byte, JR As Byte, MS$, NP As Byte) As Integer
Dim lig As Byte, col As Byte: lig = NS + 2
col = (JR - 1) * 6 - 3 * (MS = "soir") + NP + 1
NumProf = Worksheets("Feuil1").Cells(lig, col)
End Function
Merci beaucoup Mr soanBonsoir Seddiki,
ton fichier en retour ; sur "Feuil2", lis d'abord toutes les infos que j'ai notées, en particulier ce qu'il y a en i15 et i16 ; après avoir fait tous les tests nécessaires, merci de me donner ton avis. remarque : ne me demande pas de faire l'adaptation en "Feuil1" pour rajouter les 5 salles manquantes : c'est ton job de le faire ! selon le texte الحـــراس الاحتياطيــون de tes cellules fusionnées A23:A33, tu devras mettre plus bas tes gardes de réserve ! إلى اللقاء (= au revoir, ciao, sayonara)
code VBA (16 lignes) :
VB:Option Explicit 'NumProf : Numéro d'un Prof (exemple : 91, 93, ou 113) ' NS : numéro salle : 1 à 20 ; pas plus, car en Feuil1, ' de A3 à A22, ça va de 01 à 20 ; dessous, il manque ' 21 à 25, et y'a pas de place sous la ligne 22 ! ' JR : jour = 1 à 5 pour lundi à vendredi ; c'est en J2 ' MS : matin ou soir (c'est la donnée qui est en J3) ' NP : n° du prof ou surveillant (1 à 3) Function NumProf(NS As Byte, JR As Byte, MS$, NP As Byte) As Integer Dim lig As Byte, col As Byte: lig = NS + 2 col = (JR - 1) * 6 - 3 * (MS = "soir") + NP + 1 NumProf = Worksheets("Feuil1").Cells(lig, col) End Function
soan
Merci beaucoup Mr soan
Option Explicit
'NumProf : Numéro d'un Prof (exemple : 91, 93, ou 113)
' NS : numéro salle : 1 à 20 ; pas plus, car en Feuil1,
' de A3 à A22, ça va de 01 à 20 ; dessous, il manque
' 21 à 25, et y'a pas de place sous la ligne 22 !
' JR : jour = 1 à 5 pour lundi à vendredi ; c'est en J2
' MS : matin ou soir (c'est la donnée qui est en J3)
' NP : n° du prof ou surveillant (1 à 3)
Function NumProf(NS As Byte, JR As Byte, MS$, NP As Byte) As Integer
Dim lig As Byte, col As Byte: lig = NS + 2
col = (JR - 1) * 6 - 3 * (MS = "soir") + NP + 1
NumProf = Worksheets("Feuil1").Cells(lig, col)
End Function
'NumRemp : Numéro d'un Remplaçant (exemple : 65, 80, ou 87)
' NS : numéro salle : 1 à 10
' JR : jour = 1 à 5 pour lundi à vendredi ; c'est en J2
' MS : matin ou soir (c'est la donnée qui est en J3)
' NR : n° du remplaçant (1 à 3)
Function NumRemp(NS As Byte, JR As Byte, MS$, NR As Byte) As Integer
Dim lig As Byte, col As Byte: lig = NS + 23
col = (JR - 1) * 6 - 3 * (MS = "soir") + NR + 1
NumRemp = Worksheets("Feuil1").Cells(lig, col)
End Function
mes sincères salutations@Seddiki
ton fichier en retour ; lis bien toutes les infos que j'ai notées dans le cadre, en particulier les phrases en couleur ; j'ai ajouté des données fictives pour les remplaçants ; tu verras que la fonction NumRemp() est presque identique à la fonction NumProf().
code VBA (30 lignes) :
VB:Option Explicit 'NumProf : Numéro d'un Prof (exemple : 91, 93, ou 113) ' NS : numéro salle : 1 à 20 ; pas plus, car en Feuil1, ' de A3 à A22, ça va de 01 à 20 ; dessous, il manque ' 21 à 25, et y'a pas de place sous la ligne 22 ! ' JR : jour = 1 à 5 pour lundi à vendredi ; c'est en J2 ' MS : matin ou soir (c'est la donnée qui est en J3) ' NP : n° du prof ou surveillant (1 à 3) Function NumProf(NS As Byte, JR As Byte, MS$, NP As Byte) As Integer Dim lig As Byte, col As Byte: lig = NS + 2 col = (JR - 1) * 6 - 3 * (MS = "soir") + NP + 1 NumProf = Worksheets("Feuil1").Cells(lig, col) End Function 'NumRemp : Numéro d'un Remplaçant (exemple : 65, 80, ou 87) ' NS : numéro salle : 1 à 10 ' JR : jour = 1 à 5 pour lundi à vendredi ; c'est en J2 ' MS : matin ou soir (c'est la donnée qui est en J3) ' NR : n° du remplaçant (1 à 3) Function NumRemp(NS As Byte, JR As Byte, MS$, NR As Byte) As Integer Dim lig As Byte, col As Byte: lig = NS + 23 col = (JR - 1) * 6 - 3 * (MS = "soir") + NR + 1 NumRemp = Worksheets("Feuil1").Cells(lig, col) End Function
soan
attend
MsgBox Cells(NumProf(B17;$J$2;$J$3;2)+2, 11)
MsgBox Cells(NumProf(B17;$J$2;$J$3;2)+2, "K")
si j'ai bien compris : pour la plage K3:K179, les "a1" à "a177" sont des noms de profs ? oui@Seddiki
tu as écrit : « les noms des profs au lieu des chiffres (équivalence) colonne k feuil2 ».
si j'ai bien compris : pour la plage K3:K179, les "a1" à "a177" sont des noms de profs ? si oui, c'est bien avec ça qu'on peut faire ta demande ; sinon, tu devras les ajouter ! un exemple de correspondance serait :
en D17, il y a 7 ; et le nom du 7ème prof à trouver est "a7", qui est en K9 ; c'est bien ça ? si oui, il suffit de lire la cellule dont le n° colonne est 11 (colonne K) et dont le n° ligne est n° prof + 2 (car il y a 2 lignes vides au-dessus) ; essaye cette instruction VBA :
MsgBox Cells(NumProf(B17;$J$2;$J$3;2)+2, 11)
ou si tu préfères :
MsgBox Cells(NumProf(B17;$J$2;$J$3;2)+2, "K")
si le N° du Prof est 7, ça doit afficher K9, donc "a7" ; je n'ai pas besoin d'utiliser la colonne L !
ce sont juste des pistes ; je dois arrêter mon PC, et comme je ne serai pas disponible pendant très longtemps, je ne pourrai probablement pas te répondre avant ce soir (très tard) ; peut-être même que je ne pourrai pas te répondre avant demain matin, ou même demain soir ; je t'en parle pour que tu ne sois pas étonné que je ne réponde pas à tes posts : c'est juste que je vais être absent pendant très longtemps (pour régler des affaires personnelles).
il n'y a pas de fichier joint ; c'est normal car je n'en n'ai pas mis ; ce n'est pas un oubli ; avec de la chance, ce que j'ai écrit te suffira pour faire ce que tu as demandé ; sinon, je t'aiderai plus tard quand je serai de nouveau disponible ; mais peut-être qu'un autre contributeur t'auras trouvé une solution entre-temps ?
soan
Option Explicit
'NomProf : Nom d'un Prof (exemple : 91, 93, ou 113)
' NS : numéro salle : 1 à 20 ; pas plus, car en Feuil1,
' de A3 à A22, ça va de 01 à 20 ; dessous, il manque
' 21 à 25, et y'a pas de place sous la ligne 22 !
' JR : jour = 1 à 5 pour lundi à vendredi ; c'est en J2
' MS : matin ou soir (c'est la donnée qui est en J3)
' NP : n° du prof ou surveillant (1 à 3)
Function NomProf(NS As Byte, JR As Byte, MS$, NP As Byte) As String
Dim lig As Byte, col As Byte: lig = NS + 2
col = (JR - 1) * 6 - 3 * (MS = "soir") + NP + 1
NomProf = Cells(Worksheets("Feuil1").Cells(lig, col) + 2, 11)
End Function
'NomRemp : Nom d'un Remplaçant (exemple : 65, 80, ou 87)
' NS : numéro salle : 1 à 10
' JR : jour = 1 à 5 pour lundi à vendredi ; c'est en J2
' MS : matin ou soir (c'est la donnée qui est en J3)
' NR : n° du remplaçant (1 à 3)
Function NomRemp(NS As Byte, JR As Byte, MS$, NR As Byte) As String
Dim lig As Byte, col As Byte: lig = NS + 23
col = (JR - 1) * 6 - 3 * (MS = "soir") + NR + 1
NomRemp = Cells(Worksheets("Feuil1").Cells(lig, col) + 2, 12)
End Function
avant, regarde d'abord le fichier de mon post #12, et dis-moi ce que tu en penses.
dans ton post #8, tu as écrit :
« les noms des profs au lieu des chiffres (équivalence) colonne k feuil2 »
c'est ce que j'ai fait pour les Profs ; j'ai même ajouté les Remplaçants.
soan