Alimentation combobox avec noms des feuilles

LeDébutantt

XLDnaute Nouveau
Bonjour à tous,

Je dois afficher le nom de toutes mes feuilles sauf deux dans une ComboBox, pour cela j'ai déjà créé une commande qui me permet d'exclure deux feuilles en particulier et de me rentrer le nom de la feuille trouvée dans ma ComboBox.

For i = 1 To Sheets.Count
Sheets(i).Select
If Sheets(i).Name <> "data_Historique" Then
If Sheets(i).Name <> "data_Planning" Then
FTacheEX.CBxMachine.Value = Sheets(i).Name
End If
End If
Next i

Mais comment faire pour que les autres noms de feuilles s'ajoutent automatiquement a la suite dans la ComboBox ?
 

Pièces jointes

  • Maintenance machine_V01.xlsm
    50.5 KB · Affichages: 7

vgendron

XLDnaute Barbatruc
Hello

je présume que tu souhaites remplir le comboox "CBxMachine" du formulaire FTacheEx ?

VB:
Private Sub UserForm_Initialize()
Dim ws As Worksheet

For Each ws In ActiveWorkbook.Sheets 'pour chaque feuille du classeur
    If ws.Name <> "data_Historique" And ws.Name <> "data_Planning" Then 'si le nom n'est pas data_Historique NI data_Planning alors
        Me.CBxMachine.AddItem ws.Name 'on ajoute le nom de la feuille dans le combobox ==> Me fait référence au formulaire en cours
    End If
Next ws
    
End Sub
 

vgendron

XLDnaute Barbatruc
Je me suis aussi permis de modifier le code dans ton formulaire fTache pour que tu vois qu'il n'est pas necessaire voire préférable de ne pas activer ou selectionner la feuille sur laquelle tu veux travailler

VB:
Private Sub CBValider_Click()
    
With Sheets("data_Historique")
    .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0) = FTache.LDateJour
    .Range("A" & .Rows.Count).End(xlUp).Offset(0, 1) = FTache.LMachine
    .Range("A" & .Rows.Count).End(xlUp).Offset(0, 2) = FTache.LTache
    .Range("A" & .Rows.Count).End(xlUp).Offset(0, 3) = FTache.TBObs
    .Range("A" & .Rows.Count).End(xlUp).Offset(0, 4) = Format(FTache.TBTInter.Value, "hh:mm:ss")
End With
       
With Sheets("data_Planning")
    Set trouve = .Range("A:A").Find(CDate(FTache.LDatePrev))
    If Not trouve Is Nothing Then
        If trouve.Offset(0, 1).Value = FTache.LMachine Then
            If trouve.Offset(0, 2).Value = FTache.LTache Then
                trouve.EntireRow.Delete
            End If
        End If
    End If
End With
           
End Sub
 

vgendron

XLDnaute Barbatruc
et quelques autres corrections en PJ
1) j'ai "simplifié" le code
2) pour mettre une valeur dans un textbox, ou autre, il ne faut pas utiliser caption, mais .value, ou simplement le nom du controle



et bonne année !
 

Pièces jointes

  • Copie de Maintenance machine_V01.xlsm
    60.4 KB · Affichages: 22

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 105
dernier inscrit
Joffrette