Recheche V ou VBA

Bonjour,

Âpres pas mal de recherche avec les formules rechercheV ne n'ais pas reusis a faire ce que je voulais,

ce que j'aimerais c'est que en sélectionnent une date en I4 il trouve dans le tableau les personnes en congé

et que cela m'affiche en en colonne j le nom et en colonne k la compétence de ces personnes en congé.

Jais ajouter un exemple en fichier joint pour être plus clair.

merci pour votre aide.

mike

14conge.xls (16.50 Ko)

Bonsoir,

Un essai avec une formule matricielle en J4 :

=SI(LIGNES($1:1)>NB.SI(DECALER($C$2;1;EQUIV($I$4;$C$2:$H$2;0)-1;4);"c");"";INDEX(A$1:A$6;PETITE.VALEUR(SI(DECALER($C$2;1;EQUIV($I$4;$C$2:$H$2;0)-1;4)="c";(DECALER($C$2;1;EQUIV($I$4;$C$2:$H$2;0)-1;4)="c")*LIGNE($A$3:$A$6));LIGNES($1:1))))

Formule matricielle à valider par CTRL + MAJ + ENTREE

à recopier vers le bas et une fois vers le droite

@+

Bonsoir,

PAr VBA avec code à essayer

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Macro Dan pour MICHAEL58000
Dim dlgj As Integer, dlgk As Integer, i As Integer
Dim col As Byte
If Not Intersect(Target, Range("I4")) Is Nothing Then
Range("J4:J" & Range("J" & Rows.Count).End(xlUp).Row + 1).ClearContents
Range("K4:K" & Range("K" & Rows.Count).End(xlUp).Row + 1).ClearContents
col = WorksheetFunction.Match(Range("I4"), Range("C2:H2"), 0) + 2
For i = 3 To Range("A" & Rows.Count).End(xlUp).Row
    If Cells(i, col) = "c" Then
    dlgj = Range("J" & Rows.Count).End(xlUp).Row + 1
    dlgk = Range("K" & Rows.Count).End(xlUp).Row + 1
    Range("J" & dlgj) = Cells(i, 1)
    Range("K" & dlgk) = Cells(i, 2)
    End If
Next
End If
End Sub

Le code est à placer dans la feuille concernée par le tableau

Pour le placer, clique sur l'onglet, choisir "visualiser le code" et coller le code ci-avant

Le choix de la liste déroulante en I4 exécutera le code.

Amicalement

edit : Salut Thibo

Bonjour

Merci bien a toi thibo ça fonctionne nikel je n'aurais jamais trouvé sans toi.

Voici le fichier coriger pour ce que cela peut aider.

Cordialement Michael

6conge.zip (3.41 Ko)

-- 07 Juin 2011, 22:05 --

Bonjour Dan

Merci en code VBA ça fonctionne également, merci a vous pour votre aide et aussi votre rapidité

j’espère être un jour aussi fort que vous lol

Bonsoir à tous,

Autre version avec filtre élaboré

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cL%
    If Not Application.Intersect(Target, Range("i4")) Is Nothing Then
        '-- si efface i4 --
        If Target.Count > 1 Or Target = "" Then
            Range("j4:k20").ClearContents
            Exit Sub
        End If
        '-- filtre date --
        cL = WorksheetFunction.Match(Range("i4"), Rows(2), 0)
        Range("k2") = "=" & Cells(3, cL).Address(RowAbsolute:=False) & "=""c"""

        Range("a2:h" & [a65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range("k1:k2"), CopyToRange:=Range("j3:k3"), Unique:=False
        Range("k2").ClearContents
    End If
End Sub

Amicalement

Claude

Rechercher des sujets similaires à "recheche vba"