IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Liste déroulante VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut Liste déroulante VBA
    Bonsoir,
    j'aurai voulu savoir comment on peut mettre par exemple le nom des éléves d'une classe dans une liste déroulante sachant que ces noms se trouvent sur un classeur excel!
    merci beaucoup

  2. #2
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Slt,
    voici un petit tuto tiré de la FAQ du site qui t'aideras certainement:
    http://excel.developpez.com/faq/?pag...TriSansDoublon

    Ta liste déroulante (c'est un controle Combobox) tu veux la mettre directement sur la feuille de calcul ou dans un userform.

    Les noms des élèves ce trouvent dans une colonne ou sur une ligne? Laquelle ?

    Avec un peu + d'éléments ou pourras t'aider plus.

    Merci A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Bonjour rvtoulon,

    Ma liste déroulante se trouve dans un formulaire.
    Les noms des éléves se trouvent en colonne sur la feuille 1 à partir de la seconde ligne.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Private Sub MODIFIER_Click()
        Unload Me
        With Modif_eleves
    '*********************************************
         'INITIALISATION DU MENU DEROULANT
    '********************************************
        .Nom_Eleves
            For i = 0 To 18
            .Nom_Eleves.AddItem Feuil1.Cells(2 + i, 1)
                    Next i
     
            'Use drop-down list
            .Nom_Eleves.Style = fmStyleDropDownList
            'Combo box values are ListIndex values
            .Nom_Eleves.BoundColumn = 0
            'Set combo box to first entry
            .Nom_Eleves.ListIndex = 0
    End With
        'Afficher le formulaire
        Modif_eleves.Show
    End Sub
    Merci beaucoup

  4. #4
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Slt,
    alors pour l'exemple :
    - mon formulaire = userform1,
    - ma liste déroulante = combobox1
    - La liste de donnée se trouve en Feuil1, colonne A, à partir de la deuxième ligne.

    dans userform initialize :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub UserForm_Initialize()
    ' je boucle sur toute les lignes pleines à partir de la 2eme ligne de
    ' la colonne A
    For i = 2 To ActiveSheet.Range("A2").End(xlDown).Row
    'je remplie la combobox
    ComboBox1.AddItem (Range("A" & i).Value)
    Next i
    End Sub
    Adapte le code en fonction de tes besoins.
    A+

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Je suis arrivée à faire une liste déroulante!!

    Mon problème c'est que j'aimerai que la liste s'arrête au moment où il n'y a plus de noms sachant qu'on peut ajouter ou supprimer des noms des éléves!!!

    En faite j'ai trois classes de terminales : la ts1 - la ts2 - la ts3. Pour ces trois terminales il ya les noms des éléves sur la feuille 1.
    dans la colonne A = il y a les noms de la TS1
    dans la colonne B = il y a les noms de la TS2
    dans la colonne c = il y a les noms de la TS3
    Il y a une liste déroulante pour sélectionner la terminale et après il y a la liste déroulante des noms des éléves sur le même formulaire. J'aimerai pouvoir sélectionner une terminale et avoir le nom des éléves de cette classe dans l'autre liste déroulante.

    De plus je vais devoir après changer le nom de cet éléve qui devra être modifié sur excel.

    Je vous ai mis ci-joint le formulaire pour que vous puissiez visualiser.

    Voici mon algo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    [Private Sub MODIFIER_Click()
        Unload Me
      With MODIF_ELEVES
    '********************************************
         'INITIALISATION DU MENU DEROULANT
    '********************************************
        .classe_CONCERNEE.AddItem "TS1"
        .classe_CONCERNEE.AddItem "TS2"
        .classe_CONCERNEE.AddItem "TS3"
    '*********************************************
         'INITIALISATION DU MENU DEROULANT
    '********************************************
            For i = 0 To 19
            .Nom_Eleves.AddItem Feuil1.Cells(2 + i, 1)
            Next i
     
            'Combo box values are ListIndex values
            .Nom_Eleves.BoundColumn = 0
            'Set combo box to first entry
            .Nom_Eleves.ListIndex = 0
    End With
        'Afficher le formulaire
        MODIF_ELEVES.Show
    End Sub]
    Merci d'avance

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    J'ai essayé mais je n'y arrive pas, voilà ce que j'ai fait :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub SUPPRESSION_MATIERE_Initialize()
    '*********************************************
         'INITIALISATION DU MENU DEROULANT
    '********************************************
          For i = 2 To ActiveSheet.Range("A2").End(xlDown).Row
          SUPPRESSION_MATIERES.AddItem (Range("A" & i).Value)
          Next i
    End Sub
    SUPPRESSION_MATIERE = formulaire concerné
    SUPPRESSION_MATIERES = nom de la liste déroulante
    Ls matières se trouvent sur la feuille 2
    Elles commencent sur la ligne 2 colone A
    Par contre je le mets où cet algo???

  7. #7
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Userform_Initialize()
    '*********************************************
    'INITIALISATION DU MENU DEROULANT
    '********************************************
    For i = 2 To ActiveSheet.Range("A2").End(xlDown).Row
    SUPPRESSION_MATIERES.AddItem (Range("A" & i).Value)
    Next i
    End Sub
    à mettre de la fenêtre code de ton usf!
    pas besoin de mettre son nom: Private Sub Userform_Initialize()

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Je suis désolée mais je suis débutante je ne sais pas exactement quel mot correspond à quoi!! j'ai fais ça et bien sûr ça bloque!!! Pouvez vous me dire où j'ai faux car je comprends plus rien!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub MODIFIER_Click()
        Unload Me
        With MODIF_MATIERES
    '*********************************************
         'INITIALISATION DU MENU DEROULANT
    '********************************************
            For i = 0 To ActiveSheet.MATIERE_A_MODIFIE.AddItem Feuil2.Cells(2 + i, 1)End(xlDown).Row
            Next i
     
            'Combo box values are ListIndex values
            .MATIERE_A_MODIFIE.BoundColumn = 0
            'Set combo box to first entry
            .MATIERE_A_MODIFIE.ListIndex = 0
    End With
        'Afficher le formulaire
        MODIF_MATIERES.Show
    End Sub

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    J'ai essayé un nouveau algo ms ca fonctionne pas non plus !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Private Sub MODIFIER_Click()
        Unload Me
        With MODIF_MATIERES
    '*********************************************
         'INITIALISATION DU MENU DEROULANT
    '********************************************
            For i = 2 To ActiveSheet.Range("A1").End(xlDown).Row
            MATIERE_A_MODIFIE.AddItem (Feuil2(2 + i, 1).Value)
            Next i
     
            'Combo box values are ListIndex values
            .MATIERE_A_MODIFIE.BoundColumn = 0
            'Set combo box to first entry
            .MATIERE_A_MODIFIE.ListIndex = 0
    End With
        'Afficher le formulaire
        MODIF_MATIERES.Show
    End Sub

  10. #10
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Slt,
    pourrais-tu mettre ton fichier en pièce jointe stp, en, enlevant ce qui est confidentiel pour qu'on puisse voir ce que tu souhaites.
    Merci.


    edit: si joint un exemple de liste déroulante.
    Fichiers attachés Fichiers attachés

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    C'est un devoir que je dois rendre, les noms de correspondent a personne

    En même temps je vous met l'énoncé pour que ça soit plus claire!! merci beaucoup de prendre du temps pour m'aider!!

    Par contre au niveu des feuilles excel, j'ai oublié de rajouter deux autres classeurs pour bien différencier le notes de la TS1 - TS2 - TS3

    La je reste un peu bête je copie exactement ce que vous avez marqué, j'ai ma liste déroulante vierge alors que pour vous ça fonctionne très bien!! (J'ai changé le nom des combox avec les bons :-) )

    RV help me please!!! je bloque sur ces algos!!!

  12. #12
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    re,
    voici le code corriger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    '*********************************************************************************************
    Private Sub MODIFIER_Click()
        Unload Me
        With MODIF_MATIERES
    '*********************************************
         'INITIALISATION DU MENU DEROULANT
    '********************************************
    'Je boucle a partir de la cellule A2 jusque la dernière ligne pleine de la colonne A  de la feuille "Matières"       
    For i = 2 To Sheets("Matières").Range("A1").End(xlDown).Row
    'J'ajoute à la combobox les matières        
    .MATIERE_A_MODIFIE.AddItem (Sheets("Matières").Range("A" & i).Value)
            Next i
     
            'Combo box values are ListIndex values
            .MATIERE_A_MODIFIE.BoundColumn = 0
            'Set combo box to first entry
            .MATIERE_A_MODIFIE.ListIndex = 0
    End With
        'Afficher le formulaire
        MODIF_MATIERES.Show
    End Sub

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Désolé RV je vais te demander un petit service si tu veux bien.
    Mon devoir je dois le rendre vendredi et j'ai un pb au niveau des boutons valider pourrais tu me donner un exemple d'algo pour :
    - un ajout
    - une modification
    - une suppression
    Si j'aurais plus de temps j'aurai essayé de le trouver par moi-même ms la je ne pourrais....
    Merci beaucoup pour la liste déroulante!!!

  14. #14
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bien que je sois ici pour t'aider et non pas pour faire l'exercice à ta place, voici ce que tu pourrais faire pour les boutons valider:
    avec l'userform AJOUT_MATIERE:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub VALIDER_Click()
    Dim vnom As String, c As Range
    vnom = Me.AJOUT_MATIERE.Value
    'Je recherche la matière dans la colonne A
    Set c = Columns("A:A").Find(What:=vnom)
    'Si la matière n'existe pas alors on l'insère à la suite des autres
    If c Is Nothing Then
     derlign = Sheets("Matières").Range("A1").End(xlDown).Row + 1
     Range("A" & derlign).Value = vnom
     
    'Si la matière existe on envois un message
    Else
    MsgBox "Cette Matière existe dèjà !"
    End If
    End Sub
    Voici maintenant ce que tu pourrais mettre avec l'userform MODIF_MATIERES:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub VALIDER_Click()
    Dim vnom As String, c As Range, lign As Long
    vnom = MODIF_MATIERES.MATIERE_A_MODIFIE.Text
    'Je recherche dans la colonne A la matière à modifier
    Set c = Sheets("Matières").Columns("A:A").Find(What:=vnom)
    'Si la matière existe alors on remplace le nom
    If Not c Is Nothing Then
    c.Value = Me.NOUVEAU_NOM_MATIERE.Value
    End If
    End Sub
    Enfin avec l'userform SUPPRESSION_MATIERE:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub VALIDER_Click()
    Dim vnom As String, c As Range
    vnom = Me.SUPPRESSION_MATIERES.Text
    Set c = Sheets("Matières").Columns("A:A").Find(What:=vnom)
    'Si la matière existe alors on supprime la ligne entière
    If Not c Is Nothing Then
    c.EntireRow.Delete
    End If
    End Sub
    Ceci est l'une des méthodes dont tu peux te servir. Essaye de l'appliquer as tes autres userforms. Bon courage pour le reste. Si tu as des questions n'hésite pas.

    A+

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Pour l'ajout d'un éléve j'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Private Sub VALIDER_Click()
     
    If Me.classe_CONCERNEE.ListIndex = 0 Then
    Dim vnom As String, c As Range
    vnom = Me.AJOUT.Value
    'Je recherche le nom dans la colonne A
    Set c = Columns("A:A").Find(What:=vnom)
    'Si le nom n'existe pas alors on l'insère à la suite des autres
    If c Is Nothing Then
     derlign = Sheets("Classes").Range("A1").End(xlDown).Row + 1
     Range("A" & derlign).Value = vnom
    'Si le nom de l'éléve existe on envoie un message
    Else
    MsgBox "Cet éléve existe dèjà !"
    End If
    End If
     
    If Me.classe_CONCERNEE.ListIndex = 1 Then
    Dim vnom As String, c As Range
    vnom = Me.AJOUT.Value
    'Je recherche le nom dans la colonne b
    Set c = Columns("B:B").Find(What:=vnom)
    'Si le nom n'existe pas alors on l'insère à la suite des autres
    If c Is Nothing Then
     derlign = Sheets("Classes").Range("B1").End(xlDown).Row + 1
     Range("b" & derlign).Value = vnom
     
    'Si le nom de l'éléve existe on envoie un message
    Else
    MsgBox "Cet éléve existe dèjà !"
    End If
    End If
     
    If Me.classe_CONCERNEE.ListIndex = 2 Then
    Dim vnom As String, c As Range
    vnom = Me.AJOUT.Value
    'Je recherche le nom dans la colonne b
    Set c = Columns("c:c").Find(What:=vnom)
    'Si le nom n'existe pas alors on l'insère à la suite des autres
    If c Is Nothing Then
     derlign = Sheets("Classes").Range("c1").End(xlDown).Row + 1
     Range("c" & derlign).Value = vnom
     
    'Si le nom de l'éléve existe on envoie un message
    Else
    MsgBox "Cet éléve existe dèjà !"
    End If
    End If
    End Sub
    Ca me dit que j'ai faux

  16. #16
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    slt,
    tout d'abord si tu devrais déclarer tes variables dès le début comme ci-dessous, et donc supprimer toutes les autres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Sub VALIDER_Click()
    Dim vnom As String, c As Range
    Ensuite dans le fichier que tu m'as donnée le textbox que tu appelles Me.AJOUT s'appelle Me.textbox1 (à vérifier).

    maintenant pour améliorer un peu plutot que d'avoir une série de if et end if tu peux-mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private Sub VALIDER_Click()
    Dim vnom As String, c As Range
     
    'Si ........ alors
    If Me.classe_CONCERNEE.ListIndex = 0 Then
      vnom = Me.TextBox1.Value
      'Je recherche le nom dans la colonne A
      Set c = Columns("A:A").Find(What:=vnom)
      'Si le nom n'existe pas alors on l'insère à la suite des autres
      If c Is Nothing Then
       derlign = Sheets("Classes").Range("A1").End(xlDown).Row + 1
       Range("A" & derlign).Value = vnom
      'Si le nom de l'éléve existe on envoie un message
       Else
       MsgBox "Cet éléve existe dèjà !"
       End If
     
    'Sinon si ...... alors 
    ElseIf Me.classe_CONCERNEE.ListIndex = 1 Then
        'Ton code
     
    'Sinon si ..... alors 
    ElseIf Me.classe_CONCERNEE.ListIndex = 2 Then
        'Ton Code
     
    End If
     
    End Sub
    Tu es en bonne voie. Je pense que le temps va te manquer mais on pourrait l'optimiser avec une boucle. mais ça fonctionne ne change rien.

    A+

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Quand je fais ce code, excel me souligne en jaune valider et end sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Private Sub VALIDER_Click()
    If Me.classe_CONCERNEE.ListIndex = 0 Then
        vnom = Me.AJOUT.Value
        'Je recherche le nom dans la colonne A
        Set c = Columns("A:A").Find(What:=vnom)
        'Si le nom n'existe pas alors on l'insère à la suite des autres
        If c Is Nothing Then
        derlign = Sheets("Classes").Range("A1").End(xlDown).Row + 1
        Range("A" & derlign).Value = vnom
        'Si le nom de l'éléve existe on envoie un message
        Else
        MsgBox "Cet éléve existe dèjà !"
    End If
     
    ElseIf Me.classe_CONCERNEE.ListIndex = 1 Then
        vnom = Me.AJOUT.Value
       'Je recherche le nom dans la colonne b
        Set c = Columns("B:B").Find(What:=vnom)
       'Si le nom n'existe pas alors on l'insère à la suite des autres
       If c Is Nothing Then
       derlign = Sheets("Classes").Range("B1").End(xlDown).Row + 1
       Range("B" & derlign).Value = vnom
       'Si le nom de l'éléve existe on envoie un message
       Else
       MsgBox "Cet éléve existe dèjà !"
    End If
     
    ElseIf Me.classe_CONCERNEE.ListIndex = 2 Then
       vnom = Me.AJOUT.Value
       'Je recherche le nom dans la colonne b
       Set c = Columns("c:c").Find(What:=vnom)
       'Si le nom n'existe pas alors on l'insère à la suite des autres
       If c Is Nothing Then
       derlign = Sheets("Classes").Range("c1").End(xlDown).Row + 1
       Range("C" & derlign).Value = vnom
      'Si le nom de l'éléve existe on envoie un message
       Else
       MsgBox "Cet éléve existe dèjà !"
    End If
    End Sub

  18. #18
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    il manque un end if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      Else
       MsgBox "Cet éléve existe dèjà !"
      End if 
    End If
    End Sub

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Merci ça a fonctionné!! suite des pb....
    Dans mes listes déroulantes rien n'apparaît!!!

    Voici les algos pour la modification des noms des éléves :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Private Sub ComboBox1_Change()
    Dim i As Long
     
    If Me.ComboBox1.ListIndex = 0 Then
    Me.Nom_Eleves.Clear
    For i = 2 To Range("A2").End(xlDown).Row
    Me.Nom_Eleves.AddItem (Sheets("Feuil1").Range("A" & i).Value)
    Next i
     
    ElseIf Me.ComboBox1.ListIndex = 1 Then
    Me.Nom_Eleves.Clear
    For i = 2 To Range("B2").End(xlDown).Row
    Me.Nom_Eleves.AddItem (Sheets("Feuil1").Range("B" & i).Value)
    Next i
     
    ElseIf Me.ComboBox1.ListIndex = 2 Then
    Me.Nom_Eleves.Clear
    For i = 2 To Range("C2").End(xlDown).Row
    Me.Nom_Eleves.AddItem (Sheets("Feuil1").Range("C" & i).Value)
    Next i
     
    End If
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Private Sub VALIDER_Click()
     
    If Me.classe_CONCERNEE.ListIndex = 0 Then
        vnom = Me.MODIF_ELEVES.Nom_Eleves.Text
        'Je recherche le nom dans la colonne à modifier
        Set c = Sheets("Classes").Columns("A:A").Find(What:=vnom)
        'Si le nom existe alors on remplace le nom
        If Not c Is Nothing Then
        c.Value = Me.NOUVEAU_NOM.Value
      End If
     
     If Me.classe_CONCERNEE.ListIndex = 1 Then
        vnom = Me.MODIF_ELEVES.Nom_Eleves.Text
        'Je recherche le nom dans la colonne à modifier
        Set c = Sheets("Classes").Columns("B:B").Find(What:=vnom)
        'Si le nom existe alors on remplace le nom
        If Not c Is Nothing Then
        c.Value = Me.NOUVEAU_NOM.Value
      End If
     
    If Me.classe_CONCERNEE.ListIndex = 2 Then
        vnom = Me.MODIF_ELEVES.Nom_Eleves.Text
        'Je recherche le nom dans la colonne à modifier
        Set c = Sheets("Classes").Columns("C:C").Find(What:=vnom)
        'Si le nom existe alors on remplace le nom
        If Not c Is Nothing Then
        c.Value = Me.NOUVEAU_NOM.Value
      End If
    End If
    End Sub
    Merci beaucoup de m'aider car je suis dépassée!!!

  20. #20
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    dans ton fichier avec le userform modif_eleves tu avais une listbox intitulé "classe_CONCERNEE". donc normalement ce devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub classe_CONCERNEE_Change()
     Dim i As Long
     
     With Me
            'Si la 1ere valeur de la listbox (TS1) est sélectionnée alors
            'j'ajoute au combobox la liste des élèves correspondant
            If .classe_CONCERNEE.ListIndex = 0 Then 
    'ETC....
    Maintenant si tu as changé la listbox par un combobox dont le nom est bien "Combobox1" alors ton code devrait fonctionner.

    A CONDITION que tu ai pensé à modifié aussi le code qui remplit cette combobox1 dans le code du bouton modifier de l'userform "MODIFICATION_ELEVES".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub MODIFIER_Click()
        Unload Me
      With MODIF_ELEVES
    '********************************************
         'INITIALISATION DU MENU DEROULANT
    '********************************************
        'remplacer ce qu'il y a en rouge par ComboBox1
        .classe_CONCERNEE.AddItem "TS1"
        .classe_CONCERNEE.AddItem "TS2"
        .classe_CONCERNEE.AddItem "TS3"
    '*********************************************
         'INITIALISATION DU MENU DEROULANT
    '********************************************
     End With
        'Afficher le formulaire
        MODIF_ELEVES.Show
    End Sub
    Si c'est la cas pense lorsque tu fais des changements à vérifier les codes qui sont liés.
    On verra après pour le bouton valider.

Discussions similaires

  1. liste déroulante vba
    Par arbotch dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/04/2010, 16h23
  2. Copier des cellules excel dans une liste déroulante vba
    Par Papillon34 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/01/2010, 16h03
  3. [XL-2003] Liste Déroulante VBA EXCEL 2003
    Par Alexandra 01 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/12/2009, 15h55
  4. Mettre nom table dans liste déroulante vba Excel
    Par Fred246 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/12/2009, 08h20
  5. Liste déroulante VBA
    Par GMmaurice dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/04/2008, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo