XL 2016 chercher une valeur

Seddiki_adz

XLDnaute Impliqué
Bonjour
dans le fichier joint , j'ai deux feuils
je veut décaler le tableau feuil1 vers la feuil2 si possible
Merci d'avance
 

Pièces jointes

  • rep p-s.xlsm
    50.7 KB · Affichages: 4
Solution
Bonsoir 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...

soan

XLDnaute Barbatruc
Inactif
Bonsoir 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
 

Pièces jointes

  • rep p-s.xlsm
    39.9 KB · Affichages: 5

Seddiki_adz

XLDnaute Impliqué
Bonsoir 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
 

soan

XLDnaute Barbatruc
Inactif
@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
 

Pièces jointes

  • rep p-s (1).xlsm
    42.1 KB · Affichages: 1

Seddiki_adz

XLDnaute Impliqué
@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
mes sincères salutations
Merci
 

soan

XLDnaute Barbatruc
Inactif
@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, et j'ai pas mis d'fichier joint (c'est pas un oubli).​

soan
 
Dernière édition:

Seddiki_adz

XLDnaute Impliqué
@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
si j'ai bien compris : pour la plage K3:K179, les "a1" à "a177" sont des noms de profs ? oui
en D17, il y a 7 ; et le nom du 7ème prof à trouver est "a7", qui est en K9 ; c'est bien ça ? oui
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Seddiki,

j'suis là plus tôt qu'prévu ; ton nouveau fichier en retour ! :)

sur "Feuil2" : fais d'abord des tests pour ton tableau des Profs ; puis plus bas pour ton tableau des Remplaçants ; les noms des Profs sont en colonne K ; comme l'ancienne colonne L était inutile, je l'ai utilisée pour y mettre des noms de remplaçants fictifs (exemple : r4).


code VBA (30 lignes) ; attention : c'est 2 nouvelles fonctions ! NomProf() au lieu de NumProf() ; et NomRemp() au lieu de NumRemp() ; toutes les 2 retournent un String (une chaîne de caractères) au lieu d'un Integer (nombre entier) ; regarde attentivement toutes les différences, en particulier pour la dernière ligne de chaque sub.

VB:
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

soan
 

Pièces jointes

  • rep p-s (1) (1).xlsm
    43.5 KB · Affichages: 6
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
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
 

Statistiques des forums

Discussions
312 107
Messages
2 085 360
Membres
102 874
dernier inscrit
Petro2611