Pbm remplissage feuille excel via userform

Résolu
JustineK -  
 JustineK -
Bonjour,

Voici ma macro sur VBA (Excel 2010)

Sub AjoutMEP()
                
'Ajout de la mise en production dans la feuille Suivi des MEP
               
        NewActiviteMEP = ""
        NewDomainAct = ""
        NewNomNatureMEP = ""
        
        
        AjouterMEP.ActiviteNewMEPComboBox.Clear
        AjouterMEP.AjoutNatureMEP.Value = ""
            
        Dim i As Integer
'Remplir la combobox Activité dans la macro des MEP
         i = 0
    While Not Worksheets("Activités").Cells(6 + i, 1).Value = ""
        AjouterMEP.ActiviteNewMEPComboBox.AddItem Worksheets("Activités").Cells(6 + i, 1).Value
        i = i + 1
    Wend
    
     
    AjouterMEP.Show
    
      'Ajout de l'activité dans la feuille Suivi des MEP
          Ligne = 16
    
    While Sheets("Suivi des MEP").Range("A" & Ligne).Value <> ""
        Ligne = Ligne + 1
    Wend
        
    Sheets("Suivi des MEP").Range("A" & Ligne).Value = NewActiviteMEP
    Sheets("Suivi des MEP").Range("B" & Ligne).Value = NewDomainAct
    Sheets("Suivi des MEP").Range("C" & Ligne).Value = NewNomNatureMEP
            
    With Sheets("Suivi des MEP").Range("A" & Ligne & ":" & "C" & Ligne)
        .Cells.HorizontalAlignment = xlLeft
        .Cells.Borders(xlDiagonalDown).LineStyle = xlNone
        .Cells.Borders(xlDiagonalUp).LineStyle = xlNone
        .Cells.Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Cells.Borders(xlEdgeTop).LineStyle = xlContinuous
        .Cells.Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Cells.Borders(xlEdgeRight).LineStyle = xlContinuous
        .Cells.Borders(xlInsideVertical).LineStyle = xlContinuous
        .Cells.Borders(xlInsideHorizontal).LineStyle = xlContinuous
        .Cells.Font.Name = "Arial"
        .Cells.Font.Size = 10
    End With
     
    End Sub


Mon problème est que, lorsque que j'exécute la macro (je sélectionne une valeur dans la combobox de ma userform "ActiviteNewMEPComboBox" puis j'entre une nature de MEP), mais en cliquant sur OK seule la nature de MEP s'ajoute à la suite de la liste existante...
Je n'arrive à voir d'où vient le problème...

J'espère avoir été claire ...

Je vous remercie par avance de votre aide :-)

Bon après-midi !

3 réponses

  1. pilas31 Messages postés 1878 Statut Contributeur 648
     
    Bonjour,

    Le problème ne semble pas être dans cette macro.

    Ces 3 variables sont elles globales ?
    NewActiviteMEP , NewDomainAct , NewNomNatureMEP

    Ou sont-elles initialisées ?
    Je suppose dans la validation au moment de la fermenture de l'UserForm mais nous ne pouvons pas le voir

    A+
    0
  2. pilas31 Messages postés 1878 Statut Contributeur 648
     
    Re bonjour,

    Je viens de voir sur une autre discussion cette macro de validation :

    Private Sub AjoutMEP_Click() 
    
    If (ajouterMEP.ActiviteNewMEPComboBox.Value <> "") And (ajouterMEP.AjoutNatureMEP.Value <> "") Then 
    ajouterMEP.ActiviteNewMEPComboBox.Value = NewActiviteMEP 
            Ligne = 3 '-- première ligne de la liste des activités 
            While Sheets("Activités").Range("A" & Ligne).Value <> ajouterMEP.ActiviteNewMEPComboBox.Value 
                Ligne = Ligne + 1 
            Wend 
            NewActiviteMEP = ajouterMEP.ActiviteNewMEPComboBox.Value 
            NewDomainAct = Sheets("Activités").Range("C" & Ligne).Value 
            NewNomNatureMEP = ajouterMEP.AjoutNatureMEP.Value 
                          
            ajouterMEP.Hide 
        Else 
            reponse = MsgBox("Veuillez renseigner une activité.", vbOKOnly, "Valeur manquante") 
        End If 
    End Sub 
    


    Si c'est bien celle la qui initialise la variable NewActiviteMEP alors il y a une ligne de cette macro qui est inutile et contradictoire c'est celle là :

    ajouterMEP.ActiviteNewMEPComboBox.Value = NewActiviteMEP

    Je pense qu'il faut la supprimer car elle remet la combo à ""

    A tester
    Cordialement,
    0
  3. JustineK
     
    Bonjour,

    Merci pour vos réponses.

    J'ai tenté d'enlever la ligne : AjouterMEP.ActiviteNewMEPComboBox.Value = NewActiviteMEP dans le code de la UserForm et cela fonctionne ! :-)

    Merci !
    0