InputBox ramenant à une cellule correspondante

Bonjour à tous,

Je suis nouveau et autant vous dire que malgré mes compétences en informatique, je ne suis pas bon en programmation et c'est pour ça que j'ai besoin de votre aide.

Ayant un professeur en VBA dont j'aimerai m'en passer car il ne prend pas le temps de nous expliquer, je croise les doigts pour trouver la solution en me tournant vers vous.

Je vous donne l'énoncé de mon problème :

Dans la première feuille (Résultats) vous avez une liste d’étudiants.

1) Construisez une macro VBA que demande à l’utilisateur, à travers une boîte de dialogue, le nom de l’étudiant à chercher. Cette macro doit parcourir la liste et sélectionner la cellule correspondante au nom de l’étudiant cherché.

2) La macro doit informer l’utilisateur, à travers une deuxième boîte de dialogue, si l’étudiant a été admis ou pas.

3) Si toute la liste a été traversée, et le nom n’a pas été trouvé, la macro doit afficher le message « étudiant non trouvé dans la liste », et sélectionner la première cellule vide, en dessous de la liste de noms.

Je vous ai joint le fichier, je suis toute ouïe pour les solutions à ce problème afin de pouvoir comprendre le travail.

Je vous remercie d'avance,

Cordialement,

Bonjour

une boîte de dialogue avec inputbox (voir image)

un début ci-dessous

Exemple ici, dans ce Forum boites_de_dialogue d'Excel-pratique :

Sub exemple()
    Dim resultat As String ' déclaration de la variable resultat

    resultat = InputBox("Indiquez le Nom de l'étudiant à rechercher", "Rechercher un Nom", "Nom de l'étudiant(e)") 'La variable reçoit la valeur entrée dans l'InputBox

    If resultat <> "" Then          'Si la valeur est différente de "" on affiche le résultat
    ' action pour se placer directement dans la ligne du resultat trouver feuille du classeur Résultats
    ' si recherche infructueuse ' Msgbox " Etudiant non trouvé dans la liste", 
    ' appel d'une seconde boîte de dialogue si  Admis ou Non Admis
    ' se positionner dans la colonne nom en dessous de la liste des noms de la feuille Résultats SI  recherche infructueuse

    End If
End Sub
ztest1

Bonjour,

Je doute fort que tu trouves beaucoup de contributeurs qui seraient prêts à faire tes exos ...

Surtout qu'en ouvrant ton fichier ... tout le monde constatera que tu n'as pas commencé ... ni essayé ...

Bonjour,

Je comprends ce que tu veux dire mais il faut savoir que je suis resté 1h30 à essayer de comprendre, j'ai réussi à créer la boite de dialogue mais c'est après que ça bloque. J'ai regardé sur Internet comment faire mais j'ai pas réussi à trouver ou sinon si j'avais une vidéo, l'appliquer, ça ne fonctionnait pas.

Si je poste sur le forum c'est que je bloque réellement et je ne peux pas compter sur un prof non pédagogue et qui n'aide pas ses élèves.

C'est pour ça que je demande de l'aide pour qu'on me donne des solutions tout en m'expliquant en détail comment faire. Histoire que je sache ce qu'il y a de fait sur l'exercice.

D'ailleurs merci à Andre13 pour ta réponse, je vais tenter ça.

Cordialement,

Tiintin

Re,

Les ressources pour apprendre sont illimitées ... !!!

Le Forum est rempli d'exemples ...

Youtube a des tonnes de vidéos ...

https://www.youtube.com/watch?v=4C_Z427PgG0

Re,

un autre bout de piste

  • il faut déclarer la ou les variables indispensable pour le bon fonctionnement Cellule qui est Range et Art qui est un string
  • InputBox qui est la boîte de dialogue, dans celle-ci on recherche un nom de notre feuille qui sont dans la plage A7:A300,

Find pour retrouver grâce à notre Art et le nom que l'on désire retrouver dans notre colonne s'il trouve une valeur correspondante il affiche il en retrouve une autre (même nom il re-affiche avec un message box, (d'ou faudra faire attention aux doublons de la colonne A par exemple), il affiche grâce au 6 de notre colonne de notre feuille si Admis ou pas tout en sachant que l'on part de gauche à partir de colonne 0,1, 2 3..6

Sub TrouverNOM()

Dim Cellule As Range
Dim Art As String

Art = InputBox("Indiquez le Nom de l'étudiant à rechercher", "Rechercher un Nom", "Nom de l'étudiant(e)")  'La variable reçoit la valeur entrée dans l'InputBox

With ActiveSheet.Range("A7:A300")
    Set Cellule = .Find(Art, Lookat:=xlWhole)
    If Not Cellule Is Nothing Then
        firstAddress = Cellule.Address
        Do
            MsgBox Cellule.Offset(0, 6).Value 'ici un début de bonne réponse si resultat admis on pas colonne 6 en partant de la gauche de 0,1,2... à 6
            ' code...... si Admis inputbox si la cellule contient le mot Admis aussi non rien on sort de la procédure
            Exit Sub
            Set Cellule = .FindNext(Cellule)
        Loop While Not Cellule Is Nothing And Cellule.Address <> firstAddress
    End If
End With
    MsgBox "Etudiant non trouvé dans la liste !", vbInformation ' on peut mettre le chiffre  64 qui correspond à vbinformation
    '.... il faut un code ici pour se positionner à  la fin de la colonne Nom de la feuille Résultats
End Sub

Note : pour les moyennes je suis nul en math mdr lol sry

Bonjour Tiintin,

Je te retourne ton fichier Excel modifié :

140resultats-examen.xlsm (51.11 Ko)

La macro ne s'exécute que sur la 1ère feuille "Résultats" ; il te suffit de faire Ctrl e, puis de saisir l'étudiant :

Nom et Prénom séparés par un espace ; saisie possible en minuscules ou en majuscules ; Alt F11 pour

voir le code VBA, puis revenir sur Excel ; le code VBA est bien commenté, mais tu peux me demander

plus d'infos si besoin ; un seul gros défaut : il n'y a pas d'os pour ton Miilou.

Merci de me dire si ça te convient.

Cordialement,

dhany

Bonjour,

Je dois avouer que je suis un peu déçu que la voie initiée par James n'ait pas été unanimement suivie !

Fournir des explications, OK ! Expliquer sur demande tel ou tel point de programmation non compris, d'accord ! Indiquer les erreurs ou omissions sur un travail entamé, aucun problème ! Mais faire le travail à la place de l'intéressé, cela ne présente aucun aspect didactique, ce n'est pas très déontologique (si l'on peut utiliser ce terme, sachant que nous ne sommes pas astreints à des règles explicites en la matière, mais que certaines pratiques sont tacitement respectées de façon assez générale...), et ce n'est pas rendre service à l'intéressé, qui n'aura strictement rien appris de durable, qui ne sera pas en mesure d'expliquer ce qu'il est censé avoir fait, et qui ne sera vraisemblablement pas en mesure de le refaire en repartant de zéro, encore moins d'utiliser une diversité de solutions alternatives pour répondre à la question...

Cordialement.

Re,

Exact

pour une fois que j'avais trouvé la formule

@James007 et MFerrand

Vous avez raison : normalement, ce n'est pas rendre service à un étudiant de faire son exo à sa place ;

toutefois, j'ai fait une exception car Tiintin a écrit toutes ces choses :

1) « Ayant un professeur en VBA dont j'aimerai me passer car il ne prend pas le temps de nous expliquer » :

je comprends tout à fait à quel point ça peut être décevant de tomber sur un prof rapidos qui bâcle son

travail, même si ce n'est pas forcément dû à la personnalité du prof et peut-être simplement car il a une

classe surchargée ! c'est d'autant plus déplorable quand certains élèves ont envie d'apprendre !!!

2) « Je suis toute ouïe pour les solutions à ce problème afin de pouvoir comprendre le travail. » : on voit

bien que Tiintin fait partie des élèves qui ont envie d'apprendre, justement ! et ça mérite bien qu'on

l'aide, n'est-ce pas ?

3) « Je suis resté 1 h 30 à essayer de comprendre, j'ai réussi à créer la boite de dialogue mais c'est après que

ça bloque. J'ai regardé sur Internet comment faire mais j'ai pas réussi à trouver où sinon si j'avais une vidéo,

l'appliquer, ça ne fonctionnait pas. » : je suis sûr que Tiintin a réellement essayé, et s'il est ainsi bloqué,

il a bien le droit que quelqu'un l'aide, surtout si son prof n'en prends pas le temps !

4) « Si je poste sur le forum c'est que je bloque réellement et je ne peux pas compter sur un prof non pédagogue

et qui n'aide pas ses élèves. » : c'est quand même pas la faute de Tiintin s'il est tombé sur un mauvais prof !!!

à quoi ça servirait qu'il reste bloqué 5 heures de plus s'il n'arrive pas à avancer car il a personne pour l'aider ?

5) « C'est pour ça que je demande de l'aide pour qu'on me donne des solutions tout en m'expliquant en détail

comment faire. » ; c'est bien pour ça que j'ai bien commenté mon code VBA : ce sera à la fois pédagogique

et instructif pour le demandeur ; et j'ai dit à Tiintin qu'il peut me demander plus d'infos si besoin.

6) J'ai un faible pour Tiintin et Milou ; et faire cet exo a été pour moi un bon entraînement.

Cordialement,

dhany

MFerrand a écrit :

Bonjour,

Je dois avouer que je suis un peu déçu que la voie initiée par James n'ait pas été unanimement suivie !

Fournir des explications, OK ! Expliquer sur demande tel ou tel point de programmation non compris, d'accord ! Indiquer les erreurs ou omissions sur un travail entamé, aucun problème ! Mais faire le travail à la place de l'intéressé, cela ne présente aucun aspect didactique, ce n'est pas très déontologique (si l'on peut utiliser ce terme, sachant que nous ne sommes pas astreints à des règles explicites en la matière, mais que certaines pratiques sont tacitement respectées de façon assez générale...), et ce n'est pas rendre service à l'intéressé, qui n'aura strictement rien appris de durable, qui ne sera pas en mesure d'expliquer ce qu'il est censé avoir fait, et qui ne sera vraisemblablement pas en mesure de le refaire en repartant de zéro, encore moins d'utiliser une diversité de solutions alternatives pour répondre à la question...

Cordialement.

Merci MFerrand ... !!!

Ce soutien me fait très plaisir ... car il souligne une même philosophie de l'aide ...

Coucou James, tu n'as pas lu mon message de 11 h 05 ?

Ne trouves-tu pas comme moi que Tiintin mérite qu'on l'aide ?

En résumé, je rappelle que ce n'est pas la faute du demandeur s'il est tombé sur un mauvais prof,

et c'est clair pour moi que Tiintin a essayé de résoudre lui-même son exercice ! et qu'il a vraiment

une réelle envie d'apprendre ! c'est pourquoi j'ai mis les explications utiles dans mon code VBA.

Cela dit, je n'ai absolument pas voulu te contrarier en aidant le demandeur !

Je continuerai à l'aider s'il me le demande : j'accepte de prendre sur mon temps pour aider

quelqu'un qui n'a pas eu la chance d'avoir un bon prof (mais pas trop souvent non plus).

Naturellement, vu ce qui précède, je trouve très bien qu'Andre13 aussi ait eu la gentillesse

de porter secours à Tiintin ; je ne suis donc pas le seul à faire une BA !

Et ce serait sympa de votre part à tous les deux, MFerrand et toi, d'être un peu moins stricts

sur « la philosophie de l'aide », surtout que vous êtes, comme moi, des bénévoles.

Cordialement,

dhany

Re,

Vous êtes tous brave dans ce forum

de plus, pour moi çà me faisait travailler mon petit cerveau d'oiseau

En attendant, j'ai calé à la Q5 et Q6 de la feuille Analyse résultat et sans professeur à coté de moi

Q5 :

Nombre d'étudiants ayant une note en Informatique supérieure à la moyenne dans cette matière

résultat à trouver : 177

et

Q6 :

Moyenne générale des étudiants admis

résultat à trouver : 12,10

Note : la colonne K est fausse manque la mention Bien

Bonjour André,

Perso, j'ai fait seulement ce qui était demandé dans l'énoncé initial du demandeur : les points

1) à 3) ; je n'ai même pas cherché à répondre aux questions Q5 et Q6 (ou autres).

Pour calculer une moyenne, tu as la fonction =MOYENNE() ; équivalent VBA : AVERAGE()

Laissons d'abord Tiintin essayer lui-même avant de proposer une solution.

Cordialement

@dhany @André

Le Forum est un espace de libertés ...

Votre point de vue reste votre point de vue ...

Merci James, je suis content de voir que tu ne nous en veut pas, ni à André ni à moi.

Bonsoir à tous !

Je vois qu'il y a eu une sorte de débat et je respecte les deux points de vues. Honnêtement, je préfère le point de vue de dhany.

Certes il a fait tout l'exercice et je lui en remercie énormément mais je ne vais pas prendre l'exercice comme ça et le montrer au prof sous peine de ne pas savoir comment expliquer si tant est que le prof se donne la peine de nous demander. Je veux vraiment savoir ce que cette vba veut dire.

J'ai téléchargé le fichier et j'ai regardé le code VBA et tu as fait des manipulations dont je ne suis même pas sûr d'avoir vu en cours.. par exemple le mot "dim", puis "worksheetfunction.proper"

Je vais essayer de comprendre par moi-même en cherchant sur internet.

D'ailleurs le prof demande juste le nom, ça va être un petit exercice pour moi de modifier sans tout faire planter.

J'ai également vu que vous parliez de Q5 & Q6, ne vous en préoccupez pas, c'est un fichier de cours qu'on utilise pour plusieurs types d'exercice donc bon. Veuillez m'excuser de ne pas l'avoir précisé. Il fallait juste traité les trois points énoncés..

Autant vous dire que je vais surement mieux apprendre avec vos réponses qu'avec 4 cours avec ce prof et croyez moi, toute ma classe a ce sentiment.

En tout cas, encore merci pour votre aide précieuse !

Bonjour Tiintin,

Merci d'avoir passé le sujet en résolu.

Tu a écrit :

le prof demande juste le nom

J'espère que tu es bien conscient qu'avec la recherche du nom seulement, ça ne pourra plus différencier

les élèves de la même famille (et il y en a dans ton exo) ; la recherche s'arrêtera donc sur le 1er membre

de la famille rencontré et ignorera les autres ! alors voilà pour ton prof :

je blague, hein ? j'te défends, toi et toute ta classe, d'lui balancer des tomates pourries !!!

(surtout au prix où sont les fruits et légumes, en c'moment !) ; bon, tu peux lui tirer la langue, à la rigueur,

mais j'décline toute responsabilité s'il te voit et te met une mauvaise note de comportement !


Dim sert à déclarer des variables ; par exemple, quand la compilation rencontre Dim col As Integer

ou son équivalent Dim col% VBA réserve de la place en mémoire de la taille d'un entier Integer :

2 octets (= 16 bits) ; puis VBA appelle col cet emplacement ; rappel : integer : entre -32768 et +32767.

Option Explicit (en début de module, une seule fois) fait qu'on est obligé de déclarer les variables ;

donc la compilation échouera si elle rencontre une variable qui est utilisée sans avoir été déclarée

au préalable ; c'est souvent considéré par certains comme un gros inconvénient, car ça leur semble

une énorme contrainte, mais en fait, c'est plutôt à considérer comme un énorme avantage car on

est assuré que ça détectera des erreurs dues à une variable non déclarée, ou qu'on avait déclarée

mais qui a été ensuite mal orthographiée ; ça peut détecter aussi certaines erreurs de type de

variable (même s'il y a prise en compte des règles implicites de conversions de types).


Sur une feuille de calcul : en A1 : abc def ghi ; en B1 : =NOMPROPRE(A1) ➯ Abc Def Ghi

non, ça ne change pas la couleur du texte, c'est juste pour montrer que ça met en majuscule l'initiale

de chaque mot ; NOMPROPRE() est en anglais PROPER(), c'est une fonction d'Excel non connue de

VBA, mais c'est possible en VBA de l'appeler avec Evaluate() ou Worksheetfunction, d'où cette

partie d'instruction VBA : WorksheetFunction.Proper(NP)

Tu verras aussi IIf() qui est l'équivalent VBA de la fonction SI() d'une feuille de calcul.


Bon courage et bonne chance pour la suite de tes études, même si je suis persuadé comme toi que

tu peux en apprendre plus en passant nous rendre visite sur ce forum qu'avec 4 cours de ton prof

VBA qui ne veut pas (ou ne peut pas) prendre le temps d'expliquer.

oui, bon, tu sais qu'je blague, hein ?

Cordialement,

dhany

Bonjour à tous,

Pas eu le temps de revenir plus tôt sur ce sujet, un scanner à passer...

Comme l'a dit James :

Le Forum est un espace de libertés ...

Votre point de vue reste votre point de vue ...

Je veux bien admettre la possibilité qu'un prof ne soit pas à la hauteur ou puisse être carrément incompétent en matière d'enseignement, mais cela m'ennuie quelque peu de prendre un simple déclaration univoque pour argent comptant !

La notation (James encore !) :

Surtout qu'en ouvrant ton fichier ... tout le monde constatera que tu n'as pas commencé ... ni essayé ...

me paraissait plus probante, et laissait la possibilité à l'intéressé de montrer qu'il essayait... avant de se précipiter pour offrir des réponses.

Ceci étant, l'essentiel demeure qu'au delà de différences d'évaluation de la situation, les positions s'avèrent à peu près semblables sur le fond. Souhaitons que Tiintin (et Milou ) fassent bon usage de l'apport qui leur a été fait...

Cordialement et bonne journée à tous.

Rechercher des sujets similaires à "inputbox ramenant correspondante"