Pbm remplissage feuille excel via userform

[Résolu/Fermé]
Signaler
-
 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

Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
619
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+
Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
619
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,
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 !