Faire une orientation avec VBA

Bonjour

J’ai une liste englobe centaine de candidats, qui seront classés selon leurs moyennes, chaque candidat va remplir une fiche de vœux composée de 04 spécialités ou vœux A , B, C et D selon ordre souhaité (sur un ensemble de 10 spécialités), , sachant que chaque spécialité à un seuil de capacité.

Comment je peux faire ça avec VBA !!!!

NB : il y a des candidats qui ne seront pas affecté à un spécialité (Manque de places)

Il y a aussi des candidats ont rempli moins de 04 vœux

75orientation.xlsx (20.96 Ko)

Bonjour

Dans la feuille Capacité de spécialité en colonne D tu mets en D2 "Nombre maximum d'éleves dans la spécialité"

Donc en D3 23 en D4 23 ...

Puis voici la macro

Sub toto()
Dim choix(1 To 4) As Variant
With Sheets("Base")
    For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row
        moyenne = .Range("C" & i)
        For j = 1 To 4
            If .Cells(i, j + 3) <> "" Then
            's'il a la moyenne pour son choix
                If Application.VLookup(.Cells(i, j + 3), Sheets("Capacite de specialité").Range("B3:D12"), 2, False) < moyenne Then
                'choppe la colonne correspondant au choix pour aller verifier si le nb max est atteint
                    colonne = Asc(.Cells(i, j + 3)) - 64
                    If Sheets("Resultat").Cells(Sheets("Resultat").Rows.Count, colonne).End(xlUp).Row < Application.VLookup(.Cells(i, j + 3), Sheets("Capacite de specialité").Range("B3:D12"), 3, False) + 1 Then
                        Sheets("Resultat").Cells(Sheets("Resultat").Cells(Sheets("Resultat").Rows.Count, colonne).End(xlUp).Row + 1, colonne) = Sheets("Base").Range("B" & i)
                        Exit For
                    End If
                End If
            End If
        Next j

    Next i
End With
End Sub

Bonjour

Dans la feuille Capacité de spécialité en colonne D tu mets en D2 "Nombre maximum d'éleves dans la spécialité"

Donc en D3 23 en D4 23 ...

Puis voici la macro

Sub toto()
Dim choix(1 To 4) As Variant
With Sheets("Base")
    For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row
        moyenne = .Range("C" & i)
        For j = 1 To 4
            If .Cells(i, j + 3) <> "" Then
            's'il a la moyenne pour son choix
                If Application.VLookup(.Cells(i, j + 3), Sheets("Capacite de specialité").Range("B3:D12"), 2, False) < moyenne Then
                'choppe la colonne correspondant au choix pour aller verifier si le nb max est atteint
                    colonne = Asc(.Cells(i, j + 3)) - 64
                    If Sheets("Resultat").Cells(Sheets("Resultat").Rows.Count, colonne).End(xlUp).Row < Application.VLookup(.Cells(i, j + 3), Sheets("Capacite de specialité").Range("B3:D12"), 3, False) + 1 Then
                        Sheets("Resultat").Cells(Sheets("Resultat").Cells(Sheets("Resultat").Rows.Count, colonne).End(xlUp).Row + 1, colonne) = Sheets("Base").Range("B" & i)
                        Exit For
                    End If
                End If
            End If
        Next j

    Next i
End With
End Sub

Bonjour

désolé je suis nocive en VBA, si c'est possible de vous insérer le code.

Merci

Le bouton est dans la feuille capacités

Bonjour,

Merci pour votre aide , j'ai trois questionnements :

  • Que signifie le numéro 5 dans la deuxième feuille (c3 -c12)!!!
  • Est ce que je peux changer les noms de spécialiste dans les feuilles 1 et 2
  • Est-il possible d'ajouter d'autre étudiants dans la feuille base !!
cordialement
  • 5 C'est la moyenne nécessaire pour y accéder à la spécialité
  • Non, j'ai utilisé le nombre ASCII pour trouver la colonne donc A B C D E F G H...
  • Oui tu peux rajouter d'autres élèves.

Re,

Mais y pas une moyenne minimale, en deuxième lieu est il possible de changer le nombre ASCII , puisque chaque spécialité son vrai nom est en 03 caractères !!!

Et elle sert à quoi ta colonne C alors ?

Tout est possible.


Ecoute file moi un fichier avec les vrais noms et on verra... je ne vais pas faire cinq fois le travail

on a 300 candidats, on prend seulement la moité, selon leurs moyennes et leurs voeux


est ce que je peux vous envoyer en pv, puisque c'est un travail ....

Voila une solution je change les noms de spécialités dans ma base selon la nomination A B C D ...

Rechercher des sujets similaires à "orientation vba"