Recherche des valeurs dans une colonne

Bonjour le Forum et meilleurs vœux pour l'année 2024,https://forum.excel-pratique.com/post/nouveau/2#

Je me permets de demander votre aide pour résoudre le petit problème suivant concernant le fichier ci-joint:

- Il y a une liste des volontaires, l'onglet MEMBERS.

- Les volontaires donnent leurs disponibilités pour le mois prochain, l'onglet 01_2024 pour janvier etc. Pas forcément que tous les volontaires répondent. L'onglet Forms 01_2024

- Le planificateur décide qui sera appelé en mettant la chiffre 1 dans cet onglet, minimum 2 personnes et maximum 4 pour une équipe. L'onglet 01_2024.

- Le but est d'automatiser l'onglet 01_2024_shifts. C'est à dire pour chaque ligne de VS1 de cet onglet, retrouver tous les volontaires qui ont la chiffre 1 dans l'onglet 01_2024 en mettant dans la colonne B leur ID. Pour VS1 on 2 volontaires 1202 et 1207, pour VS2 on a 3 personnes 1203, 2102 et 2204... jusqu'à la dernière ligne de l'onglet 01_2024_shifts. une fois le remplissage est fini, masquer les lignes pour lesquelles il n'y a pas des volontaires.

Merci d'avance et bonne journée.

Baton

Bonjour Baton

Waouh cela fait longtemps que l'on ne s'est plus parlé

Essaie avec ces deux codes placés dans un module.

Sub maj_shift()
Dim volontaire As String, ID As String
Dim i As Integer, dcol As Integer, dlig As Integer
Dim c As Range
Dim prem

With Sheets("01_2024_shifts")
    .Range("B3:B" & .Range("A" & Rows.Count).End(xlUp).Row).ClearContents 'effacer les donnees colonne B
End With

With Sheets("01_2024")
    dcol = .Cells(5, Cells.Columns.Count).End(xlToLeft).Column - 2
    dlig = .Cells(Rows.Count, 1).End(xlUp).Row

    For i = 4 To dcol

        If WorksheetFunction.CountIf(.Range(.Cells(6, i), .Cells(dlig, i)), "=1") >= 1 Then
            With .Range(.Cells(6, i), .Cells(dlig, i))
                Set c = .Find(1, LookIn:=xlValues)
                If Not c Is Nothing Then
                    prem = c.Address
                    Do
                        volontaire = Sheets("01_2024").Cells(5, i)
                        ID = Sheets("01_2024").Cells(c.Row, 1)

                        Call shift(volontaire, ID)
                        Set c = .FindNext(c)
                    Loop While Not c Is Nothing And c.Address <> prem
                End If
            End With
        End If

    Next i
End With
End Sub

Sub shift(volontaire As String, ID As String)
Dim i As Byte

With Sheets("01_2024_shifts")
    For i = 3 To .Range("A" & Rows.Count).End(xlUp).Row
        If .Cells(i, 2) = vbNullString And .Cells(i, 1) = volontaire Then
            .Cells(i, 2) = ID
            Exit For
        End If
    Next i
End With
End Sub

Pour exécuter, cliquez sur la ligne Maj_shift du code maj_shift puis appuyer sur la touche F5 (ou FN +F5)

Le code fonctionne évidemment sur les feuilles du fichier posté

Passe un bon réveillon.

Cordialement

Hello Dan,

Bonne année et meilleurs vœux pour 2024.

Comme d'habitude, tes macros fonctionnent parfaitement.

Un immense merci pour ton support!!!

Cordialement,

Baton

Rechercher des sujets similaires à "recherche valeurs colonne"