[RESOLU] Récupérer noms dans plusieurs feuilles et cellules

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

maninwhite

XLDnaute Occasionnel
Bonjour à toutes et à tous

J'ai un classeur dans lequelle j'ai plusieurs feuilles (chacune correspondante à un service)
Dans chaque feuille, j'ai en colonnnes le nom des personnes , en lignes le numéro de semaine et l'intersection des 2 est complétée par une crois si la tache est réalisée ou non.

J'ai une macro qui me permet de déterminer qui a accompli ou non la tache mais celle ci me donne les noms par service et j'aimerai la même chose pour toute l'usine, donc un cummulé des vlauers des services.

Code:
Option Explicit

Private Sub ComboBox_Services_Change()
    Dim I As Integer, DerCol As Integer
    If ComboBox_Semaines = "" Then Exit Sub
    ListBox_Noms.Clear
    With Sheets(ComboBox_Services.Text)
        DerCol = .Range("IV1").End(xlToLeft).Column
        For I = 3 To DerCol
            If .Cells(ComboBox_Semaines + 1, I) = "" Then ListBox_Noms.AddItem .Cells(1, I)
        Next I
    End With
End Sub

Private Sub UserForm_Initialize()
    Dim I As Integer, Feuille As Worksheet
    For I = 1 To 52
        ComboBox_Semaines.AddItem I
    Next I
    For Each Feuille In ThisWorkbook.Worksheets
        If Feuille.Name <> "base" And Feuille.Name <> "Sheet1" And Feuille.Name <> "BOS_Administration" And Feuille.Name <> "BOS_Chantier" And Feuille.Name <> "BOS_Conditionnement" And Feuille.Name <> "BOS_Magasin" And Feuille.Name <> "BOS_Fabrication" And Feuille.Name <> "BOS_Autres" And Feuille.Name <> "Stats" And Feuille.Name <> "Mailinglist" And Feuille.Name <> "Usine" Then
            ComboBox_Services.AddItem Feuille.Name
        End If
    Next
End Sub

Merci beaucoup
 
Dernière édition:
Re : Récupérer noms dans plusieurs feuilles et cellules

Les feuilles que j'exclu sont justes.

J'utilise uniquement les feuilles

Administration
Logistique
Making
Packing Hall 1&2
Packing hall 3
Qualité
Utilities_facilities_technique

Les autres ne me servent à rien pour ce que je veux faire.

De plus, si les mauvaises étaient exclus, les noms ne s'fficheraient même pas quand je choisis un service dans ma combobox, alors que là ça marche.

C'est juste quand je choisi Usine que cela ne marche pas...

Usine est rajouté avec ADDItem contrairement aux autres
Usine n'a pas d'onglet propre à lui.

Usine doit correspondre aux noms des feuilles citées ci dessus.

Merci
 
Re : Récupérer noms dans plusieurs feuilles et cellules

Re 🙂,
Pardon, je n'ai pas pris la bonne partie du code 😱. Celle qui est concernée est celle-ci
Code:
    For Each Feuille In ThisWorkbook.Worksheets
  If Feuille.Name <> "base" And Feuille.Name <> "Sheet1" And Feuille.Name <> "BOS_Administration" And Feuille.Name <> "BOS_Chantier" And Feuille.Name <> "BOS_Conditionnement" And Feuille.Name <> "BOS_Magasin" And Feuille.Name <> "BOS_Fabrication" And Feuille.Name <> "BOS_Autres" And Feuille.Name <> "Comportements_ok" And Feuille.Name <> "Comportements_nok" And Feuille.Name <> "Mailinglist" And Feuille.Name <> "Usine" Then
            With Feuille
                DerCol = [COLOR=red][B].Range("IV1").End(xlToLeft).Column[/B][/COLOR]
                For I = [COLOR=blue][B]3 To DerCol[/B][/COLOR]
                    If [COLOR=seagreen][B].Cells(ComboBox_Semaines + 1, I) = ""[/B][/COLOR] Then ListBox_Noms.AddItem [COLOR=red][B].Cells(1, I)[/B][/COLOR]
                Next I
            End With
        End If
    Next
End If
Donc la question est : est-ce que la structure de tes feuilles est bien celle présente au début ?
Détermine la dernière colonne en fonction de la ligne 1. Si tes noms sont en 2, tout faux.
Balaye les colonnes 3 à la dernière calculée avant.
Est basé sur le fait que la semaine 1 était en ligne 2, soit N° semaine + 1.
="" vérifie les présents.
Récupère donc les noms en ligne 1.
Si tout est juste, recharge ton fichier, mais plutôt sur cijoint... Je ferai quelques tests 😉.
Bon courage 😎
 
Re : Récupérer noms dans plusieurs feuilles et cellules

J'ai vérifié tout ce que tu as écrit et tout correspond.

Malheureusement je n'ai pas 'd'autre choix que de t'envoyer mon fichier par Megaupload ou autre car il fait 565 KB donc excelle la limite désolé.

Le mot de passe pour les protections classeur/feuille/macro est cageot

Merci

Ce lien n'existe plus
 
Re : Récupérer noms dans plusieurs feuilles et cellules

Re 🙂,
C'était vraiment bête 😀...
Code:
Private Sub ComboBox_Services_Change()
Dim I As Integer, DerCol As Integer, Feuille As Worksheet
If ComboBox_Semaines = "" Then Exit Sub
If ComboBox_[COLOR=red][B]Services[/B][/COLOR] <> "Usine" Then
    ListBox_Noms.Clear
    With Sheets(ComboBox_Services.Text)
        DerCol = .Range("IV1").End(xlToLeft).Column
        For I = 3 To DerCol[COLOR=red][B] - 3
[/B][/COLOR]            If .Cells(ComboBox_Semaines + 1, I) = "" Then ListBox_Noms.AddItem .Cells(1, I)
        Next I
    End With
Else
    For Each Feuille In ThisWorkbook.Worksheets
  If Feuille.Name <> "base" And Feuille.Name <> "Sheet1" And Feuille.Name <> "BOS_Administration" And Feuille.Name <> "BOS_Chantier" And Feuille.Name <> "BOS_Conditionnement" And Feuille.Name <> "BOS_Magasin" And Feuille.Name <> "BOS_Fabrication" And Feuille.Name <> "BOS_Autres" And Feuille.Name <> "Comportements_ok" And Feuille.Name <> "Comportements_nok" And Feuille.Name <> "Mailinglist" And Feuille.Name <> "Usine" Then
            With Feuille
                DerCol = .Range("IV1").End(xlToLeft).Column
                For I = 3 To DerCol[COLOR=red][B] - 3
[/B][/COLOR]                    If .Cells(ComboBox_Semaines + 1, I) = "" Then ListBox_Noms.AddItem .Cells(1, I)
                Next I
            End With
        End If
    Next
End If
End Sub
J'en ai profité pour mettre -3, car sinon, tu avais plein de lignes vides à la fin 😛...
Allez, respire 😱...
 
Re : [RESOLU] Récupérer noms dans plusieurs feuilles et cellules

Suite à un léger bug découvert, je partage la modification apportée à la macro.

En effet si je sélectionnais un service autre que "Usine", tout fonctionnait, mais lorsque je sélectionnais un service autre que "Usine" puis "Usine", les noms apparentés à "Usine" s'ajoutaient en plus des noms apparentés à un autre service.

J'ai juste rajouté

Code:
    Dim I As Integer, DerCol As Integer, Feuille As Worksheet
    If ComboBox_Semaines = "" Then Exit Sub
    If ComboBox_Services <> "Usine" Then
        ListBox_Noms.Clear
        With Sheets(ComboBox_Services.Text)
            DerCol = .Range("IV1").End(xlToLeft).Column
            For I = 3 To DerCol - 3
                If .Cells(ComboBox_Semaines + 1, I) = "" Then ListBox_Noms.AddItem .Cells(1, I)
            Next I
        End With
    Else
[COLOR="Red"]        ListBox_Noms.Clear[/COLOR]
        For Each Feuille In ThisWorkbook.Worksheets
            If Feuille.Name <> "base" And Feuille.Name <> "Feedback" And Feuille.Name <> "BOS_Administration" And Feuille.Name <> "BOS_Chantier" And Feuille.Name <> "BOS_Conditionnement" And Feuille.Name <> "BOS_Magasin" And Feuille.Name <> "BOS_Fabrication" And Feuille.Name <> "BOS_Autres" And Feuille.Name <> "Stats" And Feuille.Name <> "Mailinglist" And Feuille.Name <> "Usine" And Feuille.Name <> "Comportements_ok" And Feuille.Name <> "Comportements_nok" Then
                With Feuille
                    DerCol = .Range("IV1").End(xlToLeft).Column
                    For I = 3 To DerCol - 3
                        If .Cells(ComboBox_Semaines + 1, I) = "" Then ListBox_Noms.AddItem .Cells(1, I)
                    Next I
                End With
            End If
        Next
    End If
End Sub

Merci
 
Re : [RESOLU] Récupérer noms dans plusieurs feuilles et cellules

Re 🙂,
Plus logiquement, il faut le mettre avant le test, ça évite de le répéter 2 fois 🙄...
Code:
    Dim I As Integer, DerCol As Integer, Feuille As Worksheet
    If ComboBox_Semaines = "" Then Exit Sub
[COLOR=red]ListBox_Noms.Clear[/COLOR]
    If ComboBox_Services <> "Usine" Then
        With Sheets(ComboBox_Services.Text)
            DerCol = .Range("IV1").End(xlToLeft).Column
            For I = 3 To DerCol - 3
                If .Cells(ComboBox_Semaines + 1, I) = "" Then ListBox_Noms.AddItem .Cells(1, I)
            Next I
        End With
    Else
        For Each Feuille In ThisWorkbook.Worksheets
            If Feuille.Name <> "base" And Feuille.Name <> "Feedback" And Feuille.Name <> "BOS_Administration" And Feuille.Name <> "BOS_Chantier" And Feuille.Name <> "BOS_Conditionnement" And Feuille.Name <> "BOS_Magasin" And Feuille.Name <> "BOS_Fabrication" And Feuille.Name <> "BOS_Autres" And Feuille.Name <> "Stats" And Feuille.Name <> "Mailinglist" And Feuille.Name <> "Usine" And Feuille.Name <> "Comportements_ok" And Feuille.Name <> "Comportements_nok" Then
                With Feuille
                    DerCol = .Range("IV1").End(xlToLeft).Column
                    For I = 3 To DerCol - 3
                        If .Cells(ComboBox_Semaines + 1, I) = "" Then ListBox_Noms.AddItem .Cells(1, I)
                    Next I
                End With
            End If
        Next
    End If
End Sub
Bye 😎
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

A
Réponses
3
Affichages
2 K
Alex6942
A
A
Réponses
1
Affichages
1 K
C
Réponses
1
Affichages
1 K
Cattleya97
C
K
Réponses
8
Affichages
2 K
kamal.elkakiri
K
K
Réponses
1
Affichages
784
KnewIT
K
C
Réponses
6
Affichages
1 K
CrepeAuSmegma
C
D
Réponses
0
Affichages
1 K
D
C
Réponses
6
Affichages
6 K
P
Réponses
4
Affichages
1 K
pascals
P
Retour