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

Image 1.jpg


c'est dans mon post #7 que j'avais écrit « ok ! 😊 » ; c'était pour répondre à ton post #6, où tu étais content que ça marche puisque suite à mon post #5 (que tu as cité), tu as écrit :​

Image 2.jpg


donc maint'nant tu as changé d'avis, et tu remets en cause mon post #5 ! a) d'abord, ça marche très bien sur mon fichier exemple ; si ça ne marche pas sur ton fichier réel, je ne sais pas pourquoi ! (peut-être as-tu fait une fausse manip au niveau d'une feuille, ou mal recopié mon code VBA ?) ; b) tu écris simplement « mais ça marche pas », sans expliquer ce qui ne va pas ! comment veux-tu que j'essaye d'arranger ce qui cloche si tu ne le décrit pas ! peut-être aussi que tu as simplement eu l'impression que ça ne marche pas, mais qu'en réalité ça marche quand même ?

peut-être que tu n'as pas fourni un fichier suffisamment représentatif de ton fichier réel, et que dans ton vrai fichier les données sont à un autre emplacement ? (il suffit que ce soit une ligne plus bas, ou une colonne à droite) ; note bien que tu n'indiques rien du tout ! y'a aucune donnée ; y'a aucune mention de feuille ; y'a aucune mention de cellule ; aucune phrase du genre « il devrait y avoir la donnée 15 au lieu de la donnée 8 » ; peut-être même que l'erreur que tu aurais vue n'est pas sur une des feuilles mais dans le code VBA ? si oui, dans quelle sub ? dans quelle ligne de cette sub ? bref, tout manque !!! et tu veux que je trouve une solution à ton problème qui n'en n'est peut-être pas un ? désolé, mais je ne suis pas magicien, et je n'ai pas de boule de cristal ! 😁

soan
 

Seddiki_adz

XLDnaute Impliqué
@Seddiki

Regarde la pièce jointe 1140421

c'est dans mon post #7 que j'avais écrit « ok ! 😊 » ; c'était pour répondre à ton post #6, où tu étais content que ça marche puisque suite à mon post #5 (que tu as cité), tu as écrit :​

Regarde la pièce jointe 1140424

donc maint'nant tu as changé d'avis, et tu remets en cause mon post #5 ! a) d'abord, ça marche très bien sur mon fichier exemple ; si ça ne marche pas sur ton fichier réel, je ne sais pas pourquoi ! (peut-être as-tu fait une fausse manip au niveau d'une feuille, ou mal recopié mon code VBA ?) ; b) tu écris simplement « mais ça marche pas », sans expliquer ce qui ne va pas ! comment veux-tu que j'essaye d'arranger ce qui cloche si tu ne le décrit pas ! peut-être aussi que tu as simplement eu l'impression que ça ne marche pas, mais qu'en réalité ça marche quand même ?

peut-être que tu n'as pas fourni un fichier suffisamment représentatif de ton fichier réel, et que dans ton vrai fichier les données sont à un autre emplacement ? (il suffit que ce soit une ligne plus bas, ou une colonne à droite) ; note bien que tu n'indiques rien du tout ! y'a aucune donnée ; y'a aucune mention de feuille ; y'a aucune mention de cellule ; aucune phrase du genre « il devrait y avoir la donnée 15 au lieu de la donnée 8 » ; peut-être même que l'erreur que tu aurais vue n'est pas sur une des feuilles mais dans le code VBA ? si oui, dans quelle sub ? dans quelle ligne de cette sub ? bref, tout manque !!! et tu veux que je trouve une solution à ton problème qui n'en n'est peut-être pas un ? désolé, mais je ne suis pas magicien, et je n'ai pas de boule de cristal ! 😁

soan
hhh
 

soan

XLDnaute Barbatruc
Inactif
@Seddiki

non
ça marche très bien

ah bon ! tu me rassures ! à un moment donné, pourtant, il m'avait légèrement semblé que tu avais parlé d'une erreur, puisque tu as écrit dans ton post #17 : « mais ça marche pas » ; admettons que c'était juste une lubie aussi soudaine qu'inopportune ! 😁



mais moi j'ai ajouté une nouvelle question

ah oui ? tiens donc ! quelle question ? vu qu'à chaque fois que je t'ai apporté une solution tu as fait une nouvelle demande, en posant une nouvelle question, j'ai un peu de mal à m'y retrouver parmi toutes tes questions successives ! 😁

c'est par rapport à ton post #13 ?

je vais faire une colonne pour compter le nombre de surveillants pour chaque prof

ou peut-être ton post #16 ?

pour compter le nombre de séances pour chaque prof je mets la formule =NB.SI(Feuil1!$B$3:$AE$26;K3) en feuil2 ?

alors ? c'est quoi au juste ? un nombre de surveillants ou un nombre de séances ? des « surveillants » = des personnes ; mais des « séances », c'est pas des personnes, c'est en quelque sorte des périodes de temps où il se passe quelque chose ; par exemple : je préfère une séance au cinéma qu'une séance chez le dentiste ! (= je préfère voir un bon film qu'aller me faire arracher une dent !)



comme tu as déjà demandé beaucoup de choses dans cette discussion, je te propose d'ouvrir un autre sujet, en mettant un fichier exemple avec quelques données, et aussi quelques exemples des résultats attendus ; indique bien quelles données sont concernées, et leur emplacement ; exemple : sur "Feuil2", en B5:F28 ; même chose pour l'emplacement des résultats attendus.

j'essayerai de trouver une solution si ton énoncé est suffisamment explicite, sinon je laisserai tomber : c'est à toi de bien décrire ce qu'il faut ; on n'a pas à perdre du temps pour essayer de trouver ce qui manque dans une description incomplète du problème à résoudre !

quand il s'agit de code VBA, tu dois indiquer le module standard concerné (ex : Module1), ou dire s'il est dans ThisWorkbook, ou dans le module de "Feuil5", ou dans tel UserForm ; puis il faut indiquer quelle sub est concernée, quelle ligne de code de la sub pose problème, quelle erreur se produit (exemple A : ça me donne 20 au lieu de 50 ; exemple B : ça fait une soustraction au lieu d'une somme ; exemple C : ça fait une division par 0 ; et chaque fois que possible : quelle donnée ? sur quelle feuille et quelle plage de cellules ?) ; c'est une erreur de compilation ? une erreur d'exécution ? ou une erreur de logique ? (numéro de l'erreur, et texte exact du message d'erreur).​

soan
 

Seddiki_adz

XLDnaute Impliqué
@Seddiki



ah bon ! tu me rassures ! à un moment donné, pourtant, il m'avait légèrement semblé que tu avais parlé d'une erreur, puisque tu as écrit dans ton post #17 : « mais ça marche pas » ; admettons que c'était juste une lubie aussi soudaine qu'inopportune ! 😁





ah oui ? tiens donc ! quelle question ? vu qu'à chaque fois que je t'ai apporté une solution tu as fait une nouvelle demande, en posant une nouvelle question, j'ai un peu de mal à m'y retrouver parmi toutes tes questions successives ! 😁

c'est par rapport à ton post #13 ?



ou peut-être ton post #16 ?



alors ? c'est quoi au juste ? un nombre de surveillants ou un nombre de séances ? des « surveillants » = des personnes ; mais des « séances », c'est pas des personnes, c'est en quelque sorte des périodes de temps où il se passe quelque chose ; par exemple : je préfère une séance au cinéma qu'une séance chez le dentiste ! (= je préfère voir un bon film qu'aller me faire arracher une dent !)



comme tu as déjà demandé beaucoup de choses dans cette discussion, je te propose d'ouvrir un autre sujet, en mettant un fichier exemple avec quelques données, et aussi quelques exemples des résultats attendus ; indique bien quelles données sont concernées, et leur emplacement ; exemple : sur "Feuil2", en B5:F28 ; même chose pour l'emplacement des résultats attendus.

j'essayerai de trouver une solution si ton énoncé est suffisamment explicite, sinon je laisserai tomber : c'est à toi de bien décrire ce qu'il faut ; on n'a pas à perdre du temps pour essayer de trouver ce qui manque dans une description incomplète du problème à résoudre !

quand il s'agit de code VBA, tu dois indiquer le module standard concerné (ex : Module1), ou dire s'il est dans ThisWorkbook, ou dans le module de "Feuil5", ou dans tel UserForm ; puis il faut indiquer quelle sub est concernée, quelle ligne de code de la sub pose problème, quelle erreur se produit (exemple A : ça me donne 20 au lieu de 50 ; exemple B : ça fait une soustraction au lieu d'une somme ; exemple C : ça fait une division par 0 ; et chaque fois que possible : quelle donnée ? sur quelle feuille et quelle plage de cellules ?) ; c'est une erreur de compilation ? une erreur d'exécution ? ou une erreur de logique ? (numéro de l'erreur, et texte exact du message d'erreur).​

soan
ok merci je parle de poste 16
que dieu te protège
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Seddiki,

voici la nouvelle version du fichier. :)

A) sur "Feuil1"

* j'ai ajouté les 5 salles manquantes (lignes 23 à 27).
ce sont les salles n° 21 à 25 (avec des données fictives).

* bien sûr, après ajout, les remplaçants sont plus bas :
lignes 28 à 38 (y compris la ligne d'en-têtes).

B) sur "Feuil2"

* le tableau "Profs" en B7:E32 est plein : grâce aux 5 salles ajoutées,
j'ai pu étendre les formules jusqu'en ligne 32.

* n'oublie pas que tu peux faire varier les données de J2 et J3 ; fais
plusieurs vérifs pour les Profs et les Remplaçants.

* pour les noms des profs ou des remplaçants, j'ai mis une largeur
de colonne de 18 ; ça devrait être suffisant pour les vrais noms de
ton fichier réel.

* regarde les colonnes L à R ; "Nb S" est le nombre de séances.
formule en N4 : =NB.SI(Feuil1!$B$3:$AE$27;L4)
formule en R4 : =NB.SI(Feuil1!$B$29:$AE$38;P4)
(ces 2 formules sont déjà étendues jusqu'en ligne 180)

pour compter le nombre de séances pour chaque prof je mets la formule =NB.SI(Feuil1!$B$3:$AE$26;K3) en feuil2 ?

* tu avais choisi la bonne fonction : c'est bien NB.SI() ! :) 👍

* la ligne de début est bien la ligne 3 (pour la salle n° 01).

* la ligne de fin n'est pas 26, car pour la dernière salle :
c'était la ligne 22 (salle n° 20) avant ajout des 5 salles ;
c'est devenu la ligne 27 (salle n° 25) après ajout.

* pour les remplaçants, c'est des lignes 29 à 38 :
lignes des salles n° 01 à 10 (ligne d'en-têtes exclue).



code VBA (30 lignes) ; attention : y'a eu des petites modifs !

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, "M")
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 + 28
  col = (JR - 1) * 6 - 3 * (MS = "soir") + NR + 1
  NomRemp = Cells(Worksheets("Feuil1").Cells(lig, col) + 2, "Q")
End Function

soan
 

Pièces jointes

  • rep p-s (1) (2).xlsm
    45.4 KB · Affichages: 3

Seddiki_adz

XLDnaute Impliqué
Bonjour Seddiki,

voici la nouvelle version du fichier. :)

A) sur "Feuil1"

* j'ai ajouté les 5 salles manquantes (lignes 23 à 27).
ce sont les salles n° 21 à 25 (avec des données fictives).

* bien sûr, après ajout, les remplaçants sont plus bas :
lignes 28 à 38 (y compris la ligne d'en-têtes).

B) sur "Feuil2"

* le tableau "Profs" en B7:E32 est plein : grâce aux 5 salles ajoutées,
j'ai pu étendre les formules jusqu'en ligne 32.

* n'oublie pas que tu peux faire varier les données de J2 et J3 ; fais
plusieurs vérifs pour les Profs et les Remplaçants.

* pour les noms des profs ou des remplaçants, j'ai mis une largeur
de colonne de 18 ; ça devrait être suffisant pour les vrais noms de
ton fichier réel.

* regarde les colonnes L à R ; "Nb S" est le nombre de séances.
formule en N4 : =NB.SI(Feuil1!$B$3:$AE$27;L4)
formule en R4 : =NB.SI(Feuil1!$B$29:$AE$38;P4)
(ces 2 formules sont déjà étendues jusqu'en ligne 180)



* tu avais choisi la bonne fonction : c'est bien NB.SI() ! :) 👍

* la ligne de début est bien la ligne 3 (pour la salle n° 01).

* la ligne de fin n'est pas 26, car pour la dernière salle :
c'était la ligne 22 (salle n° 20) avant ajout des 5 salles ;
c'est devenu la ligne 27 (salle n° 25) après ajout.

* pour les remplaçants, c'est des lignes 29 à 38 :
lignes des salles n° 01 à 10 (ligne d'en-têtes exclue).



code VBA (30 lignes) ; attention : y'a eu des petites modifs !

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, "M")
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 + 28
  col = (JR - 1) * 6 - 3 * (MS = "soir") + NR + 1
  NomRemp = Cells(Worksheets("Feuil1").Cells(lig, col) + 2, "Q")
End Function

soan
bonsoir
suivant le nombre des sciences Nb S la distribution n'est normal (injustice )
peut être GenerateUniqueRandom ActiveSheet
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Seddiki,

suivant le nombre des sciences Nb S la distribution n'est pas normale (injustice)
peut être GenerateUniqueRandom ActiveSheet

je traduis par :

« suivant le nombre de séances Nb S, la distribution est inégale (c'est injuste) ;
peut-être : GenerateUniqueRandom ActiveSheet »

sinon, explique mieux ; en particulier « la distribution n'est pas normale » ; est-ce que c'est bien le mot « distribution » ? en quoi cette distribution n'est pas normale ? il faudrait que tu donnes un exemple chiffré ! exemple : sur la feuille "X", en B2:F20, il y a ces nombres ; ça ne va pas : je voudrais ces autres nombres.

moi, j'suis pas très calé en statistiques ➯ c'est plutôt toi qui peut trouver une solution ! je pense que je ne pourrai pas t'aider là-dessus ; mais de toutes façons, ce sujet fait déjà 2 pages ; il faudrait vraiment que tu crées un autre sujet !

soan
 
Dernière édition:

Seddiki_adz

XLDnaute Impliqué
Bonjour Seddiki,



je traduis par :

« suivant le nombre de séances Nb S, la distribution est inégale (c'est injuste) ;
peut-être : GenerateUniqueRandom ActiveSheet »

sinon, explique mieux ; en particulier « la distribution n'est pas normale » ; est-ce que c'est bien le mot « distribution » ? en quoi cette distribution n'est pas normale ? il faudrait que tu donnes un exemple chiffré ! exemple : sur la feuille "X", en B2:F20, il y a ces nombres ; ça ne va pas : je voudrais ces autres nombres.

moi, j'suis pas très calé en statistiques ➯ c'est plutôt toi qui peut trouver une solution ! je pense que je ne pourrai pas t'aider là-dessus ; mais de toutes façons, ce sujet fait déjà 2 pages ; il faudrait vraiment que tu crées un autre sujet !

soan
bonjour
comme tu a compris
peut-être : GenerateUniqueRandom ActiveSheet
chaque profs surveille des salles pendant cinq jour ,donc le total combien de salle a surveiller en appel nombre de sciences
 

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof