Problème de script vba

  • Initiateur de la discussion Initiateur de la discussion matrix
  • Date de début Date de début

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 !

matrix

XLDnaute Occasionnel
Bonjour,

J'ai besoins ancore de votre aide pour un script.

Dans le fichier joint, je dois transférer de la feuille "Horaire Fruits" vers la feuille "Trancheur" les personne qui sont sujet à travailler selon l'horraire. Je dit bien uniquement ceux qui travail.

Jusque là, ça va bien selon le script si:
Code:
        Sheets("Trancheur").Select
        Rows("3:1014").Select
    Selection.Delete Shift:=xlUp
    Range("A3").Select
    
    
    
Sheets("Trancheur").Select
        Dim i As Long, j As Long

        Dim cumlig As Long
        

        ' Première ligne d'affichage dans la feuille "Cumul de l'employé"

        cumlig = 3
        
        

        ' Boucle à partir de la ligne 6 dans la feuille "Base de donnée"
        For i = 6 To Sheets(ComboBox13.Text).Range("A" & Cells.Rows.Count).End(xlUp).Row

            ' Si la valeur de la colonne A correspond au nom sélectionné
            If Sheets(ComboBox13.Text).Range("E" & i).Value >= "00:00" Then
                       

                ' Copier les valeurs
                'Sheets(ComboBox13.Text).Range("A" & i & ":E" & i).Copy Destination:=Sheets("Trancheur").Range("A" & cumlig & ":B" & cumlig)
                Sheets("Trancheur").Range("A" & cumlig & ":E" & cumlig).Value = Sheets(ComboBox13.Text).Range("A" & i & ":E" & i).Value

                ' Ligne suivante pour l'affichage
                cumlig = cumlig + 1

            End If

        Next i
        
  'supprimer ligne vide
Application.ScreenUpdating = False
Dim cel As Range, PlageTest, z
z = 2
    Set PlageTest = Range("A3:A200")
    For Each cel In PlageTest
        If cel.Value = "" Then
        z = z + 1
            cel.Select
        Selection.EntireRow.Delete
        End If
    Next cel
    z = 2
    Set PlageTest = Range("A3:A200")
    For Each cel In PlageTest
        If cel.Value = "" Then
        z = z + 1
            cel.Select
        Selection.EntireRow.Delete
        End If
    Next cel


'SUPPRIMER VACANCE

W = 3
    Set PlageTest = Range("e3:e200")
    For Each cel In PlageTest
        If cel.Value = "VACANCE" Then
        W = W + 1
            cel.Select
        Selection.EntireRow.Delete
        End If
    Next cel
    
 Range("c3:D1305").Select
    Selection.ClearContents
        Range("B3").Select
        
Application.ScreenUpdating = True
UserForm1.Hide

La ou est le problème, est dans le userform, si je veux faire sortir par jour, exemple les nom des personnes qui travail le lundi, il me donnera les nom de ceux qui travail lundi.

Comment faire s.v.p.

Merci encore pour votre aide.
 

Pièces jointes

Re : Problème de script vba

Merci pour ton aide.

Il y a un petit pépin.

Il y a toujours le nom de pierre qui reviens même dans les journée non cédulé.

Et si par exemple, j'ajoute une heure à un gars le mercredi ex: 3h/8h pour Claude, il apparait avec la valeur 5h/8h.
 
Re : Problème de script vba

Re,
Il y a toujours le nom de pierre qui reviens même dans les journée non cédulé.
il n'y a pas de formule dans le tableau que tu as joins, pourtant les cellules de la ligne Pierre contiennent 0 et les autres rien, et à cause de la Mfc je ne l'ai pas vu, d'où le bug 🙄
Modifie la ligne
Code:
If .Cells(i, 1) <> "" And .Cells(i, ColJour.Column) <> [COLOR="Blue"]0[/COLOR] And .Cells(i, ColJour.Column) <> "VACANCE" Then
Et si par exemple, j'ajoute une heure à un gars le mercredi ex: 3h/8h pour Claude, il apparait avec la valeur 5h/8h.
Je ne comprends ni la question, ni le problème !
A+
kjin
 
Re : Problème de script vba

Re,
Je viens de comprendre 🙄
J'avais laissé ton code de transfert vers la feuille "Trancheur", qui s'avère être faux
Dans cette même feuille, il y a 2 colonnes suceptibles d'accueillir l'horaire, donc j'ai choisi la colonne E (modifie la ligne bleue si ce n'est pas ça
Code:
Private Sub CommandButton5_Click()
Dim i As Long, Cumlig As Long, Jour As String, ColJour As Range
Dim cel As Range, PlageTest, z

Sheets("Trancheur").Rows("3:1000").Delete
    'Première ligne d'affichage dans la feuille "Cumul de l'employé"
With Sheets(ComboBox13.Text)
    Cumlig = 3
    Jour = ComboBox14
    'Boucle à partir de la ligne 6 dans la feuille "Base de donnée"
    Set ColJour = .Range("E49:Q49").Find(Jour, LookIn:=xlValues)
    If Not ColJour Is Nothing Then
        For i = 6 To .Range("A" & Cells.Rows.Count).End(xlUp).Row
        'Si la valeur de la colonne A correspond au nom sélectionné
            If .Cells(i, 1) <> "" And .Cells(i, ColJour.Column) <> "" And .Cells(i, ColJour.Column) <> "VACANCE" Then
                'Copier les valeurs
                Sheets("Trancheur").Cells(Cumlig, 1).Value = .Cells(i, 1).Value
                Sheets("Trancheur").Cells(Cumlig, 2).Value = .Cells(i, 2).Value
                Sheets("Trancheur").[COLOR="Blue"]Cells(Cumlig, 5).[/COLOR]Value = .Cells(i, ColJour.Column).Value
            'Ligne suivante pour l'affichage
            Cumlig = Cumlig + 1
            End If
        Next i
    End If
    Sheets("Trancheur").Range("E2") = Jour
End With
Unload Me

End Sub
A+
kjin
 
- 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

Réponses
5
Affichages
917
Réponses
15
Affichages
793
Réponses
8
Affichages
399
Réponses
2
Affichages
528
Réponses
4
Affichages
757
Retour