XL 2016 chercher une valeur

  • Initiateur de la discussion Initiateur de la discussion Seddiki_adz
  • Date de début Date de début

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 !

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...
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

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
 
@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

@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
 
@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

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

Dernière édition:
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
 
- 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
15
Affichages
312
Réponses
4
Affichages
193
Réponses
11
Affichages
379
Réponses
6
Affichages
869
Réponses
4
Affichages
611
Retour